diff --git a/.github/workflows/python-tests-consolidated.yaml b/.github/workflows/python-tests-consolidated.yaml index 481933b3..2578d5c1 100644 --- a/.github/workflows/python-tests-consolidated.yaml +++ b/.github/workflows/python-tests-consolidated.yaml @@ -203,3 +203,83 @@ jobs: cwd=str(path_script.parent), env=env, ) + + find-examples_nb: + name: Find all example notebooks + needs: [test-unit, test-system] + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + - name: Find example python notebooks + id: find_notebooks + run: | + echo "scripts<> $GITHUB_OUTPUT + find examples -mindepth 2 -maxdepth 2 -name "*.ipynb" | jq -R -s -c 'split("\n")[:-1]' >> $GITHUB_OUTPUT + echo "EOF" >> $GITHUB_OUTPUT + outputs: + scripts: ${{ steps.find_notebooks.outputs.scripts }} + + test-examples_nb: + name: Run all example notebooks + needs: find-examples_nb + strategy: + fail-fast: false + matrix: + python-version: [3.12] # ["3.10", "3.11", "3.12", "3.13"] + os: [macos-latest, ubuntu-latest, windows-latest] + include: + - os: ubuntu-latest + path: ~/.cache/pip + - os: macos-latest + path: ~/Library/Caches/pip + - os: windows-latest + path: ~\AppData\Local\pip\Cache + script: ${{fromJson( needs.find-examples_nb.outputs.scripts )}} + runs-on: ${{ matrix.os }} + steps: + - name: Checkout code + uses: actions/checkout@v4 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + - name: Get cache dependencies + id: cache + uses: actions/cache@v4 + with: + path: ${{ matrix.path }} + key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }} + restore-keys: + ${{ runner.os }}-pip- + - name: Install dependencies + run: | + python -m pip install --upgrade pip + - name: Install Ard + run: | + pip install .[dev] + - name: Run examples + shell: python + run: | + import os + import pathlib + import subprocess + + env = os.environ.copy() + env["MPLBACKEND"] = "Agg" # Non-interactive backend + + path_script = pathlib.Path("${{ matrix.script }}").absolute() + print(f"RUNNING {path_script}") + subprocess.run( + ["jupyter", "nbconvert", "--execute", "--to", "notebook", str(path_script.name)], + check=True, + cwd=str(path_script.parent), + env=env, + ) diff --git a/README.md b/README.md index 6e6f534d..5ef96962 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,23 @@ -[![CI/CD test suite](https://github.com/WISDEM/Ard/actions/workflows/python-tests-consolidated.yaml/badge.svg?branch=develop)](https://github.com/WISDEM/Ard/actions/workflows/python-tests-consolidated.yaml) + # Ard -**Dig into wind farm design.** +[![CI/CD test suite](https://github.com/WISDEM/Ard/actions/workflows/python-tests-consolidated.yaml/badge.svg?branch=develop)](https://github.com/WISDEM/Ard/actions/workflows/python-tests-consolidated.yaml) + +![Ard logo](assets/logomaker/logo.png) + +**Dig in to wind farm design.** [An ard is a type of simple and lightweight plow](https://en.wikipedia.org/wiki/Ard_\(plough\)), used through the single-digit centuries to prepare a farm for planting. The intent of `Ard` is to be a modular, full-stack multi-disciplinary optimization tool for wind farms. -The problem with wind farms is that they are complicated, multi-disciplinary objects. -They are aerodynamic machines, with complicated control systems, power electronic devices, social and political objects, and the core value (and cost) of complicated financial instruments. -Moreover, the design of *one* of these aspects affects all the rest! +Wind farms are complicated, multi-disciplinary systems. +They are aerodynamic machines (composed of complicated control systems, power electronic devices, etc.), social and political objects, generators of electrical power and consumers of electrical demand, and the core value generator (and cost) of complicated financial instruments. +Moreover, the design of any *one* of these aspects affects all the rest! -`Ard` seeks to make plant-level design choices that can incorporate these different aspects _and their interactions_ to make wind energy projects more successful. +`Ard` is a platform for wind farm layout optimization that seeks to enable plant-level design choices that can incorporate these different aspects _and their interactions_ to make wind energy projects more successful. +In brief, we are designing `Ard` to be: principled, modular, extensible, and effective, to allow resource-specific wind farm layout optimization with realistic, well-posed constraints, holistic and complex objectives, and natural incorporation of multiple fidelities and disciplines. ## Documentation Ard documentation is available at [https://wisdem.github.io/Ard/]() @@ -45,7 +50,6 @@ For a basic and static installation, type: ```shell pip install . ``` - For development (and really for everyone during pre-release), we recommend a full development installation: ```shell pip install -e .[dev,docs] @@ -60,59 +64,69 @@ mamba install wisdem -y pip install -e .[dev,docs] ``` -To test the installation, from the `Ard` folder run unit and regression tests: +## Testing instructions + +The installation can be tested comprehensively using `pytest` from the top-level directory. +The developers also provide some convenience scripts for testing new installations; from the `Ard` folder run unit and regression tests: ```shell source test/run_local_test_unit.sh source test/run_local_test_system.sh ``` +These enable the generation of HTML-based coverage reports by default and can be used to track "coverage", or the percentage of software lines of code that are run by the testing systems. +`Ard`'s git repository includes requirements for both the `main` and `develop` branches to have 80% coverage on unit testing and 50% testing in system testing, which are, respectively, tests of individual parts of `Ard` and "systems" composed of multiple parts. +Failures are not tolerated in code that is merged onto these branches and code found therein *should* never cause a testing failure if it has been found there. +If the process of installation and testing fails, please open a new issue [here](https://github.com/WISDEM/Ard/issues). -For user information, in pre-release, we are using some co-developed changes to the `FLORIS` library. +## Design philosophy -If the installation fails, please open a new issue [here](https://github.com/WISDEM/Ard/issues). +The design of `Ard` was inspired by two use cases in particular: +1) systems energy researchers who are focusing on one specific subdiscipline (e.g. layout strategies, social impacts, or aerodynamic modeling) but want to be able to easily keep track of how a change in one discipline impacts the entire value chain down to production, cost, value, and/or societal outcomes of energy or even optimize with respect to these, and +2) private industry researchers who run business cases and may want to drop in proprietary analysis modules for specific disciplines while preserving some of the open-source modules of `Ard`. -## OptiWindNet - -We currently have experimental support for [Mauricio Souza de Alencar's OptiWindNet package for collection system cable path-planning optimization](https://gitlab.windenergy.dtu.dk/TOPFARM/OptiWindNet). +`Ard` is being developed as a modular tool to enable these types of research queries. +The goals during the development of `Ard` are to be: +1) principled: + - robustly documented + - adhering to [best-practices for code development](https://doi.org/10.2172/2479115) +2) modular and extensible: + - choose the analysis components you want + - skip the ones you don't + - build yourself the ones we don't have +3) effective + - robustly tested and testable at both unit and system levels +These principles guide us to implement, using [`OpenMDAO`](https://openmdao.org) as a backbone, a multi-disciplinary design, analysis, and optimization (MDAO) model of the wind farm layout problem, a toolset to accomplish the capability goals of `Ard`, to: +1) allow optimization of wind farm layouts for specific wind resource profiles +2) enable the incorporation of realistic but well-posed constraints +3) target holistic and complex system-level optimization objectives like LCOE and beyond-LCOE metrics +4) naturally incorporate analyses across fidelities to efficiently integrate advanced simulation ## Current capabilities -For the alpha pre-release of `Ard`, we have concentrated on optimization of wind plants, starting from a structured layout and optimizing it to minimize the levelized cost of energy, or LCOE. -This capability is demonstrated for a land-based (LB) wind farm in `examples/LCOE_LB_stack` and tested in an abridged form in `test/system/LCOE_stack/test_LCOE_LB_stack.py`. -In this example, the wind farm layout is parametrized with two angles, named orientation and skewed, and turbine distancing for rows and columns. -In the alpha pre-release stage, the constituent subcomponents of these problems are known to work and fully tested; any capabilities not touched in the layout-to-LCOE stack should be treated as experimental. +For the beta pre-release of `Ard`, we concentrate on optimization problems for wind plants, starting from structured layouts to minimize LCOE. +This capability is demonstrated for a land-based (LB) wind farm in `examples/01_onshore` and tested in an abridged form in `test/system/ard/api/test_LCOE_LB_stack.py`. +In this example, the wind farm layout is parametrized with two angles, named orientation and skew, and turbine distancing for rows and columns. +Additionally, we have offshore examples adjacent to the onshore example in the `examples` subdirectory. +In the beta pre-release stage, the constituent subcomponents of these problems are known to work and have full testing coverage. -These cases start from a four parameter farm layout, compute landuse area, make FLORIS AEP estimates, compute turbine capital costs, balance-of-station (BOS), and operational costs using WISDEM components, and finally give summary estimates of plant finance figures. +These cases start from a four parameter farm layout, compute land use area, make FLORIS estimates of annual energy production (AEP), compute turbine capital costs, balance-of-station (BOS), and operational costs elements of NREL's turbine systems engineering tool [WISDEM](https://github.com/wisdem/wisdem), and finally give summary estimates of plant finance figures. The components that achieve this can be assembled to either run a single top-down analysis run, or run an optimization. -A second example is in progress to reoptimize the layout of two offshore wind farms, one fixed bottom (OFB) and one floating (OFL). -Both wind farms are made of the [22 MW reference wind turbine](https://github.com/IEAWindSystems/IEA-22-280-RWT). -In this example, BOS costs are estimated using the tool [ORBIT](https://github.com/WISDEM/ORBIT). - -## Roadmap to future capabilities - -The future development of `Ard` is centered around two user cases: -1) systems energy researchers who are focusing on one specific subdiscipline (e.g. layout strategies, social impacts, or aerodynamic modeling) but want to be able to easily keep track of how it impacts the entire value chain down to production, cost, and/or value of energy or even optimize with respect to it, and -2) private industry researchers who are interested in how public-sector research results change when proprietary analysis tools are dropped in and coupled the other tools in a systems-level simulation. - -`Ard` is being developed as a modular tool to enable these types of research queries. -This starts from our research goals, which are that `Ard` should be: -1) principled: fully documented, and adhering to best-practices for code development -2) modular and extensible: choose the parts you want, skip the ones you don't, build yourself the ones we don't have -3) effective: fully tested and testable at the unit and system level, and built with a derivative-forward approach +# Contributing to `Ard` -This, then, allows us to attempt to accomplish the technical goals of `Ard`, to: -1) allow optimization of wind farm layouts for specific wind resource profiles -2) target wholistic and complex system-level optimization objectives like LCOE and beyond-LCOE metrics -3) naturally incorporate multi-fidelity analyses to efficiently integrate physics-resolving simulation +We have striven towards best-practices documentation and testing for `Ard`. +Contribution is welcome, and we are happy [to field pull requests from github](https://github.com/WISDEM/Ard/pulls). +For acceptance, PRs must: +- be formatted using [`black`](https://github.com/psf/black) +- not fail any unit tests or system tests +- achieve coverage criteria for unit & system testing +- be documented enough for continued maintenance by core `Ard` developers ## Building Documentation -To build the documentation locally run the following from the top `Ard/` directory. - +To build the documentation locally, run the following from the top-level `Ard/` directory: ```shell jupyter-book build docs/ ``` - You can then open `Ard/docs/_build/html/index.html` to view the docs. --- diff --git a/ard/api/interface.py b/ard/api/interface.py index fd08acbd..2eaf35b3 100644 --- a/ard/api/interface.py +++ b/ard/api/interface.py @@ -267,6 +267,17 @@ def set_up_system_recursive( prob.add_recorder(recorder) prob.driver.add_recorder(recorder) + prob.model.set_input_defaults( + "x_turbines", + # input_dict["modeling_options"]["windIO_plant"]["wind_farm"]["layouts"]["coordinates"]["x"], + units="m", + ) + prob.model.set_input_defaults( + "y_turbines", + # input_dict["modeling_options"]["windIO_plant"]["wind_farm"]["layouts"]["coordinates"]["y"], + units="m", + ) + prob.setup() return prob diff --git a/ard/viz/layout.py b/ard/viz/layout.py index 1cb7c325..2784b6fd 100644 --- a/ard/viz/layout.py +++ b/ard/viz/layout.py @@ -55,6 +55,7 @@ def plot_layout( save_path: os.PathLike = None, save_kwargs: dict = {}, include_cable_routing: bool = False, + include_mooring_system: bool = False, ): """ plot the layout of a farm @@ -108,8 +109,8 @@ def plot_layout( # adjust plot limits x_lim, y_lim = get_limits(windIO_dict) - ax.set_xlim([x * 1e3 for x in x_lim]) - ax.set_ylim([y * 1e3 for y in y_lim]) + ax.set_xlim(x_lim) + ax.set_ylim(y_lim) if include_cable_routing: optiwindnet.plotting.gplot( @@ -122,6 +123,34 @@ def plot_layout( landscape=False, ) + if include_mooring_system: + # get the coordinates of the anchors + x_anchors = ard_prob.get_val("x_anchors", units="m") + y_anchors = ard_prob.get_val("y_anchors", units="m") + + # loop over the anchors and plot from their originating turbine to each + for idx_turbine in range( + input_dict["modeling_options"]["layout"]["N_turbines"] + ): + for idx_anchor in range( + input_dict["modeling_options"]["platform"]["N_anchors"] + ): + ax.plot( + [x_turbines[idx_turbine], x_anchors[idx_turbine, idx_anchor]], + [y_turbines[idx_turbine], y_anchors[idx_turbine, idx_anchor]], + "-r", + alpha=0.25, + ) + # plot the anchors as red circles + ax.plot( + x_anchors[idx_turbine, :], + y_anchors[idx_turbine, :], + "or", + alpha=0.25, + ) + + ax.axis("equal") + # show, save, or return if save_path is not None: plt.savefig(save_path, save_kwargs) diff --git a/assets/logomaker/inputs/ard_system.yaml b/assets/logomaker/inputs/ard_system.yaml new file mode 100644 index 00000000..c744e15c --- /dev/null +++ b/assets/logomaker/inputs/ard_system.yaml @@ -0,0 +1,83 @@ +modeling_options: &modeling_options + windIO_plant: !include windio.yaml + layout: + N_turbines: 25 + N_substations: 1 + site_depth: 200.0 + collection: + max_turbines_per_string: 8 + solver_name: "highs" + solver_options: + time_limit: 60 + mip_gap: 0.02 + model_options: + topology: "branched" + feeder_route: "segmented" + feeder_limit: "unlimited" + +system: + type: group + systems: + aepFLORIS: + type: component + module: ard.farm_aero.floris + object: FLORISAEP + promotes: ["x_turbines", "y_turbines", "AEP_farm"] + kwargs: + modeling_options: *modeling_options + case_title: "offshore-floating" + data_path: + collection: + type: component + module: ard.collection + object: OptiwindnetCollection + promotes: ["x_turbines", "y_turbines"] + kwargs: + modeling_options: *modeling_options + spacing_constraint: + type: component + module: ard.layout.spacing + object: TurbineSpacing + promotes: ["x_turbines", "y_turbines"] + kwargs: + modeling_options: *modeling_options + boundary: + type: component + module: ard.layout.boundary + object: FarmBoundaryDistancePolygon + promotes: ["*"] + kwargs: + modeling_options: *modeling_options + +analysis_options: + driver: + name: ScipyOptimizeDriver + options: + optimizer: COBYLA # SLSQP + # maxiter: 100 + design_variables: + x_turbines: + units: "m" + lower: -0.0 + upper: 3000.0 + scaler: 0.0005897339121 # 1/(7*D_rotor) + y_turbines: + units: "m" + lower: -0.0 + upper: 1250.0 + scaler: 0.0005897339121 # 1/(7*D_rotor) + constraints: + spacing_constraint.turbine_spacing: + units: "m" + lower: 0.001376045795 # 1/(3*D_rotor) + scaler: 0.004128137384 # 1/D_rotor + boundary_distances: + units: "m" + upper: 0.0 + scaler: 0.004128137384 # 1/D_rotor + objective: + name: AEP_farm + options: + scaler: -1.0e-9 + recorder: + filepath: opt_results.sql \ No newline at end of file diff --git a/assets/logomaker/inputs/windio.yaml b/assets/logomaker/inputs/windio.yaml new file mode 100644 index 00000000..83e0cdb0 --- /dev/null +++ b/assets/logomaker/inputs/windio.yaml @@ -0,0 +1,3330 @@ +name: LogoFarm +site: + name: LogoFarm + boundaries: + polygons: + - x: + - 733.9649071302867 + - 726.9952498697734 + - 719.9695849279575 + - 712.8896457825364 + - 705.7571793025543 + - 698.5739453173902 + - 691.3417161825449 + - 684.0622763423389 + - 676.7374218896286 + - 669.3689601226456 + - 661.9587090990748 + - 654.5084971874737 + - 647.0201626161519 + - 639.4955530196147 + - 631.9365249826864 + - 624.3449435824273 + - 616.7226819279526 + - 609.0716206982712 + - 601.3936476782562 + - 593.6906572928623 + - 585.9645501397047 + - 578.2172325201153 + - 570.4506159687913 + - 562.6666167821521 + - 554.8671555455226 + - 547.0541566592572 + - 539.2295478639224 + - 531.3952597646567 + - 523.5532253548213 + - 515.705379539064 + - 507.85365865591035 + - 500.0 + - 492.14634134408965 + - 484.29462046093585 + - 476.4467746451786 + - 468.60474023534334 + - 460.7704521360775 + - 452.94584334074284 + - 445.1328444544774 + - 437.3333832178478 + - 429.54938403120866 + - 421.78276747988446 + - 414.03544986029516 + - 406.3093427071376 + - 398.60635232174366 + - 390.92837930172874 + - 383.27731807204725 + - 375.65505641757255 + - 368.06347501731346 + - 360.5044469803853 + - 352.979837383848 + - 345.4915028125262 + - 338.0412909009253 + - 330.6310398773542 + - 323.2625781103714 + - 315.937723657661 + - 308.6582838174551 + - 301.4260546826096 + - 294.24282069744555 + - 287.1103542174637 + - 280.0304150720424 + - 273.0047501302266 + - 266.03509286971314 + - 259.1231629491423 + - 252.2706657837962 + - 245.47929212481435 + - 238.7507176420256 + - 232.08660251050156 + - 225.48859100093404 + - 218.95831107393465 + - 212.4973739783607 + - 206.10737385376348 + - 199.78988733705788 + - 193.5464731735117 + - 187.37867183214735 + - 181.28800512565513 + - 175.27597583490822 + - 169.34406733817397 + - 163.49374324511322 + - 157.72644703565564 + - 152.04360170384285 + - 146.44660940672628 + - 140.93685111840554 + - 135.51568628929417 + - 130.1844525106951 + - 124.94446518477021 + - 119.7970171999846 + - 114.74337861210532 + - 109.78479633083509 + - 104.9224938121548 + - 100.1576707564547 + - 95.49150281252633 + - 90.92514128748819 + - 86.45971286271903 + - 82.09631931586486 + - 77.83603724899247 + - 73.6799178229538 + - 69.62898649802813 + - 65.68424278090434 + - 61.84665997806821 + - 58.117184955653265 + - 54.496737905816 + - 50.98621211969212 + - 47.58647376699021 + - 44.29836168227735 + - 41.12268715800943 + - 38.06023374435657 + - 35.11175705587427 + - 32.277984585066314 + - 29.559615522887274 + - 26.95732058622735 + - 24.47174185242318 + - 22.103492600834883 + - 19.85315716152847 + - 17.72129077110096 + - 15.708419435684462 + - 13.815039801161666 + - 12.041619030626283 + - 10.38859468911707 + - 8.856374635655639 + - 7.445336922613066 + - 6.155829702431115 + - 4.9881711417211765 + - 3.942649342761062 + - 3.0195222724101467 + - 2.219017698460002 + - 1.541333133436018 + - 0.9866357858642205 + - 0.5550625190149927 + - 0.2467198171342 + - 0.06168375916970614 + - 0.0 + - 0.06168375916970614 + - 0.2467198171342 + - 0.5550625190149927 + - 0.9866357858642205 + - 1.541333133436018 + - 2.219017698460002 + - 3.0195222724101467 + - 3.942649342761062 + - 4.9881711417212315 + - 6.15582970243117 + - 7.445336922613066 + - 8.856374635655694 + - 10.388594689117125 + - 12.041619030626283 + - 13.81503980116172 + - 15.708419435684462 + - 17.72129077110096 + - 19.85315716152847 + - 22.10349260083494 + - 24.471741852423236 + - 26.95732058622735 + - 29.559615522887274 + - 32.27798458506636 + - 35.111757055874385 + - 38.06023374435669 + - 41.122687158009484 + - 44.29836168227741 + - 47.58647376699027 + - 50.98621211969229 + - 54.49673790581616 + - 58.11718495565332 + - 61.84665997806826 + - 65.6842427809044 + - 69.62898649802828 + - 73.67991782295397 + - 77.83603724899251 + - 82.09631931586492 + - 86.45971286271909 + - 90.92514128748842 + - 95.49150281252639 + - 100.15767075645482 + - 104.92249381215485 + - 109.78479633083515 + - 114.74337861210549 + - 119.79701719998465 + - 124.94446518477027 + - 130.18445251069517 + - 135.51568628929422 + - 140.9368511184057 + - 146.44660940672634 + - 152.0436017038429 + - 157.7264470356557 + - 163.49374324511334 + - 169.3440673381742 + - 175.27597583490828 + - 181.28800512565525 + - 187.37867183214746 + - 193.54647317351177 + - 199.78988733705793 + - 206.10737385376336 + - 212.497373978361 + - 218.95831107393494 + - 225.48859100093432 + - 232.08660251050185 + - 238.7507176420257 + - 245.47929212481446 + - 252.27066578379632 + - 259.1231629491424 + - 266.03509286971325 + - 273.0047501302265 + - 280.03041507204273 + - 287.1103542174639 + - 294.2428206974458 + - 301.42605468260984 + - 308.65828381745524 + - 315.9377236576611 + - 323.2625781103715 + - 330.63103987735434 + - 338.0412909009253 + - 345.4915028125262 + - 352.9798373838483 + - 360.50444698038564 + - 368.06347501731375 + - 375.6550564175728 + - 383.2773180720475 + - 390.9283793017288 + - 398.60635232174377 + - 406.3093427071377 + - 414.03544986029516 + - 421.78276747988446 + - 429.54938403120894 + - 437.33338321784817 + - 445.1328444544776 + - 452.945843340743 + - 460.77045213607767 + - 468.6047402353434 + - 476.4467746451787 + - 484.29462046093585 + - 492.14634134408965 + - 500.0 + - 507.8536586559106 + - 515.7053795390643 + - 523.5532253548215 + - 531.3952597646569 + - 539.2295478639227 + - 547.0541566592573 + - 554.8671555455227 + - 562.6666167821521 + - 570.4506159687913 + - 578.2172325201153 + - 585.964550139705 + - 593.6906572928625 + - 601.3936476782565 + - 609.0716206982714 + - 616.7226819279529 + - 624.3449435824274 + - 631.9365249826865 + - 639.4955530196146 + - 647.0201626161519 + - 654.5084971874736 + - 661.958709099075 + - 669.368960122646 + - 676.7374218896288 + - 684.0622763423391 + - 691.341716182545 + - 698.5739453173903 + - 705.7571793025544 + - 712.8896457825364 + - 719.9695849279575 + - 726.9952498697737 + - 733.964907130287 + - 740.8768370508578 + - 747.7293342162039 + - 750.0 + - 750.0 + - 937.5 + - 1000.0 + - 1187.5 + - 1187.5 + - 1189.7706657837964 + - 1196.6231629491424 + - 1203.5350928697133 + - 1210.5047501302265 + - 1217.5304150720428 + - 1224.610354217464 + - 1231.742820697446 + - 1238.9260546826097 + - 1246.1582838174552 + - 1253.437723657661 + - 1260.7625781103716 + - 1268.1310398773542 + - 1275.541290900925 + - 1282.9915028125263 + - 1290.4798373838485 + - 1298.0044469803856 + - 1305.5634750173137 + - 1313.1550564175727 + - 1320.7773180720474 + - 1328.428379301729 + - 1336.1063523217438 + - 1343.8093427071376 + - 1351.535449860295 + - 1359.2827674798843 + - 1367.049384031209 + - 1374.833383217848 + - 1382.6328444544774 + - 1390.4458433407428 + - 1398.2704521360777 + - 1406.1047402353436 + - 1413.9467746451787 + - 1421.7946204609357 + - 1429.6463413440897 + - 1437.5 + - 1445.3536586559105 + - 1453.2053795390646 + - 1461.0532253548217 + - 1468.8952597646569 + - 1476.7295478639226 + - 1484.5541566592574 + - 1492.3671555455228 + - 1500.1666167821522 + - 1507.9506159687912 + - 1515.7172325201154 + - 1523.4645501397051 + - 1531.1906572928626 + - 1538.8936476782565 + - 1546.5716206982713 + - 1554.2226819279529 + - 1561.8449435824275 + - 1569.4365249826865 + - 1576.9955530196146 + - 1584.520162616152 + - 1592.0084971874737 + - 1599.4587090990751 + - 1606.868960122646 + - 1614.2374218896286 + - 1621.5622763423391 + - 1628.841716182545 + - 1636.0739453173903 + - 1643.2571793025543 + - 1650.3896457825363 + - 1657.4695849279574 + - 1664.4952498697737 + - 1671.464907130287 + - 1678.3768370508578 + - 1685.2293342162038 + - 1692.020707875186 + - 1698.7492823579746 + - 1705.4133974894983 + - 1712.011408999066 + - 1718.5416889260653 + - 1725.0026260216393 + - 1731.3926261462368 + - 1737.7101126629425 + - 1743.9535268264885 + - 1750.1213281678527 + - 1756.211994874345 + - 1762.224024165092 + - 1768.1559326618262 + - 1774.0062567548866 + - 1779.7735529643444 + - 1785.4563982961572 + - 1791.053390593274 + - 1796.5631488815945 + - 1801.984313710706 + - 1807.3155474893051 + - 1812.5555348152297 + - 1817.7029828000154 + - 1822.7566213878945 + - 1827.7152036691648 + - 1832.577506187845 + - 1837.3423292435452 + - 1842.008497187474 + - 1846.574858712512 + - 1851.040287137281 + - 1855.4036806841352 + - 1859.6639627510076 + - 1863.820082177046 + - 1867.871013501972 + - 1871.8157572190958 + - 1875.6533400219316 + - 1879.382815044347 + - 1883.003262094184 + - 1886.513787880308 + - 1889.9135262330099 + - 1893.2016383177227 + - 1896.3773128419907 + - 1899.4397662556435 + - 1902.3882429441258 + - 1905.2220154149338 + - 1906.25 + - 1907.2779845850664 + - 1910.1117570558742 + - 1913.0602337443568 + - 1916.1226871580095 + - 1919.2983616822773 + - 1922.5864737669901 + - 1925.9862121196923 + - 1929.4967379058162 + - 1933.117184955653 + - 1936.8466599780684 + - 1940.6842427809042 + - 1944.6289864980283 + - 1948.679917822954 + - 1952.8360372489926 + - 1957.0963193158648 + - 1961.4597128627192 + - 1965.9251412874883 + - 1970.4915028125263 + - 1975.1576707564548 + - 1979.922493812155 + - 1984.7847963308352 + - 1989.7433786121055 + - 1994.7970171999848 + - 1999.9444651847703 + - 2005.1844525106949 + - 2010.515686289294 + - 2015.936851118406 + - 2021.4466094067266 + - 2027.043601703843 + - 2032.7264470356558 + - 2038.4937432451134 + - 2044.3440673381742 + - 2050.275975834908 + - 2056.288005125655 + - 2062.3786718321476 + - 2068.546473173512 + - 2074.789887337058 + - 2081.1073738537634 + - 2087.497373978361 + - 2093.958311073935 + - 2100.4885910009343 + - 2107.0866025105015 + - 2113.750717642026 + - 2120.4792921248145 + - 2127.270665783796 + - 2134.123162949142 + - 2141.0350928697135 + - 2148.0047501302265 + - 2155.0304150720426 + - 2162.110354217464 + - 2169.2428206974455 + - 2176.42605468261 + - 2183.6582838174554 + - 2190.937723657661 + - 2198.262578110371 + - 2205.6310398773544 + - 2213.041290900925 + - 2220.491502812526 + - 2227.9798373838485 + - 2235.5044469803856 + - 2243.0634750173135 + - 2250.6550564175727 + - 2258.2773180720474 + - 2265.928379301729 + - 2273.606352321744 + - 2281.3093427071376 + - 2289.0354498602956 + - 2296.7827674798846 + - 2304.549384031209 + - 2312.333383217848 + - 2320.1328444544774 + - 2327.945843340743 + - 2335.7704521360774 + - 2343.6047402353433 + - 2351.4467746451787 + - 2359.2946204609357 + - 2367.1463413440893 + - 2375.0 + - 2382.8536586559107 + - 2390.7053795390643 + - 2398.5532253548217 + - 2406.3952597646567 + - 2414.2295478639226 + - 2422.0541566592574 + - 2429.8671555455226 + - 2437.6666167821522 + - 2445.450615968791 + - 2453.217232520115 + - 2460.964550139705 + - 2468.6906572928624 + - 2476.3936476782565 + - 2484.0716206982715 + - 2491.722681927953 + - 2499.3449435824277 + - 2506.9365249826865 + - 2514.495553019615 + - 2522.020162616152 + - 2529.508497187474 + - 2536.958709099075 + - 2544.3689601226456 + - 2551.737421889629 + - 2559.0622763423394 + - 2566.3417161825446 + - 2573.57394531739 + - 2580.7571793025545 + - 2587.8896457825363 + - 2594.9695849279574 + - 2601.995249869774 + - 2608.9649071302865 + - 2615.876837050858 + - 2622.7293342162043 + - 2625.0 + - 2625.0 + - 2875.0 + - 2875.0 + - 2875.0 + - 2625.0 + - 2625.0 + - 2622.729334216204 + - 2615.876837050858 + - 2608.9649071302865 + - 2601.9952498697735 + - 2594.9695849279574 + - 2587.8896457825363 + - 2580.7571793025545 + - 2573.57394531739 + - 2566.3417161825446 + - 2559.062276342339 + - 2551.737421889629 + - 2544.3689601226456 + - 2536.958709099075 + - 2529.508497187474 + - 2522.020162616152 + - 2514.495553019615 + - 2506.9365249826865 + - 2499.3449435824277 + - 2491.7226819279526 + - 2484.071620698271 + - 2476.393647678256 + - 2468.6906572928624 + - 2460.9645501397044 + - 2453.217232520115 + - 2445.450615968791 + - 2437.6666167821522 + - 2429.8671555455226 + - 2422.0541566592574 + - 2414.2295478639226 + - 2406.3952597646567 + - 2398.5532253548213 + - 2390.7053795390643 + - 2382.8536586559103 + - 2375.0 + - 2367.1463413440893 + - 2359.2946204609357 + - 2351.4467746451787 + - 2343.6047402353433 + - 2335.7704521360774 + - 2327.9458433407426 + - 2320.1328444544774 + - 2312.3333832178478 + - 2304.549384031209 + - 2296.7827674798846 + - 2289.0354498602956 + - 2281.3093427071376 + - 2273.606352321744 + - 2265.928379301729 + - 2258.277318072047 + - 2250.6550564175723 + - 2243.063475017313 + - 2235.504446980385 + - 2227.979837383848 + - 2220.491502812526 + - 2213.041290900925 + - 2205.6310398773544 + - 2198.262578110371 + - 2190.9377236576606 + - 2183.6582838174554 + - 2176.42605468261 + - 2169.2428206974455 + - 2162.1103542174637 + - 2155.0304150720426 + - 2148.0047501302265 + - 2141.0350928697135 + - 2134.123162949142 + - 2127.270665783796 + - 2120.4792921248145 + - 2113.7507176420254 + - 2107.0866025105015 + - 2100.488591000934 + - 2093.958311073935 + - 2087.497373978361 + - 2081.1073738537634 + - 2074.789887337058 + - 2068.5464731735115 + - 2062.3786718321476 + - 2056.2880051256548 + - 2050.275975834908 + - 2044.3440673381738 + - 2038.4937432451134 + - 2032.7264470356558 + - 2027.0436017038426 + - 2021.446609406726 + - 2015.9368511184055 + - 2010.515686289294 + - 2005.1844525106949 + - 1999.9444651847703 + - 1994.7970171999848 + - 1989.7433786121053 + - 1984.7847963308352 + - 1979.922493812155 + - 1975.1576707564548 + - 1970.4915028125263 + - 1965.9251412874883 + - 1961.4597128627192 + - 1957.0963193158648 + - 1952.8360372489924 + - 1948.679917822954 + - 1944.628986498028 + - 1940.6842427809042 + - 1936.8466599780684 + - 1933.117184955653 + - 1929.496737905816 + - 1925.986212119692 + - 1922.5864737669901 + - 1919.2983616822773 + - 1916.1226871580095 + - 1913.0602337443565 + - 1910.1117570558742 + - 1907.2779845850662 + - 1904.5596155228873 + - 1901.9573205862273 + - 1899.4717418524233 + - 1897.1034926008347 + - 1894.8531571615285 + - 1892.721290771101 + - 1890.7084194356844 + - 1888.8150398011617 + - 1887.0416190306262 + - 1885.388594689117 + - 1883.8563746356556 + - 1882.445336922613 + - 1881.1558297024312 + - 1879.9881711417213 + - 1878.9426493427611 + - 1878.01952227241 + - 1877.21901769846 + - 1876.541333133436 + - 1875.986635785864 + - 1875.5550625190149 + - 1875.2467198171341 + - 1875.06168375917 + - 1875.0 + - 1687.5 + - 1687.4691581204152 + - 1687.376640091433 + - 1687.2224687404923 + - 1687.006682107068 + - 1686.729333433282 + - 1686.39049115077 + - 1685.9902388637947 + - 1685.5286753286193 + - 1685.0059144291395 + - 1684.4220851487846 + - 1683.7773315386935 + - 1683.071812682172 + - 1682.3057026554413 + - 1681.4791904846868 + - 1680.5924800994192 + - 1679.6457902821578 + - 1678.6393546144495 + - 1677.5734214192357 + - 1676.4482536995827 + - 1675.2641290737884 + - 1674.0213397068865 + - 1672.7201922385564 + - 1671.3610077074668 + - 1669.944121472063 + - 1668.4698831278217 + - 1666.9386564209954 + - 1665.3508191588612 + - 1663.706763116505 + - 1662.006893940154 + - 1660.2516310470921 + - 1658.4414075221734 + - 1656.576670010966 + - 1654.6578786095479 + - 1652.685506750986 + - 1650.660041088523 + - 1648.5819813755038 + - 1646.4518403420675 + - 1644.2701435686404 + - 1642.0374293562559 + - 1639.754248593737 + - 1637.4211646217727 + - 1635.0387530939227 + - 1632.6076018345825 + - 1630.1283106939472 + - 1627.6014914000077 + - 1625.027767407615 + - 1622.4077737446526 + - 1619.742156855353 + - 1617.0315744407972 + - 1614.276695296637 + - 1611.4781991480784 + - 1608.636776482172 + - 1605.7531283774433 + - 1602.8279663309131 + - 1599.862012082546 + - 1596.8559974371726 + - 1593.8106640839264 + - 1590.7267634132443 + - 1587.6050563314711 + - 1584.4463130731183 + - 1581.2513130108196 + - 1578.0208444630325 + - 1574.755704499533 + - 1571.4566987447492 + - 1568.1246411789873 + - 1564.760353937593 + - 1561.3646671081021 + - 1557.938418525429 + - 1554.4824535651433 + - 1550.997624934887 + - 1547.4847924639787 + - 1543.9448228912681 + - 1540.3785896512773 + - 1536.786972658695 + - 1533.1708580912723 + - 1529.5311381711697 + - 1525.8687109448144 + - 1522.1844800613228 + - 1518.4793545495374 + - 1514.754248593737 + - 1511.010081308076 + - 1507.2477765098074 + - 1503.4682624913432 + - 1499.6724717912139 + - 1495.8613409639765 + - 1492.0358103491358 + - 1488.1968238391282 + - 1484.3453286464312 + - 1480.4822750698524 + - 1476.6086162600575 + - 1472.7253079843956 + - 1468.8333083910761 + - 1464.9335777727613 + - 1461.0270783296287 + - 1457.1147739319613 + - 1453.1976298823283 + - 1449.2766126774109 + - 1445.3526897695322 + - 1441.4268293279554 + - 1437.5 + - 1433.5731706720446 + - 1429.6473102304678 + - 1425.7233873225894 + - 1421.8023701176717 + - 1417.8852260680387 + - 1413.9729216703715 + - 1410.0664222272387 + - 1406.166691608924 + - 1402.2746920156044 + - 1398.3913837399423 + - 1394.5177249301478 + - 1390.6546713535688 + - 1386.803176160872 + - 1382.9641896508645 + - 1379.1386590360237 + - 1375.3275282087864 + - 1371.5317375086568 + - 1367.7522234901928 + - 1363.9899186919242 + - 1360.245751406263 + - 1356.5206454504626 + - 1352.8155199386772 + - 1349.1312890551856 + - 1345.4688618288305 + - 1341.8291419087277 + - 1338.213027341305 + - 1334.6214103487227 + - 1331.055177108732 + - 1327.5152075360213 + - 1324.0023750651133 + - 1320.5175464348567 + - 1317.061581474571 + - 1313.635332891898 + - 1310.2396460624072 + - 1306.875358821013 + - 1303.5433012552508 + - 1300.2442955004672 + - 1296.9791555369675 + - 1293.7486869891804 + - 1290.5536869268817 + - 1287.394943668529 + - 1284.273236586756 + - 1281.1893359160738 + - 1278.1440025628276 + - 1275.137987917454 + - 1272.172033669087 + - 1269.2468716225567 + - 1266.363223517828 + - 1263.5218008519216 + - 1260.7233047033633 + - 1257.968425559203 + - 1255.257843144647 + - 1252.5922262553474 + - 1249.9722325923851 + - 1247.3985085999923 + - 1244.8716893060528 + - 1242.3923981654177 + - 1239.9612469060773 + - 1237.5788353782273 + - 1235.245751406263 + - 1232.9625706437441 + - 1230.7298564313596 + - 1228.5481596579325 + - 1226.4180186244962 + - 1224.339958911477 + - 1222.3144932490143 + - 1220.3421213904521 + - 1218.423329989034 + - 1216.5585924778266 + - 1214.748368952908 + - 1212.9931060598462 + - 1211.2932368834952 + - 1209.6491808411388 + - 1208.0613435790046 + - 1206.5301168721783 + - 1205.0558785279372 + - 1203.6389922925332 + - 1202.2798077614436 + - 1200.9786602931135 + - 1199.7358709262116 + - 1198.5517463004173 + - 1197.4265785807643 + - 1196.3606453855505 + - 1195.3542097178422 + - 1194.4075199005808 + - 1193.5208095153132 + - 1192.6942973445587 + - 1191.928187317828 + - 1191.2226684613065 + - 1190.5779148512156 + - 1189.9940855708605 + - 1189.4713246713807 + - 1189.0097611362053 + - 1188.60950884923 + - 1188.270666566718 + - 1187.993317892932 + - 1187.7775312595077 + - 1187.623359908567 + - 1187.5308418795848 + - 1187.5 + - 1187.5 + - 1000.0 + - 937.5 + - 750.0 + - 750.0 + - 747.7293342162038 + - 740.8768370508576 + - 733.9649071302867 + y: + - 58.117184955653265 + - 54.49673790581605 + - 50.986212119692176 + - 47.58647376699021 + - 44.29836168227735 + - 41.12268715800943 + - 38.06023374435663 + - 35.11175705587427 + - 32.27798458506636 + - 29.559615522887217 + - 26.95732058622735 + - 24.471741852423236 + - 22.10349260083494 + - 19.85315716152847 + - 17.72129077110096 + - 15.708419435684462 + - 13.815039801161666 + - 12.041619030626283 + - 10.388594689117125 + - 8.856374635655639 + - 7.445336922613066 + - 6.155829702431115 + - 4.9881711417212315 + - 3.942649342761062 + - 3.0195222724101467 + - 2.219017698460002 + - 1.541333133436018 + - 0.9866357858642205 + - 0.5550625190149927 + - 0.2467198171342 + - 0.06168375916970614 + - 0.0 + - 0.06168375916970614 + - 0.2467198171342 + - 0.5550625190149927 + - 0.9866357858642205 + - 1.541333133436018 + - 2.219017698460002 + - 3.0195222724101467 + - 3.9426493427611176 + - 4.9881711417212315 + - 6.15582970243117 + - 7.445336922613066 + - 8.856374635655694 + - 10.388594689117125 + - 12.041619030626283 + - 13.81503980116172 + - 15.708419435684462 + - 17.72129077110096 + - 19.85315716152847 + - 22.10349260083494 + - 24.471741852423236 + - 26.95732058622735 + - 29.559615522887274 + - 32.27798458506636 + - 35.11175705587433 + - 38.06023374435663 + - 41.12268715800943 + - 44.29836168227741 + - 47.58647376699027 + - 50.986212119692176 + - 54.49673790581605 + - 58.11718495565332 + - 61.84665997806826 + - 65.6842427809044 + - 69.62898649802818 + - 73.67991782295385 + - 77.83603724899251 + - 82.09631931586492 + - 86.45971286271914 + - 90.9251412874883 + - 95.49150281252628 + - 100.15767075645482 + - 104.92249381215485 + - 109.78479633083515 + - 114.74337861210537 + - 119.79701719998448 + - 124.94446518477031 + - 130.18445251069522 + - 135.51568628929428 + - 140.9368511184056 + - 146.44660940672622 + - 152.0436017038429 + - 157.72644703565575 + - 163.49374324511334 + - 169.34406733817403 + - 175.2759758349081 + - 181.28800512565525 + - 187.37867183214746 + - 193.54647317351177 + - 199.789887337058 + - 206.10737385376336 + - 212.49737397836083 + - 218.95831107393477 + - 225.48859100093415 + - 232.08660251050168 + - 238.7507176420257 + - 245.47929212481446 + - 252.27066578379632 + - 259.1231629491424 + - 266.03509286971325 + - 273.00475013022674 + - 280.0304150720425 + - 287.1103542174638 + - 294.24282069744567 + - 301.4260546826097 + - 308.6582838174553 + - 315.93772365766114 + - 323.2625781103715 + - 330.63103987735434 + - 338.0412909009253 + - 345.49150281252645 + - 352.9798373838481 + - 360.5044469803854 + - 368.06347501731364 + - 375.65505641757255 + - 383.2773180720475 + - 390.92837930172885 + - 398.6063523217438 + - 406.3093427071377 + - 414.0354498602952 + - 421.78276747988474 + - 429.5493840312088 + - 437.333383217848 + - 445.1328444544774 + - 452.94584334074284 + - 460.7704521360777 + - 468.60474023534346 + - 476.4467746451788 + - 484.29462046093585 + - 492.14634134408965 + - 500.0 + - 507.85365865591046 + - 515.7053795390642 + - 523.5532253548214 + - 531.3952597646567 + - 539.2295478639227 + - 547.0541566592573 + - 554.8671555455227 + - 562.6666167821521 + - 570.4506159687913 + - 578.2172325201155 + - 585.9645501397048 + - 593.6906572928624 + - 601.3936476782562 + - 609.0716206982712 + - 616.7226819279529 + - 624.3449435824275 + - 631.9365249826865 + - 639.4955530196147 + - 647.0201626161519 + - 654.5084971874738 + - 661.9587090990749 + - 669.3689601226458 + - 676.7374218896286 + - 684.0622763423391 + - 691.341716182545 + - 698.5739453173903 + - 705.7571793025544 + - 712.8896457825364 + - 719.9695849279577 + - 726.9952498697736 + - 733.9649071302867 + - 740.8768370508577 + - 747.7293342162038 + - 754.5207078751858 + - 761.2492823579746 + - 767.9133974894984 + - 774.5114089990659 + - 781.0416889260653 + - 787.5026260216395 + - 793.8926261462367 + - 800.2101126629422 + - 806.4535268264883 + - 812.6213281678527 + - 818.711994874345 + - 824.7240241650919 + - 830.655932661826 + - 836.5062567548866 + - 842.2735529643444 + - 847.9563982961573 + - 853.5533905932739 + - 859.0631488815945 + - 864.4843137107059 + - 869.8155474893048 + - 875.0555348152299 + - 880.2029828000155 + - 885.2566213878947 + - 890.2152036691648 + - 895.0775061878452 + - 899.8423292435452 + - 904.5084971874737 + - 909.074858712512 + - 913.5402871372811 + - 917.9036806841352 + - 922.1639627510076 + - 926.3200821770462 + - 930.3710135019718 + - 934.3157572190956 + - 938.1533400219317 + - 941.8828150443467 + - 945.5032620941839 + - 949.013787880308 + - 952.4135262330099 + - 955.7016383177227 + - 958.8773128419906 + - 961.9397662556435 + - 964.8882429441256 + - 967.7220154149337 + - 970.4403844771127 + - 973.0426794137727 + - 975.5282581475768 + - 977.8965073991652 + - 980.1468428384717 + - 982.2787092288992 + - 984.2915805643155 + - 986.1849601988384 + - 987.9583809693737 + - 989.6114053108829 + - 991.1436253643444 + - 992.554663077387 + - 993.8441702975689 + - 995.0118288582788 + - 996.057350657239 + - 996.9804777275899 + - 997.78098230154 + - 998.458666866564 + - 999.0133642141358 + - 999.4449374809851 + - 999.7532801828658 + - 999.9383162408303 + - 1000.0 + - 999.9383162408303 + - 999.7532801828656 + - 999.444937480985 + - 999.0133642141358 + - 998.458666866564 + - 997.78098230154 + - 996.9804777275899 + - 996.057350657239 + - 995.0118288582788 + - 993.8441702975689 + - 992.554663077387 + - 991.1436253643443 + - 989.6114053108829 + - 987.9583809693737 + - 986.1849601988383 + - 984.2915805643155 + - 982.2787092288991 + - 980.1468428384716 + - 977.896507399165 + - 975.5282581475768 + - 973.0426794137726 + - 970.4403844771126 + - 967.7220154149335 + - 964.8882429441256 + - 961.9397662556432 + - 958.8773128419905 + - 955.7016383177225 + - 952.4135262330097 + - 949.0137878803077 + - 945.5032620941838 + - 941.8828150443466 + - 938.1533400219317 + - 934.3157572190955 + - 932.99684958213 + - 1000.0 + - 1000.0 + - 1000.0 + - 1000.0 + - 932.99684958213 + - 934.3157572190956 + - 938.1533400219317 + - 941.8828150443467 + - 945.5032620941839 + - 949.013787880308 + - 952.4135262330099 + - 955.7016383177227 + - 958.8773128419906 + - 961.9397662556435 + - 964.8882429441256 + - 967.7220154149337 + - 970.4403844771127 + - 973.0426794137727 + - 975.5282581475768 + - 977.8965073991652 + - 980.1468428384717 + - 982.2787092288992 + - 984.2915805643155 + - 986.1849601988384 + - 987.9583809693737 + - 989.6114053108829 + - 991.1436253643444 + - 992.554663077387 + - 993.8441702975689 + - 995.0118288582788 + - 996.057350657239 + - 996.9804777275899 + - 997.78098230154 + - 998.458666866564 + - 999.0133642141358 + - 999.4449374809851 + - 999.7532801828658 + - 999.9383162408303 + - 1000.0 + - 999.9383162408303 + - 999.7532801828656 + - 999.444937480985 + - 999.0133642141358 + - 998.458666866564 + - 997.78098230154 + - 996.9804777275899 + - 996.057350657239 + - 995.0118288582788 + - 993.8441702975689 + - 992.554663077387 + - 991.1436253643443 + - 989.6114053108829 + - 987.9583809693737 + - 986.1849601988383 + - 984.2915805643155 + - 982.2787092288991 + - 980.1468428384716 + - 977.896507399165 + - 975.5282581475768 + - 973.0426794137726 + - 970.4403844771126 + - 967.7220154149335 + - 964.8882429441256 + - 961.9397662556432 + - 958.8773128419905 + - 955.7016383177225 + - 952.4135262330097 + - 949.0137878803077 + - 945.5032620941838 + - 941.8828150443466 + - 938.1533400219317 + - 934.3157572190955 + - 930.3710135019717 + - 926.3200821770461 + - 922.1639627510074 + - 917.9036806841351 + - 913.5402871372809 + - 909.0748587125117 + - 904.5084971874735 + - 899.8423292435451 + - 895.0775061878451 + - 890.2152036691647 + - 885.2566213878945 + - 880.2029828000154 + - 875.0555348152297 + - 869.8155474893048 + - 864.4843137107058 + - 859.0631488815945 + - 853.5533905932735 + - 847.9563982961569 + - 842.2735529643442 + - 836.5062567548865 + - 830.6559326618258 + - 824.7240241650917 + - 818.7119948743449 + - 812.6213281678527 + - 806.4535268264883 + - 800.210112662942 + - 793.8926261462362 + - 787.5026260216391 + - 781.0416889260651 + - 774.5114089990657 + - 767.9133974894982 + - 761.2492823579744 + - 754.5207078751856 + - 747.7293342162037 + - 740.8768370508576 + - 733.9649071302867 + - 726.9952498697731 + - 719.9695849279573 + - 712.8896457825361 + - 705.7571793025542 + - 698.5739453173901 + - 691.3417161825448 + - 684.0622763423389 + - 676.7374218896285 + - 673.9509477432384 + - 676.7374218896286 + - 684.0622763423391 + - 691.341716182545 + - 698.5739453173903 + - 705.7571793025544 + - 712.8896457825364 + - 719.9695849279577 + - 726.9952498697736 + - 733.9649071302867 + - 740.8768370508577 + - 747.7293342162038 + - 754.5207078751858 + - 761.2492823579746 + - 767.9133974894984 + - 774.5114089990659 + - 781.0416889260653 + - 787.5026260216395 + - 793.8926261462367 + - 800.2101126629422 + - 806.4535268264883 + - 812.6213281678527 + - 818.711994874345 + - 824.7240241650919 + - 830.655932661826 + - 836.5062567548866 + - 842.2735529643444 + - 847.9563982961573 + - 853.5533905932739 + - 859.0631488815945 + - 864.4843137107059 + - 869.8155474893048 + - 875.0555348152299 + - 880.2029828000155 + - 885.2566213878947 + - 890.2152036691648 + - 895.0775061878452 + - 899.8423292435452 + - 904.5084971874737 + - 909.074858712512 + - 913.5402871372811 + - 917.9036806841352 + - 922.1639627510076 + - 926.3200821770462 + - 930.3710135019718 + - 934.3157572190956 + - 938.1533400219317 + - 941.8828150443467 + - 945.5032620941839 + - 949.013787880308 + - 952.4135262330099 + - 955.7016383177227 + - 958.8773128419906 + - 961.9397662556435 + - 964.8882429441256 + - 967.7220154149337 + - 970.4403844771127 + - 973.0426794137727 + - 975.5282581475768 + - 977.8965073991652 + - 980.1468428384717 + - 982.2787092288992 + - 984.2915805643155 + - 986.1849601988384 + - 987.9583809693737 + - 989.6114053108829 + - 991.1436253643444 + - 992.554663077387 + - 993.8441702975689 + - 995.0118288582788 + - 996.057350657239 + - 996.9804777275899 + - 997.78098230154 + - 998.458666866564 + - 999.0133642141358 + - 999.4449374809851 + - 999.7532801828658 + - 999.9383162408303 + - 1000.0 + - 999.9383162408303 + - 999.7532801828656 + - 999.444937480985 + - 999.0133642141358 + - 998.458666866564 + - 997.78098230154 + - 996.9804777275899 + - 996.057350657239 + - 995.0118288582788 + - 993.8441702975689 + - 992.554663077387 + - 991.1436253643443 + - 989.6114053108829 + - 987.9583809693737 + - 986.1849601988383 + - 984.2915805643155 + - 982.2787092288991 + - 980.1468428384716 + - 977.896507399165 + - 975.5282581475768 + - 973.0426794137726 + - 970.4403844771126 + - 967.7220154149335 + - 964.8882429441256 + - 961.9397662556432 + - 958.8773128419905 + - 955.7016383177225 + - 952.4135262330097 + - 949.0137878803077 + - 945.5032620941838 + - 941.8828150443466 + - 938.1533400219317 + - 934.3157572190955 + - 932.9968495821302 + - 1250.0 + - 1250.0 + - 500.0 + - 0.0 + - 0.0 + - 67.00315041787003 + - 65.68424278090434 + - 61.84665997806815 + - 58.117184955653265 + - 54.49673790581605 + - 50.986212119692176 + - 47.58647376699021 + - 44.29836168227735 + - 41.12268715800943 + - 38.06023374435663 + - 35.11175705587427 + - 32.27798458506636 + - 29.559615522887217 + - 26.95732058622735 + - 24.471741852423236 + - 22.10349260083494 + - 19.85315716152847 + - 17.72129077110096 + - 15.708419435684462 + - 13.815039801161666 + - 12.041619030626283 + - 10.388594689117125 + - 8.856374635655639 + - 7.445336922613066 + - 6.155829702431115 + - 4.9881711417212315 + - 3.942649342761062 + - 3.0195222724101467 + - 2.219017698460002 + - 1.541333133436018 + - 0.9866357858642205 + - 0.5550625190149927 + - 0.2467198171342 + - 0.06168375916970614 + - 0.0 + - 0.06168375916970614 + - 0.2467198171342 + - 0.5550625190149927 + - 0.9866357858642205 + - 1.541333133436018 + - 2.219017698460002 + - 3.0195222724101467 + - 3.9426493427611176 + - 4.9881711417212315 + - 6.15582970243117 + - 7.445336922613066 + - 8.856374635655694 + - 10.388594689117125 + - 12.041619030626283 + - 13.81503980116172 + - 15.708419435684462 + - 17.72129077110096 + - 19.85315716152847 + - 22.10349260083494 + - 24.471741852423236 + - 26.95732058622735 + - 29.559615522887274 + - 32.27798458506636 + - 35.11175705587433 + - 38.06023374435663 + - 41.12268715800943 + - 44.29836168227741 + - 47.58647376699027 + - 50.986212119692176 + - 54.49673790581605 + - 58.11718495565332 + - 61.84665997806826 + - 65.6842427809044 + - 69.62898649802818 + - 73.67991782295385 + - 77.83603724899251 + - 82.09631931586492 + - 86.45971286271914 + - 90.9251412874883 + - 95.49150281252628 + - 100.15767075645482 + - 104.92249381215485 + - 109.78479633083515 + - 114.74337861210537 + - 119.79701719998448 + - 124.94446518477031 + - 130.18445251069522 + - 135.51568628929428 + - 140.9368511184056 + - 146.44660940672622 + - 152.0436017038429 + - 157.72644703565575 + - 163.49374324511334 + - 169.34406733817403 + - 175.2759758349081 + - 181.28800512565525 + - 187.37867183214746 + - 193.54647317351177 + - 199.789887337058 + - 206.10737385376336 + - 212.49737397836083 + - 218.95831107393477 + - 225.48859100093415 + - 232.08660251050168 + - 238.7507176420257 + - 245.47929212481446 + - 252.27066578379632 + - 259.1231629491424 + - 266.03509286971325 + - 273.00475013022674 + - 280.0304150720425 + - 287.1103542174638 + - 294.24282069744567 + - 301.4260546826097 + - 308.6582838174553 + - 315.93772365766114 + - 323.2625781103715 + - 330.63103987735434 + - 338.0412909009253 + - 345.49150281252645 + - 352.9798373838481 + - 360.5044469803854 + - 368.06347501731364 + - 375.65505641757255 + - 383.2773180720475 + - 390.92837930172885 + - 398.6063523217438 + - 406.3093427071377 + - 414.0354498602952 + - 421.78276747988474 + - 429.5493840312088 + - 437.333383217848 + - 445.1328444544774 + - 452.94584334074284 + - 460.7704521360777 + - 468.60474023534346 + - 476.4467746451788 + - 484.29462046093585 + - 492.14634134408965 + - 500.0 + - 500.0 + - 503.926829327955 + - 507.8526897695321 + - 511.7766126774107 + - 515.6976298823283 + - 519.6147739319612 + - 523.5270783296286 + - 527.4335777727613 + - 531.333308391076 + - 535.2253079843955 + - 539.1086162600576 + - 542.9822750698522 + - 546.8453286464312 + - 550.6968238391281 + - 554.5358103491355 + - 558.3613409639763 + - 562.1724717912136 + - 565.9682624913431 + - 569.7477765098072 + - 573.5100813080758 + - 577.2542485937366 + - 580.9793545495374 + - 584.6844800613229 + - 588.3687109448142 + - 592.0311381711695 + - 595.6708580912724 + - 599.2869726586952 + - 602.8785896512771 + - 606.444822891268 + - 609.9847924639786 + - 613.4976249348866 + - 616.9824535651434 + - 620.4384185254288 + - 623.8646671081018 + - 627.2603539375929 + - 630.6246411789872 + - 633.9566987447491 + - 637.2557044995328 + - 640.5208444630326 + - 643.7513130108196 + - 646.9463130731181 + - 650.105056331471 + - 653.2267634132442 + - 656.3106640839262 + - 659.3559974371724 + - 662.3620120825459 + - 665.3279663309129 + - 668.2531283774433 + - 671.1367764821721 + - 673.9781991480785 + - 676.7766952966367 + - 679.5315744407973 + - 682.242156855353 + - 684.9077737446524 + - 687.5277674076149 + - 690.1014914000076 + - 692.6283106939472 + - 695.1076018345823 + - 697.5387530939225 + - 699.9211646217726 + - 702.2542485937367 + - 704.5374293562559 + - 706.7701435686404 + - 708.9518403420676 + - 711.0819813755037 + - 713.160041088523 + - 715.1855067509858 + - 717.1578786095479 + - 719.0766700109658 + - 720.9414075221733 + - 722.7516310470918 + - 724.5068939401539 + - 726.2067631165049 + - 727.8508191588613 + - 729.4386564209952 + - 730.9698831278216 + - 732.4441214720629 + - 733.8610077074668 + - 735.2201922385564 + - 736.5213397068862 + - 737.7641290737884 + - 738.9482536995826 + - 740.0734214192357 + - 741.1393546144495 + - 742.1457902821578 + - 743.0924800994192 + - 743.9791904846869 + - 744.8057026554415 + - 745.5718126821722 + - 746.2773315386935 + - 746.9220851487844 + - 747.5059144291394 + - 748.0286753286194 + - 748.490238863795 + - 748.89049115077 + - 749.229333433282 + - 749.506682107068 + - 749.7224687404924 + - 749.8766400914328 + - 749.969158120415 + - 750.0 + - 749.969158120415 + - 749.8766400914329 + - 749.7224687404926 + - 749.506682107068 + - 749.229333433282 + - 748.89049115077 + - 748.490238863795 + - 748.0286753286194 + - 747.5059144291394 + - 746.9220851487844 + - 746.2773315386935 + - 745.5718126821722 + - 744.8057026554415 + - 743.9791904846869 + - 743.0924800994192 + - 742.1457902821578 + - 741.1393546144495 + - 740.0734214192358 + - 738.9482536995827 + - 737.7641290737884 + - 736.5213397068864 + - 735.2201922385564 + - 733.8610077074669 + - 732.4441214720629 + - 730.9698831278217 + - 729.4386564209954 + - 727.8508191588613 + - 726.206763116505 + - 724.506893940154 + - 722.7516310470919 + - 720.9414075221734 + - 719.0766700109658 + - 717.1578786095479 + - 715.185506750986 + - 713.160041088523 + - 711.0819813755038 + - 708.9518403420676 + - 706.7701435686405 + - 704.537429356256 + - 702.2542485937369 + - 699.9211646217726 + - 697.5387530939225 + - 695.1076018345824 + - 692.6283106939474 + - 690.1014914000077 + - 687.527767407615 + - 684.9077737446524 + - 682.242156855353 + - 679.5315744407973 + - 676.776695296637 + - 673.9781991480787 + - 671.1367764821722 + - 668.2531283774433 + - 665.3279663309131 + - 662.362012082546 + - 659.3559974371725 + - 656.3106640839262 + - 653.2267634132442 + - 650.1050563314711 + - 646.9463130731183 + - 643.7513130108197 + - 640.5208444630326 + - 637.255704499533 + - 633.9566987447491 + - 630.6246411789873 + - 627.260353937593 + - 623.8646671081018 + - 620.4384185254288 + - 616.9824535651434 + - 613.4976249348867 + - 609.9847924639788 + - 606.4448228912682 + - 602.8785896512771 + - 599.2869726586953 + - 595.6708580912725 + - 592.0311381711696 + - 588.3687109448142 + - 584.6844800613229 + - 580.9793545495374 + - 577.254248593737 + - 573.510081308076 + - 569.7477765098073 + - 565.9682624913432 + - 562.1724717912138 + - 558.3613409639764 + - 554.5358103491355 + - 550.6968238391281 + - 546.8453286464312 + - 542.9822750698524 + - 539.1086162600578 + - 535.2253079843956 + - 531.3333083910761 + - 527.4335777727614 + - 523.5270783296287 + - 519.6147739319613 + - 515.6976298823283 + - 511.7766126774107 + - 507.8526897695321 + - 503.9268293279552 + - 500.0 + - 0.0 + - 0.0 + - 0.0 + - 0.0 + - 67.00315041786993 + - 65.68424278090434 + - 61.84665997806815 + - 58.117184955653265 + - x: + - 749.506682107068 + - 749.229333433282 + - 748.89049115077 + - 748.490238863795 + - 748.0286753286194 + - 747.5059144291394 + - 746.9220851487844 + - 746.2773315386935 + - 745.5718126821722 + - 744.8057026554415 + - 743.9791904846869 + - 743.0924800994192 + - 742.1457902821578 + - 741.1393546144495 + - 740.0734214192358 + - 738.9482536995827 + - 737.7641290737884 + - 736.5213397068864 + - 735.2201922385564 + - 733.8610077074669 + - 732.4441214720629 + - 730.9698831278217 + - 729.4386564209954 + - 727.8508191588613 + - 726.2067631165049 + - 724.506893940154 + - 722.751631047092 + - 720.9414075221734 + - 719.0766700109658 + - 717.1578786095479 + - 715.185506750986 + - 713.160041088523 + - 711.0819813755038 + - 708.9518403420676 + - 706.7701435686405 + - 704.537429356256 + - 702.254248593737 + - 699.9211646217726 + - 697.5387530939225 + - 695.1076018345824 + - 692.6283106939472 + - 690.1014914000077 + - 687.5277674076149 + - 684.9077737446526 + - 682.242156855353 + - 679.5315744407973 + - 676.776695296637 + - 673.9781991480786 + - 671.1367764821722 + - 668.2531283774433 + - 665.3279663309131 + - 662.362012082546 + - 659.3559974371725 + - 656.3106640839263 + - 653.2267634132443 + - 650.1050563314712 + - 646.9463130731184 + - 643.7513130108197 + - 640.5208444630326 + - 637.255704499533 + - 633.9566987447491 + - 630.6246411789873 + - 627.260353937593 + - 623.8646671081019 + - 620.4384185254289 + - 616.9824535651435 + - 613.4976249348869 + - 609.9847924639787 + - 606.4448228912681 + - 602.8785896512771 + - 599.2869726586952 + - 595.6708580912725 + - 592.0311381711696 + - 588.3687109448143 + - 584.684480061323 + - 580.9793545495376 + - 577.2542485937369 + - 573.510081308076 + - 569.7477765098073 + - 565.9682624913432 + - 562.1724717912138 + - 558.3613409639764 + - 554.5358103491357 + - 550.6968238391282 + - 546.8453286464313 + - 542.9822750698526 + - 539.1086162600577 + - 535.2253079843956 + - 531.3333083910761 + - 527.4335777727614 + - 523.5270783296287 + - 519.6147739319613 + - 515.6976298823284 + - 511.7766126774108 + - 507.8526897695322 + - 503.9268293279553 + - 500.0 + - 496.0731706720448 + - 492.14731023046795 + - 488.22338732258936 + - 484.30237011767167 + - 480.38522606803883 + - 476.47292167037153 + - 472.5664222272388 + - 468.66669160892405 + - 464.7746920156045 + - 460.8913837399423 + - 457.0177249301476 + - 453.15467135356886 + - 449.3031761608719 + - 445.46418965086445 + - 441.63865903602374 + - 437.8275282087864 + - 434.0317375086569 + - 430.2522234901928 + - 426.4899186919242 + - 422.74575140626314 + - 419.0206454504626 + - 415.31551993867714 + - 411.63128905518573 + - 407.96886182883054 + - 404.3291419087276 + - 400.71302734130495 + - 397.1214103487229 + - 393.5551771087319 + - 390.01520753602136 + - 386.50237506511326 + - 383.0175464348566 + - 379.5615814745712 + - 376.13533289189814 + - 372.73964606240725 + - 369.37535882101287 + - 366.0433012552509 + - 362.74429550046716 + - 359.4791555369675 + - 356.2486869891805 + - 353.05368692688165 + - 349.894943668529 + - 346.77323658675584 + - 343.68933591607373 + - 340.6440025628276 + - 337.63798791745415 + - 334.6720336690871 + - 331.7468716225567 + - 328.8632235178278 + - 326.02180085192145 + - 323.2233047033631 + - 320.46842555920284 + - 317.7578431446471 + - 315.0922262553476 + - 312.4722325923851 + - 309.89850859999234 + - 307.37168930605276 + - 304.8923981654176 + - 302.46124690607746 + - 300.07883537822744 + - 297.7457514062632 + - 295.4625706437442 + - 293.22985643135956 + - 291.04815965793244 + - 288.9180186244963 + - 286.83995891147697 + - 284.81449324901416 + - 282.8421213904522 + - 280.92332998903413 + - 279.05859247782666 + - 277.24836895290804 + - 275.4931060598461 + - 273.7932368834951 + - 272.14918084113873 + - 270.56134357900476 + - 269.0301168721784 + - 267.5558785279372 + - 266.1389922925332 + - 264.77980776144364 + - 263.47866029311365 + - 262.2358709262116 + - 261.0517463004175 + - 259.9265785807642 + - 258.86064538555047 + - 257.85420971784225 + - 256.90751990058084 + - 256.02080951531315 + - 255.19429734455855 + - 254.42818731782785 + - 253.72266846130654 + - 253.07791485121555 + - 252.49408557086062 + - 251.9713246713805 + - 251.50976113620504 + - 251.10950884923 + - 250.77066656671798 + - 250.4933178929321 + - 250.27753125950747 + - 250.1233599085671 + - 250.03084187958484 + - 250.0 + - 250.03084187958484 + - 250.1233599085671 + - 250.27753125950747 + - 250.4933178929321 + - 250.77066656671798 + - 251.10950884923 + - 251.50976113620504 + - 251.9713246713805 + - 252.49408557086062 + - 253.07791485121555 + - 253.72266846130654 + - 254.4281873178278 + - 255.19429734455855 + - 256.02080951531315 + - 256.9075199005808 + - 257.85420971784225 + - 258.86064538555047 + - 259.9265785807642 + - 261.05174630041745 + - 262.2358709262116 + - 263.47866029311365 + - 264.77980776144364 + - 266.13899229253315 + - 267.5558785279372 + - 269.03011687217827 + - 270.56134357900476 + - 272.14918084113873 + - 273.7932368834951 + - 275.49310605984607 + - 277.248368952908 + - 279.0585924778266 + - 280.92332998903413 + - 282.8421213904522 + - 284.8144932490141 + - 286.8399589114769 + - 288.91801862449626 + - 291.0481596579324 + - 293.2298564313595 + - 295.4625706437441 + - 297.74575140626314 + - 300.0788353782273 + - 302.4612469060774 + - 304.8923981654176 + - 307.37168930605264 + - 309.8985085999923 + - 312.4722325923851 + - 315.09222625534755 + - 317.75784314464704 + - 320.46842555920273 + - 323.2233047033631 + - 326.02180085192145 + - 328.8632235178278 + - 331.7468716225566 + - 334.672033669087 + - 337.63798791745415 + - 340.64400256282755 + - 343.6893359160737 + - 346.77323658675584 + - 349.8949436685289 + - 353.05368692688177 + - 356.2486869891803 + - 359.4791555369673 + - 362.74429550046705 + - 366.04330125525075 + - 369.3753588210128 + - 372.7396460624072 + - 376.1353328918981 + - 379.56158147457114 + - 383.01754643485657 + - 386.5023750651133 + - 390.0152075360212 + - 393.5551771087318 + - 397.1214103487228 + - 400.71302734130484 + - 404.32914190872754 + - 407.96886182883054 + - 411.6312890551857 + - 415.3155199386771 + - 419.0206454504626 + - 422.74575140626314 + - 426.489918691924 + - 430.25222349019265 + - 434.03173750865676 + - 437.8275282087863 + - 441.6386590360236 + - 445.4641896508644 + - 449.3031761608718 + - 453.1546713535688 + - 457.0177249301476 + - 460.8913837399423 + - 464.77469201560433 + - 468.66669160892394 + - 472.5664222272387 + - 476.4729216703714 + - 480.3852260680387 + - 484.3023701176716 + - 488.2233873225893 + - 492.14731023046795 + - 496.0731706720448 + - 500.0 + - 503.9268293279552 + - 507.852689769532 + - 511.7766126774107 + - 515.6976298823283 + - 519.6147739319612 + - 523.5270783296286 + - 527.4335777727613 + - 531.3333083910761 + - 535.2253079843956 + - 539.1086162600577 + - 542.9822750698524 + - 546.8453286464311 + - 550.6968238391281 + - 554.5358103491355 + - 558.3613409639763 + - 562.1724717912136 + - 565.9682624913431 + - 569.7477765098073 + - 573.510081308076 + - 577.2542485937369 + - 580.9793545495373 + - 584.6844800613228 + - 588.3687109448142 + - 592.0311381711695 + - 595.6708580912724 + - 599.2869726586952 + - 602.8785896512771 + - 606.4448228912682 + - 609.9847924639787 + - 613.4976249348867 + - 616.9824535651434 + - 620.4384185254288 + - 623.8646671081018 + - 627.2603539375929 + - 630.6246411789872 + - 633.9566987447491 + - 637.255704499533 + - 640.5208444630326 + - 643.7513130108197 + - 646.9463130731182 + - 650.105056331471 + - 653.2267634132442 + - 656.3106640839262 + - 659.3559974371724 + - 662.3620120825459 + - 665.327966330913 + - 668.2531283774433 + - 671.1367764821722 + - 673.9781991480786 + - 676.7766952966368 + - 679.5315744407973 + - 682.242156855353 + - 684.9077737446524 + - 687.5277674076149 + - 690.1014914000077 + - 692.6283106939472 + - 695.1076018345824 + - 697.5387530939225 + - 699.9211646217726 + - 702.2542485937369 + - 704.5374293562559 + - 706.7701435686404 + - 708.9518403420676 + - 711.0819813755038 + - 713.160041088523 + - 715.185506750986 + - 717.1578786095479 + - 719.0766700109658 + - 720.9414075221734 + - 722.7516310470919 + - 724.5068939401539 + - 726.2067631165049 + - 727.8508191588613 + - 729.4386564209952 + - 730.9698831278217 + - 732.4441214720629 + - 733.8610077074668 + - 735.2201922385564 + - 736.5213397068864 + - 737.7641290737884 + - 738.9482536995826 + - 740.0734214192357 + - 741.1393546144495 + - 742.1457902821578 + - 743.0924800994192 + - 743.9791904846869 + - 744.8057026554415 + - 745.5718126821722 + - 746.2773315386935 + - 746.9220851487844 + - 747.5059144291394 + - 748.0286753286194 + - 748.490238863795 + - 748.89049115077 + - 749.229333433282 + - 749.506682107068 + - 749.7224687404926 + - 749.8766400914329 + - 749.969158120415 + - 750.0 + - 749.969158120415 + - 749.8766400914329 + - 749.7224687404926 + - 749.506682107068 + y: + - 515.6976298823283 + - 519.6147739319612 + - 523.5270783296286 + - 527.4335777727613 + - 531.333308391076 + - 535.2253079843955 + - 539.1086162600576 + - 542.9822750698522 + - 546.8453286464312 + - 550.6968238391281 + - 554.5358103491355 + - 558.3613409639763 + - 562.1724717912136 + - 565.9682624913431 + - 569.7477765098072 + - 573.5100813080758 + - 577.2542485937366 + - 580.9793545495374 + - 584.6844800613229 + - 588.3687109448142 + - 592.0311381711695 + - 595.6708580912724 + - 599.2869726586952 + - 602.8785896512771 + - 606.444822891268 + - 609.9847924639786 + - 613.4976249348866 + - 616.9824535651434 + - 620.4384185254288 + - 623.8646671081018 + - 627.2603539375929 + - 630.6246411789872 + - 633.9566987447491 + - 637.2557044995328 + - 640.5208444630326 + - 643.7513130108196 + - 646.9463130731181 + - 650.105056331471 + - 653.2267634132442 + - 656.3106640839262 + - 659.3559974371724 + - 662.3620120825459 + - 665.3279663309129 + - 668.2531283774433 + - 671.1367764821721 + - 673.9781991480785 + - 676.7766952966367 + - 679.5315744407973 + - 682.242156855353 + - 684.9077737446524 + - 687.5277674076149 + - 690.1014914000076 + - 692.6283106939472 + - 695.1076018345823 + - 697.5387530939225 + - 699.9211646217726 + - 702.2542485937367 + - 704.5374293562559 + - 706.7701435686404 + - 708.9518403420676 + - 711.0819813755037 + - 713.160041088523 + - 715.1855067509858 + - 717.1578786095479 + - 719.0766700109658 + - 720.9414075221733 + - 722.7516310470918 + - 724.5068939401539 + - 726.2067631165049 + - 727.8508191588613 + - 729.4386564209952 + - 730.9698831278216 + - 732.4441214720629 + - 733.8610077074668 + - 735.2201922385564 + - 736.5213397068862 + - 737.7641290737884 + - 738.9482536995826 + - 740.0734214192357 + - 741.1393546144495 + - 742.1457902821578 + - 743.0924800994192 + - 743.9791904846869 + - 744.8057026554415 + - 745.5718126821722 + - 746.2773315386935 + - 746.9220851487844 + - 747.5059144291394 + - 748.0286753286194 + - 748.490238863795 + - 748.89049115077 + - 749.229333433282 + - 749.506682107068 + - 749.7224687404924 + - 749.8766400914328 + - 749.969158120415 + - 750.0 + - 749.969158120415 + - 749.8766400914329 + - 749.7224687404926 + - 749.506682107068 + - 749.229333433282 + - 748.89049115077 + - 748.490238863795 + - 748.0286753286194 + - 747.5059144291394 + - 746.9220851487844 + - 746.2773315386935 + - 745.5718126821722 + - 744.8057026554415 + - 743.9791904846869 + - 743.0924800994192 + - 742.1457902821578 + - 741.1393546144495 + - 740.0734214192358 + - 738.9482536995827 + - 737.7641290737884 + - 736.5213397068864 + - 735.2201922385564 + - 733.8610077074669 + - 732.4441214720629 + - 730.9698831278217 + - 729.4386564209954 + - 727.8508191588613 + - 726.206763116505 + - 724.506893940154 + - 722.7516310470919 + - 720.9414075221734 + - 719.0766700109658 + - 717.1578786095479 + - 715.185506750986 + - 713.160041088523 + - 711.0819813755038 + - 708.9518403420676 + - 706.7701435686405 + - 704.537429356256 + - 702.2542485937369 + - 699.9211646217726 + - 697.5387530939225 + - 695.1076018345824 + - 692.6283106939474 + - 690.1014914000077 + - 687.527767407615 + - 684.9077737446524 + - 682.242156855353 + - 679.5315744407973 + - 676.776695296637 + - 673.9781991480787 + - 671.1367764821722 + - 668.2531283774433 + - 665.3279663309131 + - 662.362012082546 + - 659.3559974371725 + - 656.3106640839262 + - 653.2267634132442 + - 650.1050563314711 + - 646.9463130731183 + - 643.7513130108197 + - 640.5208444630326 + - 637.255704499533 + - 633.9566987447491 + - 630.6246411789873 + - 627.260353937593 + - 623.8646671081018 + - 620.4384185254288 + - 616.9824535651434 + - 613.4976249348867 + - 609.9847924639788 + - 606.4448228912682 + - 602.8785896512771 + - 599.2869726586953 + - 595.6708580912725 + - 592.0311381711696 + - 588.3687109448142 + - 584.6844800613229 + - 580.9793545495374 + - 577.254248593737 + - 573.510081308076 + - 569.7477765098073 + - 565.9682624913432 + - 562.1724717912138 + - 558.3613409639764 + - 554.5358103491355 + - 550.6968238391281 + - 546.8453286464312 + - 542.9822750698524 + - 539.1086162600578 + - 535.2253079843956 + - 531.3333083910761 + - 527.4335777727614 + - 523.5270783296287 + - 519.6147739319613 + - 515.6976298823283 + - 511.7766126774107 + - 507.8526897695321 + - 503.9268293279552 + - 500.0 + - 496.0731706720448 + - 492.14731023046795 + - 488.22338732258936 + - 484.3023701176717 + - 480.38522606803883 + - 476.4729216703714 + - 472.5664222272387 + - 468.666691608924 + - 464.7746920156044 + - 460.8913837399424 + - 457.0177249301476 + - 453.15467135356886 + - 449.3031761608719 + - 445.46418965086445 + - 441.63865903602374 + - 437.8275282087863 + - 434.0317375086568 + - 430.2522234901927 + - 426.4899186919241 + - 422.74575140626325 + - 419.0206454504626 + - 415.31551993867714 + - 411.63128905518573 + - 407.9688618288306 + - 404.32914190872765 + - 400.7130273413049 + - 397.12141034872286 + - 393.55517710873187 + - 390.01520753602125 + - 386.50237506511337 + - 383.0175464348566 + - 379.5615814745712 + - 376.13533289189814 + - 372.73964606240725 + - 369.37535882101287 + - 366.04330125525087 + - 362.74429550046705 + - 359.4791555369674 + - 356.24868698918044 + - 353.05368692688165 + - 349.89494366852904 + - 346.77323658675584 + - 343.68933591607373 + - 340.6440025628276 + - 337.63798791745404 + - 334.67203366908706 + - 331.7468716225567 + - 328.86322351782786 + - 326.02180085192145 + - 323.2233047033631 + - 320.4684255592028 + - 317.75784314464715 + - 315.0922262553476 + - 312.4722325923852 + - 309.8985085999922 + - 307.3716893060527 + - 304.8923981654176 + - 302.46124690607746 + - 300.07883537822744 + - 297.74575140626314 + - 295.46257064374413 + - 293.22985643135956 + - 291.04815965793244 + - 288.9180186244963 + - 286.83995891147697 + - 284.8144932490141 + - 282.8421213904522 + - 280.92332998903413 + - 279.05859247782666 + - 277.24836895290804 + - 275.4931060598461 + - 273.7932368834951 + - 272.14918084113873 + - 270.56134357900476 + - 269.0301168721783 + - 267.5558785279372 + - 266.1389922925332 + - 264.77980776144364 + - 263.47866029311365 + - 262.2358709262116 + - 261.0517463004175 + - 259.9265785807642 + - 258.86064538555047 + - 257.85420971784225 + - 256.90751990058084 + - 256.02080951531315 + - 255.19429734455855 + - 254.42818731782785 + - 253.72266846130654 + - 253.07791485121555 + - 252.49408557086062 + - 251.97132467138056 + - 251.50976113620504 + - 251.10950884923 + - 250.77066656671798 + - 250.4933178929321 + - 250.27753125950747 + - 250.1233599085671 + - 250.03084187958484 + - 250.0 + - 250.03084187958484 + - 250.1233599085671 + - 250.27753125950747 + - 250.4933178929321 + - 250.77066656671798 + - 251.10950884923 + - 251.50976113620504 + - 251.9713246713805 + - 252.49408557086062 + - 253.07791485121555 + - 253.72266846130654 + - 254.4281873178278 + - 255.19429734455855 + - 256.02080951531315 + - 256.9075199005808 + - 257.85420971784225 + - 258.86064538555047 + - 259.9265785807642 + - 261.0517463004175 + - 262.2358709262116 + - 263.47866029311365 + - 264.77980776144364 + - 266.1389922925332 + - 267.5558785279372 + - 269.0301168721783 + - 270.56134357900476 + - 272.14918084113873 + - 273.7932368834951 + - 275.4931060598461 + - 277.24836895290804 + - 279.0585924778266 + - 280.9233299890341 + - 282.8421213904522 + - 284.8144932490141 + - 286.83995891147697 + - 288.91801862449626 + - 291.0481596579324 + - 293.22985643135956 + - 295.46257064374413 + - 297.74575140626314 + - 300.0788353782273 + - 302.4612469060774 + - 304.8923981654176 + - 307.3716893060527 + - 309.8985085999922 + - 312.4722325923851 + - 315.09222625534755 + - 317.7578431446471 + - 320.4684255592028 + - 323.2233047033631 + - 326.0218008519214 + - 328.8632235178278 + - 331.7468716225567 + - 334.67203366908706 + - 337.63798791745404 + - 340.64400256282755 + - 343.6893359160737 + - 346.77323658675584 + - 349.89494366852904 + - 353.0536869268817 + - 356.2486869891803 + - 359.47915553696737 + - 362.74429550046705 + - 366.04330125525087 + - 369.3753588210128 + - 372.7396460624072 + - 376.1353328918981 + - 379.5615814745712 + - 383.0175464348566 + - 386.5023750651133 + - 390.0152075360212 + - 393.5551771087318 + - 397.1214103487228 + - 400.7130273413049 + - 404.32914190872754 + - 407.96886182883054 + - 411.6312890551857 + - 415.31551993867714 + - 419.0206454504626 + - 422.74575140626314 + - 426.489918691924 + - 430.25222349019265 + - 434.03173750865676 + - 437.8275282087863 + - 441.6386590360236 + - 445.4641896508644 + - 449.3031761608719 + - 453.15467135356886 + - 457.0177249301476 + - 460.8913837399423 + - 464.77469201560433 + - 468.66669160892394 + - 472.56642222723866 + - 476.4729216703714 + - 480.3852260680387 + - 484.3023701176716 + - 488.22338732258936 + - 492.14731023046795 + - 496.0731706720448 + - 500.0 + - 503.926829327955 + - 507.8526897695321 + - 511.7766126774107 + - 515.6976298823283 + - x: + - 2624.7224687404923 + - 2624.5066821070677 + - 2624.229333433282 + - 2623.8904911507702 + - 2623.4902388637947 + - 2623.0286753286196 + - 2622.5059144291395 + - 2621.9220851487844 + - 2621.2773315386935 + - 2620.571812682172 + - 2619.805702655441 + - 2618.979190484687 + - 2618.0924800994194 + - 2617.1457902821576 + - 2616.1393546144495 + - 2615.0734214192357 + - 2613.9482536995824 + - 2612.7641290737884 + - 2611.5213397068865 + - 2610.220192238556 + - 2608.861007707467 + - 2607.4441214720628 + - 2605.9698831278215 + - 2604.4386564209954 + - 2602.850819158861 + - 2601.206763116505 + - 2599.506893940154 + - 2597.751631047092 + - 2595.941407522173 + - 2594.076670010966 + - 2592.157878609548 + - 2590.185506750986 + - 2588.160041088523 + - 2586.081981375504 + - 2583.951840342068 + - 2581.770143568641 + - 2579.537429356256 + - 2577.254248593737 + - 2574.9211646217723 + - 2572.5387530939224 + - 2570.1076018345825 + - 2567.6283106939477 + - 2565.1014914000075 + - 2562.527767407615 + - 2559.9077737446523 + - 2557.242156855353 + - 2554.5315744407976 + - 2551.776695296637 + - 2548.9781991480786 + - 2546.136776482172 + - 2543.2531283774433 + - 2540.327966330913 + - 2537.362012082546 + - 2534.3559974371724 + - 2531.3106640839264 + - 2528.226763413244 + - 2525.105056331471 + - 2521.9463130731183 + - 2518.7513130108196 + - 2515.520844463033 + - 2512.255704499533 + - 2508.9566987447492 + - 2505.6246411789875 + - 2502.2603539375928 + - 2498.864667108102 + - 2495.438418525429 + - 2491.9824535651433 + - 2488.4976249348865 + - 2484.984792463979 + - 2481.4448228912684 + - 2477.8785896512773 + - 2474.286972658695 + - 2470.6708580912723 + - 2467.0311381711695 + - 2463.3687109448147 + - 2459.684480061323 + - 2455.979354549537 + - 2452.2542485937365 + - 2448.510081308076 + - 2444.747776509807 + - 2440.968262491343 + - 2437.1724717912134 + - 2433.361340963976 + - 2429.5358103491358 + - 2425.6968238391282 + - 2421.8453286464314 + - 2417.9822750698527 + - 2414.1086162600577 + - 2410.225307984396 + - 2406.3333083910757 + - 2402.4335777727615 + - 2398.5270783296287 + - 2394.6147739319613 + - 2390.6976298823283 + - 2386.776612677411 + - 2382.8526897695324 + - 2378.9268293279556 + - 2375.0 + - 2371.073170672045 + - 2367.147310230468 + - 2363.223387322589 + - 2359.3023701176717 + - 2355.385226068039 + - 2351.4729216703713 + - 2347.566422227239 + - 2343.6666916089243 + - 2339.7746920156046 + - 2335.8913837399423 + - 2332.0177249301473 + - 2328.1546713535686 + - 2324.303176160872 + - 2320.4641896508642 + - 2316.638659036024 + - 2312.8275282087866 + - 2309.031737508657 + - 2305.252223490193 + - 2301.489918691924 + - 2297.745751406263 + - 2294.020645450463 + - 2290.315519938677 + - 2286.631289055186 + - 2282.9688618288305 + - 2279.3291419087277 + - 2275.713027341305 + - 2272.1214103487227 + - 2268.5551771087316 + - 2265.015207536021 + - 2261.5023750651135 + - 2258.0175464348567 + - 2254.561581474571 + - 2251.135332891898 + - 2247.7396460624072 + - 2244.3753588210125 + - 2241.0433012552508 + - 2237.744295500467 + - 2234.4791555369675 + - 2231.2486869891804 + - 2228.0536869268817 + - 2224.894943668529 + - 2221.773236586756 + - 2218.6893359160736 + - 2215.6440025628276 + - 2212.637987917454 + - 2209.672033669087 + - 2206.7468716225567 + - 2203.863223517828 + - 2201.0218008519214 + - 2198.223304703363 + - 2195.468425559203 + - 2192.7578431446473 + - 2190.0922262553477 + - 2187.472232592385 + - 2184.8985085999925 + - 2182.3716893060528 + - 2179.8923981654175 + - 2177.4612469060776 + - 2175.0788353782277 + - 2172.7457514062635 + - 2170.4625706437446 + - 2168.229856431359 + - 2166.0481596579325 + - 2163.918018624496 + - 2161.839958911477 + - 2159.814493249014 + - 2157.8421213904526 + - 2155.923329989034 + - 2154.058592477827 + - 2152.248368952908 + - 2150.493106059846 + - 2148.793236883495 + - 2147.149180841139 + - 2145.5613435790046 + - 2144.0301168721785 + - 2142.5558785279372 + - 2141.138992292533 + - 2139.779807761444 + - 2138.4786602931135 + - 2137.2358709262116 + - 2136.0517463004176 + - 2134.9265785807643 + - 2133.8606453855505 + - 2132.8542097178424 + - 2131.9075199005806 + - 2131.020809515313 + - 2130.194297344559 + - 2129.428187317828 + - 2128.7226684613065 + - 2128.0779148512156 + - 2127.4940855708605 + - 2126.9713246713804 + - 2126.5097611362053 + - 2126.1095088492298 + - 2125.770666566718 + - 2125.4933178929323 + - 2125.2775312595077 + - 2125.123359908567 + - 2125.030841879585 + - 2125.0 + - 2125.030841879585 + - 2125.123359908567 + - 2125.2775312595077 + - 2125.4933178929323 + - 2125.770666566718 + - 2126.1095088492298 + - 2126.5097611362053 + - 2126.9713246713804 + - 2127.4940855708605 + - 2128.0779148512156 + - 2128.7226684613065 + - 2129.428187317828 + - 2130.194297344559 + - 2131.020809515313 + - 2131.9075199005806 + - 2132.8542097178424 + - 2133.8606453855505 + - 2134.9265785807643 + - 2136.0517463004176 + - 2137.2358709262116 + - 2138.4786602931135 + - 2139.779807761444 + - 2141.138992292533 + - 2142.5558785279372 + - 2144.0301168721785 + - 2145.5613435790046 + - 2147.149180841139 + - 2148.793236883495 + - 2150.493106059846 + - 2152.248368952908 + - 2154.058592477827 + - 2155.923329989034 + - 2157.842121390452 + - 2159.814493249014 + - 2161.839958911477 + - 2163.918018624496 + - 2166.0481596579325 + - 2168.229856431359 + - 2170.462570643744 + - 2172.7457514062635 + - 2175.0788353782277 + - 2177.4612469060776 + - 2179.8923981654175 + - 2182.3716893060523 + - 2184.8985085999925 + - 2187.472232592385 + - 2190.0922262553477 + - 2192.7578431446473 + - 2195.468425559203 + - 2198.223304703363 + - 2201.0218008519214 + - 2203.863223517828 + - 2206.7468716225567 + - 2209.672033669087 + - 2212.637987917454 + - 2215.6440025628276 + - 2218.6893359160736 + - 2221.773236586756 + - 2224.894943668529 + - 2228.0536869268817 + - 2231.2486869891804 + - 2234.479155536967 + - 2237.744295500467 + - 2241.0433012552508 + - 2244.3753588210125 + - 2247.7396460624072 + - 2251.135332891898 + - 2254.561581474571 + - 2258.0175464348567 + - 2261.5023750651135 + - 2265.015207536021 + - 2268.5551771087316 + - 2272.1214103487227 + - 2275.713027341305 + - 2279.3291419087277 + - 2282.9688618288305 + - 2286.631289055186 + - 2290.315519938677 + - 2294.020645450463 + - 2297.745751406263 + - 2301.489918691924 + - 2305.252223490193 + - 2309.031737508657 + - 2312.8275282087866 + - 2316.638659036024 + - 2320.4641896508642 + - 2324.3031761608718 + - 2328.1546713535686 + - 2332.0177249301473 + - 2335.8913837399423 + - 2339.774692015604 + - 2343.666691608924 + - 2347.5664222272385 + - 2351.4729216703713 + - 2355.3852260680387 + - 2359.3023701176717 + - 2363.223387322589 + - 2367.147310230468 + - 2371.073170672045 + - 2375.0 + - 2378.926829327955 + - 2382.852689769532 + - 2386.776612677411 + - 2390.6976298823283 + - 2394.614773931961 + - 2398.5270783296287 + - 2402.4335777727615 + - 2406.333308391076 + - 2410.225307984396 + - 2414.1086162600577 + - 2417.9822750698527 + - 2421.8453286464314 + - 2425.6968238391282 + - 2429.5358103491358 + - 2433.361340963976 + - 2437.1724717912134 + - 2440.968262491343 + - 2444.747776509807 + - 2448.510081308076 + - 2452.2542485937365 + - 2455.979354549537 + - 2459.684480061323 + - 2463.368710944814 + - 2467.0311381711695 + - 2470.6708580912723 + - 2474.286972658695 + - 2477.8785896512773 + - 2481.4448228912684 + - 2484.984792463979 + - 2488.4976249348865 + - 2491.9824535651433 + - 2495.4384185254285 + - 2498.864667108102 + - 2502.2603539375928 + - 2505.6246411789875 + - 2508.9566987447492 + - 2512.255704499533 + - 2515.520844463033 + - 2518.7513130108196 + - 2521.9463130731183 + - 2525.105056331471 + - 2528.226763413244 + - 2531.3106640839264 + - 2534.3559974371724 + - 2537.362012082546 + - 2540.327966330913 + - 2543.2531283774433 + - 2546.136776482172 + - 2548.9781991480786 + - 2551.776695296637 + - 2554.531574440797 + - 2557.2421568553527 + - 2559.9077737446523 + - 2562.527767407615 + - 2565.1014914000075 + - 2567.6283106939477 + - 2570.1076018345825 + - 2572.5387530939224 + - 2574.9211646217723 + - 2577.2542485937365 + - 2579.5374293562554 + - 2581.770143568641 + - 2583.9518403420675 + - 2586.081981375504 + - 2588.160041088523 + - 2590.185506750986 + - 2592.1578786095474 + - 2594.076670010966 + - 2595.941407522173 + - 2597.751631047092 + - 2599.506893940154 + - 2601.206763116505 + - 2602.850819158861 + - 2604.4386564209954 + - 2605.9698831278215 + - 2607.4441214720628 + - 2608.861007707467 + - 2610.220192238556 + - 2611.5213397068865 + - 2612.7641290737884 + - 2613.9482536995824 + - 2615.0734214192357 + - 2616.1393546144495 + - 2617.1457902821576 + - 2618.0924800994194 + - 2618.979190484687 + - 2619.805702655441 + - 2620.571812682172 + - 2621.2773315386935 + - 2621.9220851487844 + - 2622.5059144291395 + - 2623.0286753286196 + - 2623.4902388637947 + - 2623.8904911507702 + - 2624.229333433282 + - 2624.5066821070677 + - 2624.7224687404923 + - 2624.876640091433 + - 2624.969158120415 + - 2625.0 + - 2624.969158120415 + - 2624.876640091433 + - 2624.7224687404923 + y: + - 511.7766126774107 + - 515.6976298823283 + - 519.6147739319612 + - 523.5270783296286 + - 527.4335777727613 + - 531.333308391076 + - 535.2253079843955 + - 539.1086162600576 + - 542.9822750698522 + - 546.8453286464312 + - 550.6968238391281 + - 554.5358103491355 + - 558.3613409639763 + - 562.1724717912136 + - 565.9682624913431 + - 569.7477765098072 + - 573.5100813080758 + - 577.2542485937366 + - 580.9793545495374 + - 584.6844800613229 + - 588.3687109448142 + - 592.0311381711695 + - 595.6708580912724 + - 599.2869726586952 + - 602.8785896512771 + - 606.444822891268 + - 609.9847924639786 + - 613.4976249348866 + - 616.9824535651434 + - 620.4384185254288 + - 623.8646671081018 + - 627.2603539375929 + - 630.6246411789872 + - 633.9566987447491 + - 637.2557044995328 + - 640.5208444630326 + - 643.7513130108196 + - 646.9463130731181 + - 650.105056331471 + - 653.2267634132442 + - 656.3106640839262 + - 659.3559974371724 + - 662.3620120825459 + - 665.3279663309129 + - 668.2531283774433 + - 671.1367764821721 + - 673.9781991480785 + - 676.7766952966367 + - 679.5315744407973 + - 682.242156855353 + - 684.9077737446524 + - 687.5277674076149 + - 690.1014914000076 + - 692.6283106939472 + - 695.1076018345823 + - 697.5387530939225 + - 699.9211646217726 + - 702.2542485937367 + - 704.5374293562559 + - 706.7701435686404 + - 708.9518403420676 + - 711.0819813755037 + - 713.160041088523 + - 715.1855067509858 + - 717.1578786095479 + - 719.0766700109658 + - 720.9414075221733 + - 722.7516310470918 + - 724.5068939401539 + - 726.2067631165049 + - 727.8508191588613 + - 729.4386564209952 + - 730.9698831278216 + - 732.4441214720629 + - 733.8610077074668 + - 735.2201922385564 + - 736.5213397068862 + - 737.7641290737884 + - 738.9482536995826 + - 740.0734214192357 + - 741.1393546144495 + - 742.1457902821578 + - 743.0924800994192 + - 743.9791904846869 + - 744.8057026554415 + - 745.5718126821722 + - 746.2773315386935 + - 746.9220851487844 + - 747.5059144291394 + - 748.0286753286194 + - 748.490238863795 + - 748.89049115077 + - 749.229333433282 + - 749.506682107068 + - 749.7224687404924 + - 749.8766400914328 + - 749.969158120415 + - 750.0 + - 749.969158120415 + - 749.8766400914329 + - 749.7224687404926 + - 749.506682107068 + - 749.229333433282 + - 748.89049115077 + - 748.490238863795 + - 748.0286753286194 + - 747.5059144291394 + - 746.9220851487844 + - 746.2773315386935 + - 745.5718126821722 + - 744.8057026554415 + - 743.9791904846869 + - 743.0924800994192 + - 742.1457902821578 + - 741.1393546144495 + - 740.0734214192358 + - 738.9482536995827 + - 737.7641290737884 + - 736.5213397068864 + - 735.2201922385564 + - 733.8610077074669 + - 732.4441214720629 + - 730.9698831278217 + - 729.4386564209954 + - 727.8508191588613 + - 726.206763116505 + - 724.506893940154 + - 722.7516310470919 + - 720.9414075221734 + - 719.0766700109658 + - 717.1578786095479 + - 715.185506750986 + - 713.160041088523 + - 711.0819813755038 + - 708.9518403420676 + - 706.7701435686405 + - 704.537429356256 + - 702.2542485937369 + - 699.9211646217726 + - 697.5387530939225 + - 695.1076018345824 + - 692.6283106939474 + - 690.1014914000077 + - 687.527767407615 + - 684.9077737446524 + - 682.242156855353 + - 679.5315744407973 + - 676.776695296637 + - 673.9781991480787 + - 671.1367764821722 + - 668.2531283774433 + - 665.3279663309131 + - 662.362012082546 + - 659.3559974371725 + - 656.3106640839262 + - 653.2267634132442 + - 650.1050563314711 + - 646.9463130731183 + - 643.7513130108197 + - 640.5208444630326 + - 637.255704499533 + - 633.9566987447491 + - 630.6246411789873 + - 627.260353937593 + - 623.8646671081018 + - 620.4384185254288 + - 616.9824535651434 + - 613.4976249348867 + - 609.9847924639788 + - 606.4448228912682 + - 602.8785896512771 + - 599.2869726586953 + - 595.6708580912725 + - 592.0311381711696 + - 588.3687109448142 + - 584.6844800613229 + - 580.9793545495374 + - 577.254248593737 + - 573.510081308076 + - 569.7477765098073 + - 565.9682624913432 + - 562.1724717912138 + - 558.3613409639764 + - 554.5358103491355 + - 550.6968238391281 + - 546.8453286464312 + - 542.9822750698524 + - 539.1086162600578 + - 535.2253079843956 + - 531.3333083910761 + - 527.4335777727614 + - 523.5270783296287 + - 519.6147739319613 + - 515.6976298823283 + - 511.7766126774107 + - 507.8526897695321 + - 503.9268293279552 + - 500.0 + - 496.0731706720448 + - 492.14731023046795 + - 488.22338732258936 + - 484.3023701176717 + - 480.38522606803883 + - 476.4729216703714 + - 472.5664222272387 + - 468.666691608924 + - 464.7746920156044 + - 460.8913837399424 + - 457.0177249301476 + - 453.15467135356886 + - 449.3031761608719 + - 445.46418965086445 + - 441.63865903602374 + - 437.8275282087863 + - 434.0317375086568 + - 430.2522234901927 + - 426.4899186919241 + - 422.74575140626325 + - 419.0206454504626 + - 415.31551993867714 + - 411.63128905518573 + - 407.9688618288306 + - 404.32914190872765 + - 400.7130273413049 + - 397.12141034872286 + - 393.55517710873187 + - 390.01520753602125 + - 386.50237506511337 + - 383.0175464348566 + - 379.5615814745712 + - 376.13533289189814 + - 372.73964606240725 + - 369.37535882101287 + - 366.04330125525087 + - 362.74429550046705 + - 359.4791555369674 + - 356.24868698918044 + - 353.05368692688165 + - 349.89494366852904 + - 346.77323658675584 + - 343.68933591607373 + - 340.6440025628276 + - 337.63798791745404 + - 334.67203366908706 + - 331.7468716225567 + - 328.86322351782786 + - 326.02180085192145 + - 323.2233047033631 + - 320.4684255592028 + - 317.75784314464715 + - 315.0922262553476 + - 312.4722325923852 + - 309.8985085999922 + - 307.3716893060527 + - 304.8923981654176 + - 302.46124690607746 + - 300.07883537822744 + - 297.74575140626314 + - 295.46257064374413 + - 293.22985643135956 + - 291.04815965793244 + - 288.9180186244963 + - 286.83995891147697 + - 284.8144932490141 + - 282.8421213904522 + - 280.92332998903413 + - 279.05859247782666 + - 277.24836895290804 + - 275.4931060598461 + - 273.7932368834951 + - 272.14918084113873 + - 270.56134357900476 + - 269.0301168721783 + - 267.5558785279372 + - 266.1389922925332 + - 264.77980776144364 + - 263.47866029311365 + - 262.2358709262116 + - 261.0517463004175 + - 259.9265785807642 + - 258.86064538555047 + - 257.85420971784225 + - 256.90751990058084 + - 256.02080951531315 + - 255.19429734455855 + - 254.42818731782785 + - 253.72266846130654 + - 253.07791485121555 + - 252.49408557086062 + - 251.97132467138056 + - 251.50976113620504 + - 251.10950884923 + - 250.77066656671798 + - 250.4933178929321 + - 250.27753125950747 + - 250.1233599085671 + - 250.03084187958484 + - 250.0 + - 250.03084187958484 + - 250.1233599085671 + - 250.27753125950747 + - 250.4933178929321 + - 250.77066656671798 + - 251.10950884923 + - 251.50976113620504 + - 251.9713246713805 + - 252.49408557086062 + - 253.07791485121555 + - 253.72266846130654 + - 254.4281873178278 + - 255.19429734455855 + - 256.02080951531315 + - 256.9075199005808 + - 257.85420971784225 + - 258.86064538555047 + - 259.9265785807642 + - 261.0517463004175 + - 262.2358709262116 + - 263.47866029311365 + - 264.77980776144364 + - 266.1389922925332 + - 267.5558785279372 + - 269.0301168721783 + - 270.56134357900476 + - 272.14918084113873 + - 273.7932368834951 + - 275.4931060598461 + - 277.24836895290804 + - 279.0585924778266 + - 280.9233299890341 + - 282.8421213904522 + - 284.8144932490141 + - 286.83995891147697 + - 288.91801862449626 + - 291.0481596579324 + - 293.22985643135956 + - 295.46257064374413 + - 297.74575140626314 + - 300.0788353782273 + - 302.4612469060774 + - 304.8923981654176 + - 307.3716893060527 + - 309.8985085999922 + - 312.4722325923851 + - 315.09222625534755 + - 317.7578431446471 + - 320.4684255592028 + - 323.2233047033631 + - 326.0218008519214 + - 328.8632235178278 + - 331.7468716225567 + - 334.67203366908706 + - 337.63798791745404 + - 340.64400256282755 + - 343.6893359160737 + - 346.77323658675584 + - 349.89494366852904 + - 353.0536869268817 + - 356.2486869891803 + - 359.47915553696737 + - 362.74429550046705 + - 366.04330125525087 + - 369.3753588210128 + - 372.7396460624072 + - 376.1353328918981 + - 379.5615814745712 + - 383.0175464348566 + - 386.5023750651133 + - 390.0152075360212 + - 393.5551771087318 + - 397.1214103487228 + - 400.7130273413049 + - 404.32914190872754 + - 407.96886182883054 + - 411.6312890551857 + - 415.31551993867714 + - 419.0206454504626 + - 422.74575140626314 + - 426.489918691924 + - 430.25222349019265 + - 434.03173750865676 + - 437.8275282087863 + - 441.6386590360236 + - 445.4641896508644 + - 449.3031761608719 + - 453.15467135356886 + - 457.0177249301476 + - 460.8913837399423 + - 464.77469201560433 + - 468.66669160892394 + - 472.56642222723866 + - 476.4729216703714 + - 480.3852260680387 + - 484.3023701176716 + - 488.22338732258936 + - 492.14731023046795 + - 496.0731706720448 + - 500.0 + - 503.926829327955 + - 507.8526897695321 + - 511.7766126774107 + energy_resource: + name: Example energy resource + wind_resource: !include ../../../examples/data/windIO-plant_wind-resource_wrg-example.yaml +wind_farm: + name: LogoFarm + layouts: + coordinates: + x: [ + -2500.0, -1250.0, 0.0, 1250.0, 2500.0, + -2500.0, -1250.0, 0.0, 1250.0, 2500.0, + -2500.0, -1250.0, 0.0, 1250.0, 2500.0, + -2500.0, -1250.0, 0.0, 1250.0, 2500.0, + -2500.0, -1250.0, 0.0, 1250.0, 2500.0 + ] + y: [ + -2500.0, -2500.0, -2500.0, -2500.0, -2500.0, + -1250.0, -1250.0, -1250.0, -1250.0, -1250.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 1250.0, 1250.0, 1250.0, 1250.0, 1250.0, + 2500.0, 2500.0, 2500.0, 2500.0, 2500.0 + ] + turbine: !include ../../../examples/data/windIO-plant_turbine_IEA-3.4MW-130m-RWT.yaml + electrical_substations: + - electrical_substation: + coordinates: + x: [1500.0] + y: [750.0] \ No newline at end of file diff --git a/assets/logomaker/logomaker.ipynb b/assets/logomaker/logomaker.ipynb new file mode 100644 index 00000000..da6ab852 --- /dev/null +++ b/assets/logomaker/logomaker.ipynb @@ -0,0 +1,371 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "48df93d4", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: :488\n", + "numpy.ndarray size changed, may indicate binary incompatibility. Expected 16 from C header, got 96 from PyObject" + ] + } + ], + "source": [ + "from pathlib import Path\n", + "import yaml\n", + "\n", + "import shapely\n", + "from shapely.geometry import Point, Polygon\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import seaborn as sns\n", + "\n", + "from ard.utils.io import load_yaml\n", + "from ard.api import set_up_ard_model\n", + "from ard.viz.layout import plot_layout\n", + "\n", + "plt.style.use(\n", + " [\n", + " # \"dark_background\",\n", + " \"https://raw.githubusercontent.com/cfrontin/tools_cvf/main/tools_cvf/stylesheet_cvf.mplstyle\",\n", + " \"https://raw.githubusercontent.com/cfrontin/tools_cvf/main/tools_cvf/stylesheet_nrel.mplstyle\",\n", + " ]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "6b9144dc", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "DeprecationWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/shapely/decorators.py:173\n", + "The 'resolution' argument is deprecated. Use 'quad_segs' instead" + ] + } + ], + "source": [ + "# generate the ard shape with shapely\n", + "\n", + "# the A\n", + "center_a = (0.5, 0.5)\n", + "outer_radius_a = 0.5\n", + "inner_radius_a = 0.25\n", + "\n", + "torus_a = (\n", + " Point(center_a)\n", + " .buffer(outer_radius_a, resolution=100)\n", + " .difference(Point(center_a).buffer(inner_radius_a, resolution=100))\n", + ")\n", + "rectangle_a = Polygon(\n", + " [(0.75, 0.0), (1.0, 0.0), (1.0, 1.0), (0.75, 1.0)],\n", + ")\n", + "shape_a = torus_a.union(rectangle_a)\n", + "\n", + "# the R\n", + "# center_r = (center_a[0]+0.75, center_a[1])\n", + "center_r = (center_a[0] + 0.9375, center_a[1])\n", + "outer_radius_r = 0.5\n", + "inner_radius_r = 0.25\n", + "torus_r = (\n", + " Point(center_r)\n", + " .buffer(outer_radius_r, resolution=100)\n", + " .difference(Point(center_r).buffer(inner_radius_r, resolution=100))\n", + ")\n", + "shape_r = torus_r.difference(\n", + " Polygon(\n", + " [\n", + " (center_r[0] - outer_radius_r, center_r[1]),\n", + " (center_r[0] + outer_radius_r, center_r[1]),\n", + " (center_r[0] + outer_radius_r, center_r[1] - outer_radius_r),\n", + " (center_r[0] - outer_radius_r, center_r[1] - outer_radius_r),\n", + " ]\n", + " )\n", + ").union(\n", + " Polygon(\n", + " [\n", + " (center_r[0] - outer_radius_r, center_r[1] + outer_radius_r),\n", + " (center_r[0] - inner_radius_r, center_r[1] + outer_radius_r),\n", + " (center_r[0] - inner_radius_r, center_r[1] - outer_radius_r),\n", + " (center_r[0] - outer_radius_r, center_r[1] - outer_radius_r),\n", + " ]\n", + " )\n", + ")\n", + "\n", + "# the D\n", + "# center_d = (center_r[0]+0.75, center_r[1])\n", + "center_d = (center_r[0] + 0.9375, center_r[1])\n", + "outer_radius_d = 0.5\n", + "inner_radius_d = 0.25\n", + "torus_d = (\n", + " Point(center_d)\n", + " .buffer(outer_radius_d, resolution=100)\n", + " .difference(Point(center_d).buffer(inner_radius_d, resolution=100))\n", + ")\n", + "shape_d = torus_d.union(\n", + " Polygon(\n", + " [\n", + " (\n", + " center_d[0] + outer_radius_d,\n", + " center_d[1] + outer_radius_d + inner_radius_d,\n", + " ),\n", + " (\n", + " center_d[0] + inner_radius_d,\n", + " center_d[1] + outer_radius_d + inner_radius_d,\n", + " ),\n", + " (center_d[0] + inner_radius_d, center_d[1] - outer_radius_d),\n", + " (center_d[0] + outer_radius_d, center_d[1] - outer_radius_d),\n", + " ]\n", + " )\n", + ")\n", + "\n", + "# the ARD\n", + "shape_ard = shape_a.union(shape_r).union(shape_d)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "6ccf1484", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "if True: # set true to do a rudimentary logo plot\n", + " # plot A\n", + " plt.fill(shape_a.exterior.xy[0], shape_a.exterior.xy[1])\n", + " for interior in shape_a.interiors:\n", + " plt.fill(interior.xy[0], interior.xy[1])\n", + " # plot D\n", + " plt.fill(shape_d.exterior.xy[0], shape_d.exterior.xy[1])\n", + " for interior in shape_d.interiors:\n", + " plt.fill(interior.xy[0], interior.xy[1])\n", + " # plot R\n", + " plt.fill(shape_r.exterior.xy[0], shape_r.exterior.xy[1])\n", + " for interior in shape_r.interiors:\n", + " plt.fill(interior.xy[0], interior.xy[1])\n", + "\n", + " plt.axis(\"equal\");" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "153e55af", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAGFCAYAAABg2vAPAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAQC1JREFUeJzt3Qd4nVX9B/Bv1k1ys272Hk3SvfemQMsqyEYtyJChbAQVQYYgin8RREBEEVBEEFkCpQVKaRmFtnTvtGnS7D1u1r3JvbnJ//mdNC2jLWmb5L7vPd/P8+SpgrbvfXvO737f857h193d3Q0iIiLSlr+3L4CIiIi8i2GAiIhIcwwDREREmmMYICIi0hzDABERkeYYBoiIiDTHMEBERKQ5hgEiIiLNMQwQERFpjmGAiIhIcwwDREREmmMYICIi0hzDABERkeYYBoiIiDTHMEBERKQ5hgEiIiLNMQwQERFpjmGAiIhIcwwDREREmmMYICIi0hzDABERkeYYBoiIiDTHMEBERKQ5hgEiIiLNMQwQERFpjmGAiIhIcwwDREREmmMYICIi0hzDABERkeYYBoiIiDTHMEBERKQ5hgEiIiLNMQwQERFpjmGAiIhIcwwDREREmmMYICIi0hzDABERkeYYBoiIiDTHMEBERKQ5hgEiIiLNMQwQERFpjmGAiIhIcwwDREREmmMYICIi0hzDABERkeYYBoiIiDTHMEBERKQ5hgEiIiLNMQwQERFpjmGAiIhIcwwDREREmmMYICIi0hzDABERkeYYBoiIiDTHMEBERKQ5hgEiIiLNMQwQERFpjmGAiIhIcwwDREREmmMYICIi0hzDABERkeYYBoiIiDTHMEBERKQ5hgEiIiLNMQwQERFpjmGAiIhIcwwDREREmmMYICIi0hzDABERkeYYBoiIiDTHMEBERKQ5hgEiIiLNMQwQERFpjmGAiIhIcwwDREREmmMYICIi0hzDABERkeYYBoiIiDTHMEBERKQ5hgEiIiLNMQwQERFpjmGAiIhIcwwDREREmmMYICIi0hzDABERkeYYBoiIiDTHMEBERKQ5hgEiIiLNMQwQERFpjmGAiIhIcwwDREREmmMYICIi0hzDABERkeYYBoiIiDQX6O0LICIiGmgOlwcPf1qGDk83jGhYXCgun5TotT+fYYCIiHze0+uq8KsPS5AUHgSjcXm60eDsxJzMSOTEhnrlGhgGiIjI53m6uhFm8cfT5w2F0eyobsOdy4rh6fbeqAXnDBAREWmOYYCIiEhzDANERESaYxggIiLSHMMAERGR5hgGiIiINMcwQEREpDmGASIiIs0xDBAREWmOYYCIiEhzDANERESaYxggIiLSHMMAERGR5hgGiIiINMcwQEREpDmGASIiIs0xDBAREWmOYYCIiEhzDANERESaYxggIiLSHMMAERGR5hgGiIiINMcwQEREpDmGASIiIs0xDBAREWmOYYCIiEhzDANERESaYxggIiLSHMMAERGR5hgGiIiINMcwQEREpDmGASIiIs0xDBAREWmOYYCIiEhzDANERESaYxggIiLSXKC3L4COrLXDg3qHG/b2TrR0eOBwd8Hl6YKnq+ffB/gDwQH+sFr8EWEJhC00AHHWIFgtAV67Zk9XN97d03DgGgkICvDD6UOj4e/v57VraHP1tKVGZ09bcrq70HGIthQa5I+I4ABEhwYi1hqEMC+2JTImh8uDOqlLTg9aXJ1wuL7ZlixSl/a3JVtIT1sKD2ZbMiqGAS+TL878Oid21jiwu86JvfVOFDa0o7SpA5UtLvXlfyzCLP5IibAgIyoY2bGhyIkJwfD4UIxJDEN2dMiAfik99nk5frp034D9/mb1l7NzcN2MlAFtSwUNTuyo/lpbsve0pbZjbUtB/kiOsCDdFozsmBDkxoZieFwoRidakRMTigAvBhwaGF1d3ShsbMf26jbsrnWioKEdBfVOVZcqpC25jq0tWXvbUtRX29KoBCuGxrEteRPDwCArbmzHquJmrC5pxrqyFmyrcsDZ2dOxwi0BSIm0ICEsCGOTrJg3JEol6qiQANWJ5Gk/OMAPgf5+8Pfr6TRd3d1wd3Wjo7MbDnfPyEFTeyfs7R40ONyobXNjZaEdL24+GCzk9xqfHIZpaRGYmRGJOZmRSI0K7rfPWO/oRGJ4EB4+Y0i//Z5md9PiAnVf+pN8ya8qbsLqkhZ8odpS24G/43AJg5HBiA8LUl/aJ+xvS5EhAerLPTQoACGB32xLnV3daO/shtPtUeGhud2jRqVkRKHO0YlPi5rx3621aHUdbEtjk3rbUgTmZEap0EDmUt7UcaAuSVvaUnmwLcnfcW9dki/tOVnSlgIQFRLYU5eCAhAc6IegQ7SlDk+3GkXoqUs9banB6UZdW6f6817ZVodWl0f9f0IDpS1ZMfVLdSkzOsSr90UnDAMDTL6QP9hrx/v5jVi+txGlTS71z9MiLSoVXzw+HlnRwciwhagO5re/M/W37u5uNDg7UWLvwL7GdpX0pSM+9nmF+vcyWrAg14bThkarXyNDjq9pSMCXYkE9eovk8bA7O/HB3kYsy7ertlRk71D/PFXaUkwIvjcuHkOkLUUFqyH+gWxL8qqhpEnaUgcK6514Y0cdnljd05aybMFYkBuNU4facEpuNGyhbAdG09zeieUH6pJdjQIIeWrPjQ3Bd8fGYUh0CDJswYgZ4LYkDy4l9nYUNXaouvTWzno8uaZS/fv0KItqS1KXTsm1IcYaNCDXQQwDA5ayX9tepwrkZ8XN8HQDmbZgTEgOx6UTwzAqIRSRwYN766Uzyzs7+ZmYEn7gn0tR31XjwNbqNizd3YCn11WphC9PkheMjsX5o+OQGGEZ1GulgyqbXXh9R09b+mRfk2pLUqDHJYZh0fh49aQ22KFL2pIUZfmRNt1LRqTkdZeMdi3b24hn1lepkYe5WZGqHV0wOg7JkWxL3lLd4lLt6PUd9fh4X5N6cpeHknHJYerLf2SCVYXIwW5L8mdGh4Zj/JfaUnOHtCWnGu1aUWDHPzZUI8APmJ3Z05YuHBPXr6OZxDDQr0lbnrT/takaq4qaVRGUofgfT0vGlNRwxIUZM9FKR5yVGal+RFWLC+vLW9VQoQxt37i4ACdn23DZpATVCTmZbOC1dHTi9e31qi19VNgEf39gfFI4rpmapNpSQrgxv1AllMjwrvyImtbettSKnywpwM2LC3BidhQum5ioijknkw3OpFEJAP/aWIMVhXbI87281rlycqJqS0kGDfrysDQjPUL9iLo294G69LN39+HWJYWYkxWp2pIEmeMdySSGgeMm7/2fWlup3qPK7OwJyWG4eVaKasRm/OKU4nDWiBj1IwHn85IWfFLUhMte3YPr3yrADybE4/oZKaqgUP/aVNGq2tJLm2vUO1a5xzfMSMasjEhTfnFKaFk4PEb9yOoFeR/9SVEzrnx9D258ey8unpCA66Ynf2WkivrH1so2PLW2Av/eLPM7PBiTaMW105IxKzNi0Ecl+4M8TJ0+LFr9yOdZW9qiRjd+9L983PJOgXpFJm1J5hvQsTFfqzCATk83Xttei0c/K1dPPTJZ7rxRsZifYzPsCMCxkLTd2wFlxGB5gR2vbq/DX7+owglZkbhtThq+MyLGq8vlzE5WALy5sx5/XFWmgpdM+PvOyBgsyLEZdgTgWMjyslOHyjyCaDViIG1JPvff11VhVkaEakvnjorlbPLjXAGwOK9BtSUJXbHWQCwcHq3aklFHAI6FTLSWWis/MmLwYYFdveKUVwnT0sJx6+xUXDgmHoHyXoH6jGHgKHR0dqkG9/uPS9XkLXkNcPeJ6ZicGu7zRUyKyQ8mJOD74+KxprQF7+Q14Nx/71TLgu6Yl45LJsQjSBYXU5+4Orvwr001+L+PS9WkqbGJVtw5L03Nyvf1tiQh5+LxCfje2HisLWvBkrwGXPjSLrX8VdrSZRMTYAlkW+ort6cLL26uVW1JlpTKPJLbT0hTo5PyutKXycOXjArIa6cN5a1YvLsBi/67G3e+X4RfzEvHDycnIphtqU8YBvrY2Z5dX40HVpSo9dryruons1PVOlndSHGRJT/yk1frUO+2f/j6Hvx6RTHum5+JSyYkePsSDT+q9Pymatz/YTHKmlzq/fr1M5IxNDYUupHQI69A5Ce/3onXt9fhmv/lq3527/wMXD4xkU933zKq9OLmGtz3YbFa1TE9LQIPnZ6FEfFW6NiWpqVHqB/Za+ONHfW4/q29+M3KEtx9UgaumpLo7Us0PL9uWdtBhyS3RgrUHe8Xqc1bThgSqZ5m0jiL9Sv2NbTjP1tr1YiBPJVYAvzUa4Wnzxvq7UszjCte26PCY3OHB3vqnGpW9KJxcWpJKR0kS8z+s7VnFc6wuFA8dPoQnD0yZsCWtpm1Lr27pxE/f3efWr0hIwCLZFmphg8nR1LW1IGXt9aqvTGk78kruK1VbXj5+yNgNDuq23DnsmLsvm0yhsV5J8wxDBxhMpfMppeiJK8BLp+YgCxugHFEspPiPzdWY1u1Q/33ty8d5e1LMoyzX9ipfpUJppdPSlA799HhydPd8xtrsLmyDScOicLj38nhpFVALQOWCXOyd8m4JKsaPZGd++jwihrb8fymGvUawah1aQfDgPHIDPq7lhXhL2sr1ZaZsgSHs537TpqTLAGS0RPZwIQOPqXUtLkxMTmMT7lH0ZY2VLTiuQ3Var+FW2an4v75maZcWXG8ZBe/X68owSOrytVOgFdMTsT0tHC2paOwubJVbaBkxNG4HQwDxrJ4Vz2ufXOv2ohHNnSR5XW+PgGHyOjcnp4VF69sr1VfhH8/bxhOGxYNXcimO1e/sQflzS41Ue780bHqECDyHTsMEAbYovZv83rZK3lqKFd2SPvz2TlqmRODAJExTny8aGwcnjgrR+2gefo/t+Oq1/eozZl8fcOgG97ai/nPblN7ljx2VrZazcMgQANB+9UEssXrJf/NU6MBt8xKwcnZURx6IzLo8tb752fg/fye7WllR73/fG8EZuzf8dCXbChvwaKX89T5Dz+amqT2C+iP8y2IDsdf5w06ZAnTSc9sVduoSuqWTSwYBIiMS/qnbIL1p7OyERzgjzl/24KHPilV/dkXyFvbxz4rx8yntkA+0aMLs9XrSgYBGmiBup4kuOi/efgg347vjYtTywV9faMXIl8ik1N/d1qWWmf/i/eK1HkgL3x3uKlPypTXHj98bY86SOickTFq3315RUI0GMzbc46RnIJ19gs70OjoxH3zM7hSgMikZE7P5ZMS1d4Wj35WgSlPbsLiS0djRIL5Nt3ZW+/E2f/agWJ7h9qJsvewJ6LBotVrAtn2dOZfN8Mffnhk4RAGASIfIIfTPHzGELg83Zj+1GZ8kN8IM/m40I6pT25SG1LJ52AQIG/QJgw8taZCjQiMTQxTw4u+dAgMke5SIi146LQsta3zwud34Ln1VTADOaHylOe2I9MWgj+cPoS7m5LX+HwYkAk593xQhOvfLsCZw2PwixPSEBrk8x+bSDtWSwDuPikd83OicNUb+XjwoxLV/41KThe85JXdmDskEveenKHlZkpkHD49Z0BmGMvWnX9eU6m2gD1/VCxXCxD5MJkIfP30ZMSEBuGuZcWwOz34/elZhur3ElB+tbwYD6wsxQWjY9UpjUa6PtJToC8HgR+9mY/n1ler4iDLkYjI98kXq+wgGm7xxx8+LUN7Z5daOmyEL1wJArL6Qa5LHlAuGB3n7Usi8t0wIEHgx/uDgNpIKMfm7UsiokH2nZGxCArwxxOrKyAx4E9eDgQSBOQEVAkC10xJVNdHZBQ+Fwakw926pBDPrq/GzQwCRFrrHRF8fHWFmiv0f6cP8dq1yEFDD31ShqsZBMiAfC4MSIeTjn/d9CS1oyAR6U0CQUdnF37/SRlirIG4/YT0Qb+GJz4vx30fluDSCQk4m0GADMinwsDf11WqDveDCfE4Y1iMty+HiAzinFGxaOnwqPf1KRHB+MHEhEH7s1/dVotb3inEuaNicOEYBgEyJp8JA8vyG3Hdm3uxcFg0LhrDSTlE9FWXTIhHvdONK1/fg/QoC+ZlD/zI4ZqSZlwqywezInHFpERDTGIkOhSfWHCfV+PAhS/tUjsKXjM1iR2OiL5B6sINM1LU9sXnvbgLBfXOAf3zSuzt6lj0nNhQNZGZhw2RkZk+DDS1d6qdBaNDA/GzOak8cIiIjniewe37Nx4754WdaO3wDMif43R7cO6/d0LKkZw1IKsaiIzM3+wrBy57dTcqW1z45bx0tQMZEdGRRAQHqHpR2NCOa/63Z0B2Kbz+rb3YWePAnfPSTX2SIunD1GHg0c/K8fauBvxkVqram5yIqC8ybMG4aWYyXt5ah7+urezX3/ufG6rxz401uG5aMrJjQvr19yYaKKYNA+vLWtTM4PNGxWJaeoS3L4eITGZOVhQWDo9W+5LI0eb9NX/phrf34pRcG/c4IVMxZRhoc3mw6L95GBIdjB9MGLwlQkTkW66cnKhGFb//ch7a3V3H9Xu5Ortw8St5ai+Da6Yk9ds1Eg0GU4aBX7y3D6VNHbhtTiqCAjhhkIiOjSXAH7fOTkV+nRP3LC86rt/rNytLsLWqDbfNTkUIT0YlkzFdi/2o0I4n5RTCiYlIjeTZ30R0fLKiQ3Dx+Hg88mm52hfgWGyqaMWDH5Xiu2PikRsb2u/XSDTQTBUGZLnO1W/kY3SCVb3rIyLqD+eOisXQuFBc9Ua+Gu4/Gp2ebrWRUYYtBBdywzMyKVOFAUnexfYO3DAjmRt4EFG/kf1JbpiejN21Djyyqvyo/r9/XlOBLZVtqi7xtSWZlWkWwMo7PTnx6/zRsUiL0vf1gNvTrc5nd3u61I5qsomKbKAivxIdS1vq7OpZZy9tKCTQX9svtCExIThrRAweWFGiti6WJ/1vU9nswj0fFOOMYdEYFqfv6wFpQ053T1uSfRtkkyWd25IZmSYM3La0ELaQQC3OHfB0daPI3o699e0oamxHRbMLNW1uNDg7VYc7lDCLP2JDgxAfFqRmRw+JDkFubAjSo4K5K6PGpC2V2DuQX+9Uo2rlzS7UtrlR73DDcZi2ZA3yR6y1py2lRlqQaQvG0NhQtTbf19vSovHx+LSoGbe/uw8vLxr5rf/7O9/fp3YZ1GFVk7QlmbgtdWnf/rqk2pLTjTbXoduSPKjEhAYiYX9dytpfl7JsIT7flszGFGFgRYEd7+Q14OdzUxEcaKo3G31W1+bG2rIWbCxvxY4ahyrU0lekCI+MD8WJ2TZVmOPCghBhCYAlsKcjdXR2o7mjE3VtnShv7lC7qu2qcaj7Jc974ZYAjEm0YlJKOKanR6htm8m3yRf9F6ottWF7TZsq1NKWcmJCMDLeihOGRKrJt3HWIEQGH2xLLtWWPKhzuHvaUn07dtU6sGR3A2TwQALnmIQwTEoNw7S0CBUYfI01KACXTkzAY59X4JbZzZiZEXnY/6301ec31eDaaUkID/bN3U8bnZ1YW9qCjRWt2F7tQKvLA2ktqi0lWDEna39bCgtEZHAggr/UllpcHlXXJIDua3BiV60T7+5pVG1JAqfM/ZqUGo7paRGqrpF3+XUPxF6c/airqxtT/7JJfTn+/rQsnzqESNY1f1LUhJWFTSoAyDDtnMxInDLUhhOyotQX+LFusSx7rq8ra8GnRU1YtteO1SXNkL/pcclhODk7CrMzI9WyKvINHZ1dWFXcjJWFdmyrcqgv/1mZkTg1NxonDInC5NRwhB1jW5J9PTaUt+KTfdKWGvF5cbMq6GOTrDgp26barC+F9K7ubty2ZB+SIixY9eNxh605C57dhj11Tjx+VrZPPeW6PF34rLgZKwqbsLWyDfLxJRSdmmvD3KwoTE2LOObw43B5VLCQuvdBvl21WXm1IMHgpOwoVfd0XJa5o7oNdy4rxu7bJmNYnNUr12D4MPDatlpc9J88PHhqJsYkhsFXntxkG+UP9jaqp7YFuTY1zHj2yFjYBujJXRL6mzvr8cKmanxS1Iyo4ACcNiwaZw2PGbA/kwbnye3tXfUq8LV0eFRBlSfbc0bGImaAntwbHG68tUvaUo0KsrLXv3xRSPv1lZEn+cK678MSvHPZaJw5IuaQo5Xzn92GX85Lw4wjjB6Yid3ZiXd2N+D9PY1o6vDghKxIXDoxUa20GKgnd/v+9vvvzTVYvteuRp9OyY3G2SNjfHLk6XAYBvowKjD28Y0ICfTDffMzYXbS8F/ZVof38xvVu7RrpyfjuunJ6j3aYNpT58CTqyvxzPoq9YR35vBoXDA6zmeHOn2RvBp6dVsd3tvTqCZr/WhaEq6fnqyOyx1McgzwX9ZW4ukvqtSk1tOHReOisXFqyNjMpCz+clmxGvZef8PEr4wOyL+b+/RW1LS68PAZQ0w/WimjiK/vqMOS3Y1qROnqKUm4YWbyoH8pyfyop9ZWqrMiZG7UaUOj8d2xcVo8rOxgGDiy17fX4cKXduGh07MwIt47N6g/yDDY4l31+O+2ugNHqN40MwWRXj7NTEYoHl1Vrg58kuuSjVekA/rSkKcvTuJaursB/9lap/77T+ek4pbZKYgO9e5TVKPTjcc+qziwLG/RuDgsHB5j6ra0pbIV9ywvwdLLR+OM4QdHB1YW2HHys9twz0npasjczG1JHkxe2lKrapTsxHjrnFSvP5HLsfR/Xl2hVo/JdX1vbBy+MzLWp1dM7WAYODy5rClPboKnC3jgFPOOCsiT0+OrK1Fsb1dPbvctyPR6Z/u6KjkCelkR/rGhGsPjQnHzrBS1CoGMRWZwS5GU2dwyEvDAgkzEhxvrtM7aVhfuWV6sRgpk1viNM1PUyhYzkhr0i/eL1ETLT388/sA/P+XZberv4o8LzTsqIKsCHv+8ArvrnPjh5EQ8eGqWmiNhJPKwct/yYjXylGkLwc0zB3/kS6cwYNiZGh8VNmFjRZvaV8Csk5BkGPdn7+1TM7bXXT8RT5yda7ggIKQIPHfBMDVZSpKhnOImM8gNmhO1I21J5nv8dOk+9UpgzXUT8NdzhxouCAi5Jrm21deNV9f6s6X71LWbsS3JF/35o+PUJLe1pc0HRguWF9jVaalmDALy9yB9W/q4/I1In5e+b7QgIKRWSs2U2ik1VGqp1FTpD6RRGJCh6yxbMCYkh5nyHdwDK0vVpJjb56bji+snqCU0Rjc7Mwqbb5qIH01Nwt++qMIfPi0/7L4GNDhk9vX/fVyG5zZUqxGbjTdONMWR3dPTI9W13jQrRV377z4uU5/FbKalhav18X/6rOf1x58+q1Br5mU1jtlIX5Y+LX1b+rj0denzRie1U2qo1FKpqVJbpcaSBmFAJpLIOnmZxWu29F3R3IGfv7dPrfd/94oxePC0LFhMtOwqNChApfHXLh6JTZWtuPP9IrUSgbzz+ub294uws8aBty8dhUcWZptqCZ9cq1yzXLt8Bvks8pnMRLY9XzgsGq9tr8f2qjb8Z0uN2m3QbHMhpA9LX5Y+LX1b+rj0dbOQGiq1VGqq1FapsVJrqf8YsrL8fV2VWmIyL8v4qfXLZJc3ecco67nXXT9BLd0zqwvGxGH1tRPg7upSn0neMdLgkXfSd7xfBNnNde11E9QEKrOSa5fPIJ9FPpN8NjOZn2NTk9dkBYGsvjkl1wYzkb57+3v7VF+WPi1926ykpkptlRordUlqLvloGJATwJ5bX2W6zSfyah2494Niteph9bXjfWKiy9ikMPV+WoZFZYKhjNjQ4Ew6vfuDYrUNsNz/EQnmXUnTSz6DfBb5TPLZ5DOahXzxyGsBe3snZmREeH0V0NGQPit9V+YEyP2XPm12Uls/v3a8qrVSc6X20vEz3Let7HBW1eo2VfqWwnb/hyWYmBKO5VeOHbDNXrwhJTIYH/9onJoRfu/yYpRxhGBAFTe2494PS9QW1CuvGYcEA04SPFbyWeQzyWeTzyif1Sx669GCHPPUJemr0mel7350zTjVl32FTC6UWis1V2qvmcKlURkuDPx7U416esiOMcdyJHkH+usVpRiVaMXSK0b75MY9quNdNRbJERbcv6JE7UBH/U8OfblvRQmyo0Pw/g/HIspET6B9JZ9JPpt8Rvms8pnNYFSCVc19kC8fM5A+KjsoSp+VvmvEVUzHS2qt1FypvVKDzTYfxWgMFQZktrFsczo3K9IUEwflen+zshQx1kAsvXwMIky+69qRSDGRIi4TqmRmuOxfTv17TsVvV5aqA1ze++EYn951TT6bTASTzyqfWT479R/pmw9+XKYmOUqf9cUg0Etq7pLLRqsaLLXYjCtWjMJQYUBOtJIDieaYYLmLrNd9bHUFGts7seTy0VqcupVuC8biy0apDZRkeRL1X1v685oKVLe6sOTyMYZc893fkiMt6rPKZ5bPbsZ9CIxK+maJvV31Vemzvk72tpAaLLVYajLbkg+Egf/trFPvt2Rdr9HJPt6rS1rwwkXDMdzEWyUfrcmpEXjqnKH4YK9dbQxFx0/upRwe9ewFw3xigldfyWeVzyyfXe4BHT/pk3IvpY9KX9WF1GCpxVKTpTaTicOArCJYursRU9PCTTEx558bq9X5AueMMu+Sr2N1xeREXDI+Hn/7otI073yNSt5zPrO+Wh0O871x8dCNfGb57M+ur+Y73+MkfVH6pPRN6aO6kVosNfn5jdWc6GzmMPBFWYs6jnWKwXfqk60wn1hdoSY5/v70LOjqz2fnqiVWcsIYh+WOjdy3J9dUIjE8CI+emQ1dyWdPCA9S94Jt6djIfZO+KH1S+qaupCZn2IJVjea2xSYNA8vyGxFuCcBQg6/PlzO3d9U68ffzhppqB6+BmAT2l3NysK68FWtKW7x9OaYkw+Nbqtrwt3OH+uQqlL6Szy73QO6F3BM6etIHpS9Kn/TlyaffRmqy1Gap0VKryYRh4MMCO8YmWQ29zafD7cGLm2vVMNy8bPOsNx4o54yMVUceyysTt4cp/Gh0dHbhX5tq1IE3Zt6psr/IPZB7IfdE7g31ndvTpfrg6cOice4o8+4u2F+kNkuNllotNZtMFAZkaZG8Jhhj8J3W3t7VoBrX704b4u1LMQRZ/inHuFa3utW56NR3cnKcvBb7wxlsS70eOmOIuidyb6jv3s+3qz74CNvSAXKOgdRqqdlkojCwoaIFLk+32tjDqGT96tu76nHdjGQtluv01ajEMJXCX99Rp55Q6NvJk+//dtbjysmJPrFtdX/JjQ1V90TuDUcH+kb6nPQ96YPSF6lHhi1E1Wqp2dx7wERhYE1JC0IC/ZEVbdxdB+XJt6OzGz+fm+btSzGcX56YgQZHJz7ax6WGfbG8wK6OYL1jXrq3L8Vw5J7IvZF7RN9O+pz0PemD9FVSq6Vmc9TSRGFgfXmr2n7YqPMFPF3dau3qxRPifWp/7/48hGbh8Gi8k9fI2eDfQmY4L8lrUCfHDTHJltuDSe7J+aPj1D1iWzoyuT/S5+Sod184zKq/Sa1eND4eS/c0qhpOJggDGyQMGHhUQM4Ar2lz44YZKd6+FMO6cWaKOpp2Tx0PDDmS7dUOlDW7cP30ZG9fimHdMCNZ3SO5V3R4u+ucqs/J/aLD1yWZT7G5stXbl2J4Xg8DTrcHe+udyIo27hP3ysImjE6wGn4PBG86JTcaqZEWrOCuhEe0stCuRsFOGGL8Lbe9Re6N3KMVhXxV8G11Sfqc9D06NKnZUrtZl0wQBnbXOiEDOLJRhBHJRCZZ6XDJhARTHJ7kLfKKR4bkVpc0c0juMGT55drSFjXZi23p8OTeyD2Se8Ulq4cmfUz6mvQ5o75eNUxbmpCAdWWtnJRq9DDQO6ycatB38Zsr29QklAvG6Lft8NGSd732do8avqRv2l7dhlZXl5ovQN/eluReyT2jb5I+Jn3tgtFsS9/m/NGxaO/sUrWcDBwGChraERkcgAiD7sC2saJnPsOwOE7Q+TbT0iIQExqo7hl9k9yXlAgLxml0GNGxGp8chuSIIDVfh75pY3mr6mtT0/Q5jOh4DjGSGs66ZPAwIBNgZF9yo5JJTKcM5W6DfSHDlSfnRHHi12HsqHZgQa6Nrwj6QO7RgtxotqXD2F7Thvk5Nr4i6COp4WxLBg8DcrpUrNWYYaClw4PSpg7MyeRkr76amxWF/Don3/UeYpfNwsZ2zMmK9PalmMbcrEgUNrSre0cHSd/Kr2NbOhpSw6WWS00ng4aB8maXGu4yooKGnnffZjhW2Shk2NLd1Y2SpnZvX4qhyAiYzKucqtEZ88dL7pXcM7l3dJD0LeljfEXQd701vLemkwHDQE2rC1EhxpwvUGzvQEign9omlfpmTGLP3IriRp4n/vW2FOAHjOTmMH0m90rumdw7Oqi3b43l9sN9JjVcajnbkkHDgOyg1eDsRGSwMUcGKppdqhHxvVzfRQQHqolfFS0ub1+KoZQ3d6jttoMDvZ6/TUPuVaYtBBUtLOBfr0syEVXnY6+PltRwqeVy7+jQvFqZZMmeHFAUZjFmgaxtc2OIgXdGNCq5ZzWtbm9fhuHakpHP3jDy9sRsS18lu6EaeZM2I9cl6Yd0aF79Fm7p6FS/hhr0acne3omUSIu3L8OUe4LLvaODZE0429LRk3sm946+XpcYBo6tLbEuHY5Xv4Wd+3eEshg0DMjpaTGhxlzpYGQyIbSNx4Z+RavLg1irMV+HGZncM7l3dBDb0rGJZl06Iq9+C8srAhFo0HfyElaMuhmSkck9a+/k0sIvk+VxERa2paMVbgngNrJfI7vpsS4dPblnTi5TPaxAbx/nKgyaBdT+30EynZmOiiXAH51d7HRf1qnakjFHwIzMGhSgTp276o38Qf1zwy3+uPukDMSHBRmzLvmzLR1bXeJDyuFwrOmI/MAj1Y8t5HGXvW/iHTl6N89KUe1pMDexcri78IdPy9RpqkYMA35Sl9TxbnT0D5/shYYMA72vB4x6yp0lwE8dsUxHP4wZZNThHjKVMEsA7jopY1D/zKb2ThUGjLqJpoxWcrj72F7VSU2nQ/PqWFPw/mFT2U3LiKwWfzRz+8qj1tTuQWgQhzHJnA7UJY8xv3Clb0kfo6MjtVxqOh2aV+9M71+MUSebyWmKsqaXjk5tm0vdOyIzCg70U/OYZB8Uo06Ekz5GR0dquVE3uIPuYSDC0vMX4zDoco/o0CCUcvvKo1baJOdNGO9dK1FfyHwXWcXgMOgrwlipS00MA0dLarksLyQDhoHAgJ5OZ9S1n0nhQerUNDq6LablMJCkCIYBMi9biHH3N0iM6KlL0teo7+SeSU2nQ/P6C5Q4a6Bh38unRQWjpKlDbT5EfVPW5EKbqwtp3CGNTCwuLBDNBn0vL31Lgoqc+Ep9IzVcarnUdDJoGEiKsKDRacwtInv3/95S1ertSzGNzZWtB/aUJzKr5Ajjbl2bvb9vbapgXeqr3hrOMx0MHAZSIy3q5EIjkhPTZDLRmpIWb1+KaawpbVHbEcuID5FZyd7/DQ5j1iXpW/LuW/oa9Y3UcKnlUtPJoGEgMzoEdQ5jztiXfRCGxYXio31N3r4U0/io0I4R8aHcdIhMLdMWbNgT7qRvjYwPxUeFrEt9JTV8eJzVsFvfG4G/EY6VrG5xG3bjofFJYVhZaIeL+6P3abOWtaUtGJ8c5u1LITruutTU4THsSqdxSWH4oqxF9Tk6MqndUsPHJVm9fSmG5vUwkBsbojYdMmoKn5IaoSbEcXTg2727u0Ht2ib3jMjMcmND1a8VLcacpDclNVztsy99jo5MarfUcNYlg4eBEfE9aa282Zjr+YdEB6vlKK9uq/P2pRjeq9vrMDQ2xJD7uRMdjeHxoQdWxxhRQrhF9TXpc3RkUrulhkstJwOHgYyoYIRZ/FFk0M195P3cCVlReGVbLc8pOIIGhxvv5DVgblaUty+F6LhFhQQiLdKCYrtx9xmRviZ9TvoeHZrUbKndUsM5j8ngYcDf3w9jE8NQZODNfU7Osam9EDg6cHjPb6yBTPs4cQjDAPmGcclhKGo05kOKmDckCp7ubvxrU423L8WwpGZL7ZYaTgYPA2JyajgKG40bBlIiLZiUEobHPi/nrl+HIJM//7ymArMyImDjdp/kIyanhKvdNI3a52V54eyMSDyxusKwE7C9Sf7epGZL7ZYaTiYIA9PSItRe20be6e/skbHYWNGGlVzO8w1v7KhTW32eMzLW25dC1G+mpUfA3u5Bdatxh+Glz0nfkz5IXyW1Wmq21G4ySRiYmRGpft1d54BRTUwOUysffrW82LBPCt7Q1dWN+z8swYTkMAyN65l0ReQLZqT31KW8WieMSvqc9D3pg9IXqYfUaKnVUrOldpNJwkDu/hnoO2qMGwZk8snF4+OxqrgZS7ic54B/b65Rf29yb4h8SVxYkNpAa6eB65KQvid9UPoi9ZAaLbX6kvHxnDhopjAgf1knZUdhW5XD8O8QZROi25YUooObEKGloxN3vF+E2ZmRB5aIEvkSmRC7rboNRiZ9T/qg9EXpk7qT2iw1Wmr1pJRwb1+OaRgiDIgFuTbk1zsNPW9AQsvVUxLVZMeHPimD7u5dXowGpxtXTErw9qUQDYgFudHqdMCaVmPuN9BL+qD0RemTupPaLDVaajVHBUwYBk4bGq2Wpm2uMnYKl7MUzh0Zi9+sLME2g1/rQPq8uBmPfVaBRePikRjOmbrkm+bn2BDgBzURzcikD0pflD4pfVNXUpMfWFGiarTUajJhGMiwhWB0ghXryox/Etei8fHqiNOL/5un5UZEsh/6Ja/kqfepXEFAvkyWys7KjMS6cuPXJemL0ielb+p4ZoHUYqnJsoxQajSZNAyIc0bFYkN5q9pz28gsAf64bU4q9tQ5cdPiAug2S/fK1/egttWNW2enIoCngJGPky/ZLZVtcLqNPU9I+qL0Semb0kd1W/UktVhq8k/npKoaTUfHUHfsgtFxarcoMwy/y6lm105LxrPrq/GXNRXQxW9WluKNHfW4ZVYKkiL4eoB83/mj4+DydGO9CUYHpE9K35Q++tuVpdCF1GCpxVKTs/h6wPxhYGJKGLKjQ/BpkTneecmkx++MiMHNiwuwJM/3lxu+uLlGTVCSpUwz9u8NQeTrhsSEqFMCzVKXpG/K/IF7lherPuvr3smrV6MCUoulJpMPhAGZ+XnJhHisLm02zdK9KycnYmpaBC56aRc+LrTDVy3eVY8rXtuD+TlR+N7YOG9fDtGgumRCgnqF2WLg1U5f9v1xcaqvSp+VL0tfJTX3uy/lqV1spRaTj4QB8YOJCers6bWlxh+S631P97O5qerI0zOf34GPfDAQvL2rHhe+tAvT0sJx44wULtch7ciTdld3Nz4tMsd25NJHpa9Kn73gxV2qD/saqbULn9+haq/UYM5f8rEwMCyuZwONDwrM86Uqk1XuOjEdw+JCcfo/tuPNnb6zT/jzG6tx/r93YkpqBH42N40djrSUGGHBwuEx+GCv3TQT83oeVNJU35U+LH3ZV/xvR52qtcPjQlXt5YTB42fIO/jjaUlq9m5Fs3GPD/264EB/3H1SOqakScfbhYc/LTNN0TgU2ef8ng+K9r8asOHnc1MRyCBAGvvxtGQUNLQjv964J6x+nfRZ6bvSh6UvS5828xkGUlOltspoh9RaqblSe+n4GfIuXjQmHjGhgViyuxFmEhTgrzreBWNi8fN392HRy3loNuF633qHG2f9a4eajXz5xATcMCOZIwKkvdOHRSPTFmy6s0mk70oflr4sfVr6tvRxs5FaKjVVaquqsXNTVc2l/mHIOxkS5I9rpyfjwwI7HC5zTNjp5e/nh8smJuL2E9KwOK8BE57YiM+KzfGeUSzLb8TYxzaqXczuPTkDF4yJ4xwBov1fqjfNTFGrChpM9mUqfVj6svRp6dvSx6Wvm4XUUKmlUlOltkqNlVpLPh4GhCRZt6cb75uowX7ZnMxIPHpmNkIC/TH3b1vV8kMj7wpW1+bGD1/bjdP+sR2J4UH401nZmJzKQz6IvuyqKUmqT79jstGBXtKnpW9LH5e+Ln1e+r5RSc2U2ik1VO671FSpraRRGEiJDFYrC97Oa4DLY45lhl8nWxY/eGqWWvLyzLoqDH1kPZ7+ohKdHuO8s5MlnH/6rBxDH1mH17bX4/rpybh/fgZirUHevjQiQ25PfO30JLy7uxGtJhu17CV9W/q49HXp89L3pQYYaTm329OlaqXUTKmdUkOllkpNJc3CgLhjXhoanZ1Yvtc8KwsONbQo2yw/eXYORida8eM392L4o+vx3Poqr3Y+ef3y5OoK5D68Dj9dWojp6RH4y9k56r0oXwsQHd5ts9PUlunvmHijMenj0telz0vflxogtUBqgjdfzUpNlNo44tENqlZKzZTaKTWU85YGViAMTJYZyvreV7fXqdmwZp41GhcWhNtmp6rTtF7eWour3sjHL5cVqRnKknoH64St/DonnllfpdK2vb1TDbn98sR0pEUFD8qfT2R2yZEW1W+f21CNs0bEINwSADOPdNwwI0WdvyB16eZ3CtQuo1dPTcLVU5IwNC50UK6jqLEd/9hQjb99UYnqVjdmpEfg5pkpyI7h1sKDxa/b4Ovf9tY7MeKP63HZpEScN8p3TsgrbepQk2E+3tekDkCRL+WLxsap4pId038dUP56d9c61TvOV7fV4ouyVlW8Ts6OUn8WzxcYHLKsSw6RufvkDG9fCvWDqhYXsv+wTvWhSycmwJc+l4x4rChsUq9BZNOii8bG46zhMWpzn/4cNSxscKo/69VtdVhV3IzQIH/MGxKFs0fEaPdwsqO6DXcuK8bu2yarh2BvMHwYENe9mY8Xt9Tir+fkIiLYvCn8UCQIrC5pxqfFzWpvBRl+zLIF44QhUWr4bnxyGEbEW9VSy2/riPJXWdvmxq4aB7ZUtaldHD/Z14SyZhcsAX6YlBKOuVmRautOM4+ymBHDgO+5a1kRHllVhqfOzlUjf75Ehuu/KGtRKyc2VrSqg5rSIi0H61JSGEYmWBEfFtSnutTg7ERerUPVuN66VGTvUPsgSI2bmxmJmRmRKhDoaAfDQN/Tau4j6zA/26aGr3yVvKvbWtWGrVUO5NU5UNTYceA4Z3mal3O646yBiAoJPLDjlnTapo5ONSO4otmFtv3HrMqXv5ysKOebS2cbkxCmlmySdzAM+B6Z6S7v2ccmham/W1/V7u7C9po29UWeV+vEvsZ2FQ5EWJB/T10KC0JUcOCBhwyZ9C33p87RqepS72RL+fLPig7GiDgrxiXJTxisJn7N4kthwNBzBnrJUPZdJ2bgnuVFOHVoNDJsvjmEJJ1CThzrPRFQZtTKU315sws1rS40ODrR4vKoSZW9IUE6lzXIH6MSrJiTFYXEsCCkRVnUagzuGEg0cCSU//bULDXR7Yxh0WoEzxfJQ4RsaSw/QmqP7A5b1uRCdZtb7bkgBzjJHKQv1yV5yh8RF4pZGRFICLcgNdKiRhe4UZAxmSIMiNvmpOLZ9VVqgslvTsnUYsa7dBp5upcfIjLmvgNSk/72RRUePmOIFjPe5Ys+wxaifsh3mCaiyfDTU+fkYlu1Q01uISLyNvny/+u5Q1HY0K4mBBOZlWnCgDhlaDQuGR+vlvTIUDkRkbdNTYvAjTNT8NKWWlS2uLx9OUS+HwbEn87KUdtSPrW20tSnAhKR75Dd8WSL3ydWV6CLdYlMyHRhQGat/u3cXKwpbcHyAvPuTEhEviM8OAD/vHAYtlc78NbOem9fDpHvhwFx3ug4XDEpAc+sq1azWomIvO3EbBt+OicVL2yuRUG909uXQ+T7YUA88Z1cpEZZ8IdPy017kBER+RZZajg20YqHV5Wb7vh10pu/mYflXl00EmVNHXj6iypvXw4RkVr19MrFI9HU7sETaziviczDtGFATEgJx5Pn5GLZXjuW5Td6+3KIiJAbG4rnLxyGz4qb8QbnD5BJmDoM9G76ce20JPz1iyrsrHF4+3KIiHD+mDh1Gui/NtZgfXmLty+HyPfDgHjsrBy15eXvPi7lOl8iMoQHFmSqUw1lXpPs509kZD4RBiyB/njjB6PUCVq/XlGiDsggIvImf38/vPS9ERgeF4oHVpSoE0WJjMonwoCItQbhvSvGqNO0HlhZCoebM3mJyPsTnZdcPhrWoADc/2EJmjv4oELG5DNhQOTEhqpAIEdmPvhRmTrel4jIm+QE0WVXjlEPKL9eUcolh2RIPhUGxKTUcCy9fDT21jvxu4/LuAcBEXnd8Hgrll05FtWtLty/ooQjl2Q4PhcGxNwhUVh82WjsrGnjCAERGcLElHAs++FYlDW71CuDNo4QkIH4ZBgQJ+fYsPTyMcirdahJhRyaIyJvm5YegQ+vGouKFhfuXV6MZk52JoPw2TAgTsqxqXd1xfYO3L28mMceE5Ehjjz++JpxsLd7cMeyItS0cjk0eZ9PhwExOzMKn/xoHFo7PPjFe/vU9sVERN40Pjkcn/14PAL9/XD7e0U82Ii8zufDQG/HW3PdBESHBqqOt7my1duXRESaGxoXijXXTkB2TAjuXFaMNSXN3r4k0pgWYUBkRodg9XUTMCszQk3eeXtXPQ8RISKvSoywqFcGZw6PxoMfl+HlrbXoYl0iL9AmDIiokEAsuWwMfjI7Fc+sr8Yjq8rhdHOlARF5j9USgFcWjcSvF2TiP1tq8duVpWjp4IRnGlxahQERGOCHhxdm47/fH4ENFa346dJCFDZw33Ai8u7WxfecnKF2K9zb0I5blxRiFw9eo0GkXRjo9d1x8dh440S1jfHP392H/+2s5/AcEXnVGcNjsPmmieoY5DuXFeGlLTXo7GJdooGnbRgQw+KsWHv9BNw8KwX/3FCNu5YVq62MiYi8JcMWouYR3HtyBl7dVqdWQRXz1EMaYFqHAREc6K9eG6y4eiza3B7c/E4BXt9RxzRORF59nfmr+Zlq0nOAvx9uXboPL26u4fbqNGC0DwO9Tsy2Yfstk3HDjBS8sKkGty0pxPbqNm9fFhFpvkHRphsn4c55aXhjRz1uXlyIDeVcGk39j2HgS8IsAfjjmdlYd/1EJIQH4ZfLivHQJ2WoauGrg76STZ1+uaxIja4Q0fELCfLHr0/JUnMJhsWFqoOOHlhZwg3UjkLV/u2f5UGPDo1h4DAnH66+dgL+eeEwFDS044a3C/DMuirYuZ3xYdW1ufHn1RW4aXEBtlc78PxGdjqi/jQqMUy9znx10QjUtLpVX3tyTYXqe3RoUrOldksN31zZhle38yHlcAIP+280J0t9Lp+UiAvHxOHRVeV46NMyfLDXjjOGR+PckbGwhfLWCSlEMny5bG8jwi0B+MMZ2Shr7sB/tjAMEPU3Pz8/XDg2HmeNiMVTayvVCMHKwiacmhuN80fHIi4syNuXaAhyDs1bu+rx7u5GNf9CJmPKajGp43Ro/Ebrw6uDu0/OwHUzkvHIp+V4fHU5luxuwPwcG84ZGYvkCAt0VGLvwJs76/HRviaEW/xx90kZuGVWCiJDAnHXsiJvXx6Rz786uHVOKq6akojHPq/AH1eV4b38Rpw4JArnjopFhi0YOpLVYG/n1WP5XjuCAvzUBnM/m5uKGGsQHmEQOCKGgT6S/QgePC1LNSwZDn98dYVKnTLBZ+HwaExIDoO/nx98maerG+vLW7F0dwM2VbapIPTgqVm4dnoSIoLZlIgGm4Rv2azoJ7NT8Ne1VXj0s3IsL7BjYnIYFg6PwZTUcLUawZfJE7+8Ali6uxHryloQYw3EXSem48aZKSoEUN+wgh8laVz3zs/Ez09Iw4uba/H45+W478MSJIUH4eQcG07KjkJiuG+NFpQ3d2BlQRNWFNpR5+jE1LRwvHDRcHx3bBwsgZx2QuRtEsalJsno3Cvb6tQI5m8/KkWcNRAnZ9twUk4UUiN9a7SgutWlXpGsKLCjqtWNsYlWPH3eUFwyIR6hQQHevjzTYRg4RtLYrp6apIbpVpe04Jn1VXhlay1e2lKLUQlWzMmMxMyMCDWiYNaO9nlJCz4rbsaeOiciggNwyfh4XDM1WU2wJCLjkXD+g4kJ6mdDeYuaPPfillq8sr1OrUSYnRmJWRkRpn1gqXe4Vb1dVdyMnTUOhAX5q91kr56SpOqtzKmgY8MwcJyk8c2SDpYZicfPylHv0WUL0X9sqMbT66owNDYUk1PDMCklXP1now7ZySZLu2sd2FjRps5skPMaggP8cPqwaDywIBPfGRnDtE1kIpNTI9SPLJdevKtB1aWXNvfUJjk2eXJKOCalhGF4vBWBBq1L8moyv96JjRWt2FDepv5zkL8fFuTacOe8dDU/IjyYdak/MAz0I2mUvam80enGkrxGLM6rx7t7GvHy1jqEWfzVqMGoeCuGx4ciNyZUTQTyBofbg/y6duyuc2BnjVMdiuLs7EJMaKBaMfG7U7PUr5wLQGRuEuLl6Vl+Wjo61VwnmWQnv8pSu9BAf4yUupQQiuFxVgyNC4HVS8G/3d2FvQ1O7K51Ymet1CYH2lxdiAoJwGlDo9WqgDNHRCM61JwjrkbGSj9ApLH2BoNOTzfWlbfgw712Nfv+tR11qoFLGE+PClYzfzNtwUiLDFaT8hIjgvqlM3Z3d6PN3YXqFhcqW1woa3ah2N6BYns7yptckA2XI4MDMDMjEhfNz8CCHBsmpvj+hCMiXUm47w0G8tS9qaJVTTj8qLAJb+1qQEtHLaT3p0ZZkGkL2V+XLPvrkkUtH+6vh5HqFvf+uiQ1qUOtUCpt6oDsBC8PTjPSI3HHCemYn2vD1NQItUSQBg7DwCCQRixfuPJztwzJe7qxo6ZNzczfWN6KLVVteCevAfb2g2eYy3I9maxoCwlQHVB+QoP8ERzgr36/3u9r6Tjy+7V3dqkn+zaXR52FLr+XvF9zuA/uZR5rDcToBCvOGxWnXlvIRMAR8dYB+fKXa5BDVqiH/N0QGYn0+ylpEernjnnpKhzk1TqwrqxVDctvqWzF+/mNqHcc3GzNGuSv5kFJXZJ5RLL0WkYWQgIPXZc6PF1wurvQ6vKoH6lLDQ43Wl0H+4P8XqMTw3Dm8Bg1H0lWQIxOCBuQL39XZ7ch61J1q/d3ufXrlsdH8jr5a5ANfGTHw32N7SolS2qubnWjts2NpvZONLV70N7pQUdnNzzd3SrBS4eWgCCvG+QpPzo0EHHWIDW6kBLRM+og7wflZ7AmM64ssOP7L+epa6Qe8p7z9UtGqbklRGYiDxUyh0h+pC5VtHSop/o6h1tt7tPc4VHD+/LFL4FCen2Anx+CA/0QEhighvijQgIRHxaExPAgNcogdWlIdAhyYkLURkmDMfFvfVkLznlhp7pOIxoaG4oPrhzrtTkQDANERESa4yJxIiIizTEMEBERaY5hgIiISHMMA0RERJpjGCAiItIcwwAREZHmGAaIiIg0xzBARESkOYYBIiIizTEMEBERaY5hgIiISHMMA0RERJpjGCAiItIcwwAREZHmGAaIiIg0xzBARESkOYYBIiIizTEMEBERaY5hgIiISHMMA0RERJpjGCAiItIcwwAREZHmGAaIiIg0xzBARESkOYYBIiIizTEMEBERaY5hgIiISHMMA0RERJpjGCAiItIcwwAREZHmGAaIiIg0xzBARESkOYYBIiIizTEMEBERaY5hgIiISHMMA0RERJpjGCAiItIcwwAREZHmGAaIiIg0xzBARESkOYYBIiIizTEMEBERaY5hgIiISHMMA0RERJpjGCAiItIcwwAREZHmGAaIiIg0xzBARESkOYYBIiIizTEMEBERaY5hgIiISHMMA0RERJpjGCAiItIcwwAREZHmGAaIiIg0xzBARESkOYYBIiIizTEMEBERaY5hgIiISHMMA0RERJpjGCAiItIcwwAREZHmGAaIiIg0xzBARESkOYYBIiIizTEMEBERaY5hgIiISHMMA0RERJpjGCAiItIcwwAREZHmGAaIiIg0xzBARESkOYYBIiIizTEMEBERaY5hgIiISHMMA0RERJpjGCAiItIcwwAREZHmGAaIiIg0xzBARESkOYYBIiIizTEMEBERaY5hgIiISHMMA0RERJpjGCAiItIcwwAREZHmGAaIiIg0xzBARESkOYYBIiIizTEMEBERaY5hgIiISHMMA0RERJpjGCAiItIcwwAREZHmGAaIiIigt/8HQcrN2J0BLwoAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# generate a nice ard logo in blue\n", + "import shapely.plotting\n", + "\n", + "fig, ax = plt.subplots()\n", + "shapely.plotting.plot_polygon(shape_ard, add_points=False, ax=ax)\n", + "ax.axis(\"equal\")\n", + "ax.set_axis_off()\n", + "plt.savefig(\n", + " \"logo.png\",\n", + " dpi=300,\n", + " bbox_inches=\"tight\",\n", + " transparent=True,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "fa13ef10", + "metadata": {}, + "outputs": [], + "source": [ + "# generate points for a simulation on the logo\n", + "polygons = [\n", + " (1.0e3 * np.array(shape_ard.exterior.xy).T).tolist(),\n", + " *[(1.0e3 * np.array(interior.xy).T).tolist() for interior in shape_ard.interiors],\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "2329519a", + "metadata": {}, + "outputs": [], + "source": [ + "with open(\"logo_polygons.yaml\", \"w\") as fout:\n", + " yaml.safe_dump(polygons, fout)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "411feea1", + "metadata": {}, + "outputs": [], + "source": [ + "# for polygon in polygons:\n", + "# print(\"- x:\")\n", + "# for val in np.array(polygon)[:,0]:\n", + "# print(f\" - {val}\")\n", + "# print(\"- y:\")\n", + "# for val in np.array(polygon)[:,1]:\n", + "# print(f\" - {val}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "d6baba7a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Adding top_level\n", + "Adding aepFLORIS\n", + "Adding collection\n", + "Adding spacing_constraint\n", + "Adding boundary\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[34mfloris.floris_model.FlorisModel\u001b[0m \u001b[1;30mWARNING\u001b[0m \u001b[33mturbine_type has been changed without specifying a new reference_wind_height. reference_wind_height remains 90.00 m. Consider calling `FlorisModel.assign_hub_height_to_ref_height` to update the reference wind height to the turbine hub height.\u001b[0m\n" + ] + } + ], + "source": [ + "# load input\n", + "input_dict = load_yaml(\"./inputs/ard_system.yaml\")\n", + "\n", + "ardprob = set_up_ard_model(input_dict=input_dict)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5a06920a", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/openmdao/core/group.py:368: PromotionWarning: : Setting input defaults for input 'x_turbines' which override previously set defaults for ['auto', 'prom', 'units'].\n", + "/Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/openmdao/core/group.py:368: PromotionWarning: : Setting input defaults for input 'y_turbines' which override previously set defaults for ['auto', 'prom', 'units'].\n", + "/Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/openmdao/recorders/sqlite_recorder.py:231: UserWarning:The existing case recorder file, /Users/cfrontin/codes/Ard/assets/logomaker/problem_out/opt_results.sql, is being overwritten.\n", + "/Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/openmdao/core/driver.py:700: DriverWarning:The following design variable initial conditions are out of their specified bounds:\n", + " x_turbines\n", + " val: [-2500000. -1250000. 0. 1250000. 2500000. -2500000. -1250000.\n", + " 0. 1250000. 2500000.]\n", + " lower: 0.0\n", + " upper: 3000.0\n", + " y_turbines\n", + " val: [-2500000. -2500000. -2500000. -2500000. -2500000. -1250000. -1250000.\n", + " -1250000. -1250000. -1250000.]\n", + " lower: 0.0\n", + " upper: 1250.0\n", + "Set the initial value of the design variable to a valid value or set the driver option['invalid_desvar_behavior'] to 'ignore'.\n", + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:498\n", + "invalid value encountered in divide" + ] + } + ], + "source": [ + "ardprob.model.set_input_defaults(\n", + " \"x_turbines\",\n", + " val=input_dict[\"modeling_options\"][\"windIO_plant\"][\"wind_farm\"][\"layouts\"][\n", + " \"coordinates\"\n", + " ][\"x\"],\n", + " units=\"km\",\n", + ")\n", + "ardprob.model.set_input_defaults(\n", + " \"y_turbines\",\n", + " val=input_dict[\"modeling_options\"][\"windIO_plant\"][\"wind_farm\"][\"layouts\"][\n", + " \"coordinates\"\n", + " ][\"y\"],\n", + " units=\"km\",\n", + ")\n", + "ardprob.run_driver()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fa1e7a79", + "metadata": {}, + "outputs": [], + "source": [ + "plot_layout(ardprob, input_dict=input_dict, include_cable_routing=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3b81b5ab", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "ard-dev-env", + "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.12.11" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/LCOE_analysis.ipynb b/docs/LCOE_analysis.ipynb deleted file mode 120000 index b283a9d7..00000000 --- a/docs/LCOE_analysis.ipynb +++ /dev/null @@ -1 +0,0 @@ -../examples/LCOE_stack/LCOE_analysis.ipynb \ No newline at end of file diff --git a/docs/LCOE_demo_out/case.sql b/docs/LCOE_demo_out/case.sql deleted file mode 100644 index cdf1c2eb..00000000 Binary files a/docs/LCOE_demo_out/case.sql and /dev/null differ diff --git a/docs/_config.yml b/docs/_config.yml index bf10a03d..82c07c37 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -3,7 +3,7 @@ title: Ard author: National Renewable Energy Laboratory -# logo: logo.png +logo: logo.png copyright: '2024' # If there's a file that is linked in the project but not explicitly listed in the TOC, uncomment this line @@ -13,6 +13,7 @@ copyright: '2024' # See https://jupyterbook.org/content/execute.html execute: execute_notebooks: auto + timeout: 120 # timeout: 420 # Give each notebook cell 7 minutes to execute # Define the name of the latex output file for PDF builds diff --git a/docs/_toc.yml b/docs/_toc.yml index e5e8f463..ef24885c 100644 --- a/docs/_toc.yml +++ b/docs/_toc.yml @@ -4,18 +4,25 @@ format: jb-book root: intro parts: - # introductory material + # Introductory material - caption: Getting Started chapters: - file: installation - # Tutorials - - caption: Tutorials + - file: testing + # # Tutorials + # - caption: Tutorials + # chapters: + # - file: LCOE_analysis + # # How-to Guides + # - caption: How-to Guides + # chapters: + # - file: multi_fidelity_aep + # Examples + - caption: Examples chapters: - - file: LCOE_analysis - # How-to Guides - - caption: How-to Guides - chapters: - - file: multi_fidelity_aep + - file: examples/01_onshore/optimization_demo.ipynb + - file: examples/02_offshore_fixed/optimization_demo.ipynb + - file: examples/03_offshore_floating_custom_system/optimization_demo.ipynb # Reference Material - caption: Reference chapters: @@ -23,4 +30,4 @@ parts: # Explanations - caption: Explanation chapters: - - file: structure \ No newline at end of file + - file: structure diff --git a/docs/examples b/docs/examples new file mode 120000 index 00000000..a6573af9 --- /dev/null +++ b/docs/examples @@ -0,0 +1 @@ +../examples \ No newline at end of file diff --git a/docs/installation.md b/docs/installation.md index 0c6fca91..455820ec 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -1,4 +1,5 @@ -# Installation instructions +# Installation + `Ard` is currently in pre-release and is only available as a source-code installation. The source can be cloned from github using the following command in your preferred location: ```shell @@ -22,7 +23,6 @@ For a basic and static installation, type: ```shell pip install . ``` - For development (and really for everyone during pre-release), we recommend a full development installation: ```shell pip install -e .[dev,docs] @@ -33,16 +33,6 @@ There can be some hardware-software mis-specification issues with WISDEM install In the event of issues, WISDEM can be installed manually or using `conda` without issues, then `pip` installation can proceed. ```shell -mamba install wisdem=3.18.1 -y +mamba install wisdem -y pip install -e .[dev,docs] -``` - -To test the installation, from the `Ard` folder run unit and regression tests: -```shell -source test/run_local_test_unit.sh -source test/run_local_test_system.sh -``` - -For user information, in pre-release, we are using some co-developed changes to the `FLORIS` library. - -If the installation fails, please open a new issue [here](https://github.com/WISDEM/Ard/issues). +``` \ No newline at end of file diff --git a/docs/intro.md b/docs/intro.md index 38d5c5d7..3a584e85 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -8,46 +8,54 @@ [An ard is a type of simple and lightweight plow](https://en.wikipedia.org/wiki/Ard_\(plough\)), used through the single-digit centuries to prepare a farm for planting. The intent of `Ard` is to be a modular, full-stack multi-disciplinary optimization tool for wind farms. -The problem with wind farms is that they are complicated, multi-disciplinary objects. -They are aerodynamic machines, with complicated control systems, power electronic devices, social and political objects, and the core value (and cost) of complicated financial instruments. -Moreover, the design of *one* of these aspects affects all the rest! +Wind farms are complicated, multi-disciplinary systems. +They are aerodynamic machines (composed of complicated control systems, power electronic devices, etc.), social and political objects, generators of electrical power and consumers of electrical demand, and the core value generator (and cost) of complicated financial instruments. +Moreover, the design of any *one* of these aspects affects all the rest! -`Ard` seeks to make plant-level design choices that can incorporate these different aspects _and their interactions_ to make wind energy projects more successful. +`Ard` is a platform for wind farm layout optimization that seeks to enable plant-level design choices that can incorporate these different aspects _and their interactions_ to make wind energy projects more successful. +In brief, we are designing `Ard` to be: principled, modular, extensible, and effective, to allow resource-specific wind farm layout optimization with realistic, well-posed constraints, holistic and complex objectives, and natural incorporation of multiple fidelities and disciplines. ## Documentation -The documentation organized as follows: -- **Getting Started**: helpful information to get you started using Ard, including installation instructions -- **Tutorials**: example problems with solutions -- **How-to Guides**: instructions on solving particular problems and using specific features of Ard +The documentation is organized as follows: +- **Getting Started**: helpful information to get you started using `Ard`, including installation instructions + - **Reference**: dry, but hopefully useful, reference material including the API reference manual -- **Explanation**: discursive content on the whys, hows, and the wherefores of Ard for those that are interested +- **Explanation**: discursive content on the whys, hows, and the wherefores of `Ard` for those that are interested +## Design philosophy -## Current capabilities - -For the alpha pre-release of `Ard`, we have concentrated on optimization of wind plants, starting from a structured layout and optimizing to minimize the levelized cost of energy, or LCOE. -This capability is demonstrated in `examples/LCOE_stack` and tested in an abridged form in `test/system/LCOE_stack/test_LCOE_stack.py`. -In the alpha pre-release stage, the constituent subcomponents of these problems are known to work and fully tested; any capabilities not touched in the layout-to-LCOE stack should be treated as experimental. +The design of `Ard` was inspired by two use cases in particular: +1) systems energy researchers who are focusing on one specific subdiscipline (e.g. layout strategies, social impacts, or aerodynamic modeling) but want to be able to easily keep track of how a change in one discipline impacts the entire value chain down to production, cost, value, and/or societal outcomes of energy or even optimize with respect to these, and +2) private industry researchers who run business cases and may want to drop in proprietary analysis modules for specific disciplines while preserving some of the open-source modules of `Ard`. -These cases start from a four parameter farm layout, compute landuse area, make FLORIS AEP estimates, compute turbine capital costs, balance-of-station (BOS), and operational costs using WISDEM components, and finally give summary estimates of plant finance figures. -The components that achieve this can be assembled to either run a single top-down analysis run, or run an optimization. - -## Roadmap to future capabilities +`Ard` is being developed as a modular tool to enable these types of research queries. +The goals during the development of `Ard` are to be: +1) principled: + - robustly documented + - adhering to [best-practices for code development](https://doi.org/10.2172/2479115) +2) modular and extensible: + - choose the analysis components you want + - skip the ones you don't + - build yourself the ones we don't have +3) effective + - robustly tested and testable at both unit and system levels +These principles guide us to implement, using [`OpenMDAO`](https://openmdao.org) as a backbone, a multi-disciplinary design, analysis, and optimization (MDAO) model of the wind farm layout problem, a toolset to accomplish the capability goals of `Ard`, to: +1) allow optimization of wind farm layouts for specific wind resource profiles +2) enable the incorporation of realistic but well-posed constraints +3) target holistic and complex system-level optimization objectives like LCOE and beyond-LCOE metrics +4) naturally incorporate analyses across fidelities to efficiently integrate advanced simulation -The future development of `Ard` is centered around two user cases: -1) systems energy researchers who are focusing on one specific subdiscipline (e.g. layout strategies, social impacts, or aerodynamic modeling) but want to be able to easily keep track of how it impacts the entire value chain down to production, cost, and/or value of energy or even optimize with respect to it, and -2) private industry researchers who are interested in how public-sector research results change when proprietary analysis tools are dropped in and coupled the other tools in a systems-level simulation. +## Current capabilities -`Ard` is being developed as a modular tool to enable these types of research queries. -This starts from our research goals, which are that `Ard` should be: -1) principled: fully documented, and adhering to best-practices for code development -1) modular and extensible: choose the parts you want, skip the ones you don't, build yourself the ones we don't have -1) effective: fully tested and testable at the unit and system level, and built with a derivative-forward approach +For the beta pre-release of `Ard`, we concentrate on optimization problems for wind plants, starting from structured layouts to minimize LCOE. +This capability is demonstrated for a land-based (LB) wind farm in `examples/01_onshore` and tested in an abridged form in `test/system/ard/api/test_LCOE_LB_stack.py`. +In this example, the wind farm layout is parametrized with two angles, named orientation and skew, and turbine distancing for rows and columns. +Additionally, we have offshore examples adjacent to the onshore example in the `examples` subdirectory. +In the beta pre-release stage, the constituent subcomponents of these problems are known to work and have full testing coverage. -This, then, allows us to attempt to accomplish the technical goals of `Ard`, to: -1) allow optimization of wind farm layouts for specific wind resource profiles -1) target wholistic and complex system-level optimization objectives like LCOE and beyond-LCOE metrics -1) naturally incorporate multi-fidelity analyses to efficiently integrate physics-resolving simulation +These cases start from a four parameter farm layout, compute land use area, make FLORIS estimates of annual energy production (AEP), compute turbine capital costs, balance-of-station (BOS), and operational costs elements of NREL's turbine systems engineering tool [WISDEM](https://github.com/wisdem/wisdem), and finally give summary estimates of plant finance figures. +The components that achieve this can be assembled to either run a single top-down analysis run, or run an optimization. --- diff --git a/docs/logo.png b/docs/logo.png new file mode 100644 index 00000000..012a8717 Binary files /dev/null and b/docs/logo.png differ diff --git a/docs/multi_fidelity_aep.md b/docs/multi_fidelity_aep.md index e45151ef..84ff2d8b 100644 --- a/docs/multi_fidelity_aep.md +++ b/docs/multi_fidelity_aep.md @@ -1,7 +1,3 @@ # Multi-fidelity AEP -Ard is capable of running multiple AEP models in an intelligent way to get increased accuracy (from a mid- to high-fidelity model) and reasonable speed (from a low-fidelity model) at the same time. - -## Setting up a multi-fidelity analysis - -## interpreting the results \ No newline at end of file +*THIS PAGE IS UNDER CONSTRUCTION!* diff --git a/docs/structure.md b/docs/structure.md index 7d8a3eb0..89442fa2 100644 --- a/docs/structure.md +++ b/docs/structure.md @@ -6,25 +6,31 @@ The design intention of `Ard` is to offer a principled, modular, extensible wind In order to balance focus with the modularity and extensibility intended for the code, we will classify different types of components, and build "base `Ard`" with a set of default components. Each type of component will be defined below, and each type of component will have a template parent class which can be used to derive custom user-defined components to serve as drop in replacements in `Ard`. +`Ard` has a set of fundamental variables, that we expect to be used in (almost) every simulation: +- `x_turbines`: a vector of $x$-location of each turbine, i.e. in an East-West local coordinate frame +- `y_turbines`: a vector of $y$-location of each turbine, i.e. in an North-South local coordinate frame +- `power_farm`: a float-valued estimate of the farm's power at a set of wind conditions +- `AEP_farm`: a float-valued estimate of the farm's annual energy production ($\mathrm{AEP}$), when full wind rose data is provided + ## Layout DV Components (`layout`) -Wind farm layout optimization is a significantly challenging problem for global optimization, due to the existence of many local minima. -One strategy for reducing the dimensionality of the design space is the use of layout models. -`layout` components are for connecting some reduced layout variables to (`x_turbines`, `y_turbines`) variables that explicitly describe the layout of a farm for computing the farm aerodynamics. +Wind farm layout optimization is known to be a significantly challenging problem for global optimization, due to the existence of many local minima (see, e.g., [Stanley and Ning, 2019](https://doi.org/10.5194/wes-4-663-2019), among many others). +One strategy for reducing the dimensionality of the design space is to use layout models. +`layout` components are for connecting some reduced layout variables to the turbine location variables, `x_turbines` and `y_turbines`. +These reduced-dimensional variables can be passed to downstream analyses or the full $(x,y)$ set of coordinates can be used for downstream analyses. -The default `layout` component is the grid farm layout defined in `ard/layout/gridfarm.py`, which parameterizes a structured parallelogram-shaped farm in terms of a primary axis, aligned with respect to North by an orientation angle coincident with compass rose angles, with rows spaced along this axis by a constant spacing measured in rotor diameters; and a secondary axis, skewed from orthagonal by a skew angle in the direction of compass angles, with rows spaced along this axis by a constant spacing. +The default `layout` component is the grid farm layout defined in `ard/layout/gridfarm.py`, which parameterizes a structured rectilinear farm in terms of a primary axis, aligned with respect to North by an orientation angle coincident with compass rose angles, with rows spaced along this axis by a constant spacing measured in rotor diameters; and a secondary axis, skewed from orthogonal by a skew angle in the direction of compass angles, with rows spaced along this axis by a constant spacing. This results in four parameters, two nondimensional spacing values and two angles. **tl;dr:** `layout` components map from a simplified parameter set to Cartesian farm coordinates ## Farm Aero Components (`farm_aero`) -Fundamentally, `farm_aero` components will take in a set of farm layout design variables, in terms of `x_turbines` and `y_turbines` components of turbine locations, and potentially with some control command input, namely `yaw_turbines`. +`farm_aero` components take in a set of farm layout design variables, in terms the turbine location variables, `x_turbines` and `y_turbines`, and potentially some control command input, namely `yaw_turbines`. -In addition to these design variables, the turbine definitions to be used and some (possibly comprehensive) set of wind conditions to be queried will also be provided to a given `farm_aero` component. +In addition to these design variables, the turbine definitions to be used and some (possibly comprehensive) set of wind conditions to be queried from a [windIO plant file](https://ieawindsystems.github.io/windIO/main/source/plant_schema.html#site_energy_resource_wind_resource) are also provided to a given `farm_aero` component. -The result of a `farm_aero` component will be a power or energy production quantity of interest. -Typically, these will be a power output estimate for the set of provided conditions or annual energy production estimate for the farm given the wind resource. +The result of a `farm_aero` component is the power or energy production quantity of interest given the wind resource. The default `farm_aero` component is [NREL's FLORIS tool](https://nrel.github.io/floris), which can be found at `ard/farm_aero/floris.py`. We wrap FLORIS to map from `x_turbines`, `y_turbines`, and `yaw_turbines` to turbine powers, turbine thrusts, farm power, and, optionally, farm AEP. @@ -33,38 +39,43 @@ We wrap FLORIS to map from `x_turbines`, `y_turbines`, and `yaw_turbines` to tur ## Collection Components (`collection`) -`collection` components are model the systems that handle the "collection" of energy generated by wind turbines. +`collection` components model the systems that handle the "collection" of energy generated by wind turbines. Namely, this consists of power management systems that move energy from wind turbine generators to substations where energy can be efficiently converted to appropriate forms for long-distance transmission. -`collection` components will take in farm layout, turbine specifications, and substation location(s), and output a set of cable edge lengths, required capacities, and other information about the cable paths. +`collection` components take in farm layout (in terms of `x_turbines` and `y_turbines`), turbine specifications, and substation location(s) (in terms of vector-valued `x_substations` and `y_substations`), and output a set of cable edge lengths, required capacities, and other information about the cable paths. **tl;dr:** `collection` components map farm specifications to the necessary energy management systems ## Economics and Finance Components (`cost`) The `cost` components are less formally structured than the components above, but generally take inputs that are consumable stocks or marketable products of a wind system. -Meanwhile, they give as outputs some measure of the monetary trade value that the wind system can create. +Meanwhile, they give as outputs some measure of the value that the wind system can create. Complete details are provided in the components in the `ard/cost` folder. -The default `cost` component set are the WISDEM tools given in `ard/cost/windse_wrap.py`, which include WISDEM's `LandBOSSE` module for BOS calculation and WISDEM's `PlantFinance` module for computation of LCOE. +The default `cost` component set are the WISDEM tools given in `ard/cost/wisdem_wrap.py`, which include WISDEM's `LandBOSSE` module for BOS calculation and WISDEM's `PlantFinance` module for computation of LCOE. **tl;dr:** `cost` components map from machines and their production of energy to money inputs and outputs # Explanation of Utilities (`utils`) -The `utils` sub-module of Ard contains the many generic capabilities needed for effective wind farm design and optimization in order to facilitate maximum code reuse. However, utils includes only generalized functions and methods and excludes most code that is technology-specific (see IO as an exception). As the capabilities in `utils` expand, some of them could eventually be broken off into a separate package. The utils are divided into the following categories: +The `utils` sub-module of Ard contains the many generic capabilities needed for effective wind farm design and optimization in order to facilitate maximum code reuse. +However, utils includes only generalized functions and methods and excludes most code that is technology-specific (see IO as an exception). +As the capabilities in `utils` expand, some of them could eventually be broken off into a separate package. +Utilities are divided into the following categories: ## Core The capabilities housed in `core.py` are generic and short enough that having a discipline-specific file is not warranted. ## Geometry -The capabilities housed in `geometry.py` are generic geometry-related code. They calculate distances, define shapes, and generally simplify working with geometric tasks in a continuously differentiable way in Ard. +The capabilities housed in `geometry.py` are generic geometry-related code. +They calculate distances, define shapes, and generally simplify working with geometric tasks in a continuously differentiable way in Ard. ## IO The capabilities in `io.py` provide for loading and saving information and may be technology specific. ## Mathematics -The capabilities housed in `mathematics.py` are pure mathematical functions generally formulated to be continuously differentiable. These functions are useful in a range of applications within Ard and design optimization generally. +The capabilities housed in `mathematics.py` are pure mathematical functions generally formulated to be continuously differentiable. +These functions are useful in a range of applications within Ard and design optimization generally. ## Test Utils The capabilities housed in `test_utils.py` are specifically for use in testing and not in other parts of Ard. diff --git a/docs/testing.md b/docs/testing.md new file mode 100644 index 00000000..73e4b803 --- /dev/null +++ b/docs/testing.md @@ -0,0 +1,13 @@ +# Unit and system testing + +The installation can be tested comprehensively using `pytest` from the top-level directory. +The developers also provide some convenience scripts for testing new installations; from the `Ard` folder run unit and regression tests: +```shell +source test/run_local_test_unit.sh +source test/run_local_test_system.sh +``` +These enable the generation of HTML-based coverage reports by default and can be used to track "coverage", or the percentage of software lines of code that are run by the testing systems. +`Ard`'s git repository includes requirements for both the `main` and `develop` branches to have 80% coverage on unit testing and 50% testing in system testing, which are, respectively, tests of individual parts of `Ard` and "systems" composed of multiple parts. +Failures are not tolerated in code that is merged onto these branches and code found therein *should* never cause a testing failure if it has been found there. +If the process of installation and testing fails, please open a new issue [here](https://github.com/WISDEM/Ard/issues). +If the process of installation and testing fails, please open a new issue [here](https://github.com/WISDEM/Ard/issues). diff --git a/examples/01_onshore/inputs/ard_system.yaml b/examples/01_onshore/inputs/ard_system.yaml index e6cd11eb..25a02bc2 100644 --- a/examples/01_onshore/inputs/ard_system.yaml +++ b/examples/01_onshore/inputs/ard_system.yaml @@ -1,9 +1,7 @@ -system: "onshore" - modeling_options: windIO_plant: !include windio.yaml layout: - type: "gridfarm" + type: gridfarm N_turbines: 25 N_substations: 1 spacing_primary: 7.0 @@ -15,14 +13,14 @@ modeling_options: peak_shaving_TI_threshold: 0.0 collection: max_turbines_per_string: 8 - solver_name: "highs" + solver_name: highs solver_options: time_limit: 60 mip_gap: 0.02 model_options: - topology: "radial" # "radial", "branched" - feeder_route: "segmented" - feeder_limit: "unlimited" + topology: radial # radial, branched + feeder_route: segmented + feeder_limit: unlimited offshore: false floating: false costs: @@ -44,16 +42,19 @@ modeling_options: tcc_per_kW: 1300.00 # (USD/kW) opex_per_kW: 44.00 # (USD/kWh) +system: onshore + analysis_options: driver: name: ScipyOptimizeDriver options: - optimizer: "COBYLA" + optimizer: COBYLA opt_settings: rhobeg: 2.0 + maxiter: 50 debug_print: - - "desvars" - - "objs" + - desvars + - objs design_variables: spacing_primary: lower: 3.0 @@ -69,15 +70,15 @@ analysis_options: upper: 45.0 constraints: boundary_distances: - units: "km" + units: km upper: 0.0 scaler: 2.0 spacing_constraint.turbine_spacing: - units: "km" + units: km lower: 0.552 objective: name: financese.lcoe options: scaler: 1.0 recorder: - filepath: "cases.sql" + filepath: cases.sql diff --git a/examples/01_onshore/inputs/windio.yaml b/examples/01_onshore/inputs/windio.yaml index 507757b2..b69c8274 100644 --- a/examples/01_onshore/inputs/windio.yaml +++ b/examples/01_onshore/inputs/windio.yaml @@ -3,8 +3,8 @@ site: name: Ard Example 01 offshore wind site boundaries: polygons: - - x: [ 1.5, 3.0, 3.0, 1.5, -1.5, -3.0, -3.0, -1.5] - y: [ 3.0, 1.5, -1.5, -3.0, -3.0, -1.5, 1.5, 3.0] + - x: [ 1500.0, 3000.0, 3000.0, 1500.0, -1500.0, -3000.0, -3000.0, -1500.0] + y: [ 3000.0, 1500.0, -1500.0, -3000.0, -3000.0, -1500.0, 1500.0, 3000.0] energy_resource: name: Ard Example 01 offshore energy resource wind_resource: !include ../../data/windIO-plant_wind-resource_wrg-example.yaml diff --git a/examples/01_onshore/inputs/wrg_example.wrg b/examples/01_onshore/inputs/wrg_example.wrg deleted file mode 100644 index cba94e7c..00000000 --- a/examples/01_onshore/inputs/wrg_example.wrg +++ /dev/null @@ -1,7 +0,0 @@ -2 3 0.0 0.0 1000.0 - 0 0 0 90 9.5 2.25 0 12 116 106 273 86 93 228 61 76 220 54 74 220 66 79 220 121 98 244 177 107 279 84 89 232 43 70 195 36 75 188 53 100 201 98 111 267 - 0 1000 0 90 9.6 2.31 0 12 116 107 341 86 93 228 61 76 220 54 74 220 66 79 220 121 98 244 177 107 279 84 89 232 43 70 195 36 75 188 53 100 201 98 111 267 - 0 2000 0 90 9.7 2.36 0 12 116 106 409 86 93 228 61 76 220 54 74 220 66 79 220 121 98 244 177 107 279 84 89 232 43 70 195 36 75 188 53 100 201 98 111 267 - 1000 0 0 90 9.6 2.34 0 12 116 106 273 86 93 228 61 76 220 54 82 407 66 79 220 121 98 244 177 107 279 84 89 232 43 70 195 36 75 188 53 100 201 98 111 267 - 1000 1000 0 90 9.6 2.40 0 12 116 107 341 86 93 228 61 76 220 54 82 407 66 79 220 121 98 244 177 107 279 84 89 232 43 70 195 36 75 188 53 100 201 98 111 267 - 1000 2000 0 90 9.7 2.46 0 12 116 106 409 86 93 228 61 76 220 54 82 407 66 79 220 121 98 244 177 107 279 84 89 232 43 70 195 36 75 188 53 100 201 98 111 267 \ No newline at end of file diff --git a/examples/01_onshore/optimization_analysis.ipynb b/examples/01_onshore/optimization_analysis.ipynb deleted file mode 100644 index 7fb223e1..00000000 --- a/examples/01_onshore/optimization_analysis.ipynb +++ /dev/null @@ -1,303 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Introductory Tutorial: Estimating and Minimizing LCOE\n", - "\n", - "In this demo analysis, we will analyze the `Ard` layout-to-LCOE stack for land-based analysis.\n", - "First, `Ard` must be installed, and the unit and system tests must be able to run correctly.\n", - "If the unit and system testing suite runs correctly, the example here should be guaranteed to run correctly; see `test/README.md`.\n", - "\n", - "Assuming these are done and `Ard` has been installed cleanly, you should be able to run an LCOE optimization problem in this directory by typing\n", - "```shell\n", - "python optimization_demo.py\n", - "```\n", - "at the command line with the current working directory set to that which holds this file.\n", - "The result is that an output directory `optimization_demo_out` should be created, and a directory `case_files` holding configuration files that allow repeatable single-discipline analyses.\n", - "\n", - "In the next section, we will detail what the optimization case in `optimization_demo.py` does.\n", - "\n", - "## Optimization code description\n", - "\n", - "In `optimization_demo.py`, we built out a demonstration of totally stock onshore `Ard` run.\n", - "We configure the `Ard` \"system\" in the file `inputs/ard_system.yaml`.\n", - "For `Ard` a system refers to the set of disciplinary analyses to be run in an analysis or optimization problem.\n", - "So, in this file, we:\n", - "1. specify an Ard onshore preset system using: `system: \"onshore\"`, consisting of:\n", - " 1. a finite-differencable layout-to-AEP group:\n", - " 1. a layout component to map from orientation angle, primary and perpendicular spacing, and skew angle parameters (4 total) to $(x,y)$ locations for 25 turbines\n", - " 2. a FLORIS AEP component to compute AEP given the turbines and layout\n", - " 2. a land use component to map from the parameterized layout (or a raw layout) to a measure of the land used by the farm\n", - " 3. a detailed collection system design component: DTU's `optiwindnet`\n", - " 4. a turbine spacing constraint component\n", - " 5. a WISDEM-based turbine capital costs component\n", - " 6. a component for BOS estimation using LandBOSSE\n", - " 7. a WISDEM-based operating and maintenance component\n", - " 8. a WISDEM-based plant finance integration component\n", - " - this default system (and some alternative options) can be found at `ard/api/default_systems/ard_system_onshore.yaml`\n", - "2. configure the modeling options for the problem at hand\n", - " - farm specifications\n", - " - a wind dataset to use: `wrg_example.wrg`, [which is borrowed directly form the FLORIS dataset](https://github.com/NREL/floris/blob/fd0e599ef01dc9f1d426d2b4c99e2f6beb57fefd/examples/examples_wind_resource_grid/wrg_example.wrg)\n", - " - a wind turbine specification to use, for now via a specialized `Ard` input file, which generalizes the collective of variables that will define the design and costs of a wind turbine, across various tools\n", - " - collection system solver details\n", - " - floating/offshore flags\n", - "3. specify the analysis that we want to perform\n", - " - for now, an COBYLA gradient-free optimization using the Scipy driver from OpenMDAO\n", - " - on the four parametric layout design variables\n", - " - subject to constraints on turbine spacing (minimum 3 rotor diameter spacing)\n", - " - optimizing for the minimum LCOE\n", - "This analysis is specified in the yaml file and input in line 15 of `optimization_demo.py`.\n", - "The next call, sets up the model and creates an OpenMDAO \"problem\" to solve.\n", - "Flipping the flag to `True` in line 20 will turn on [an OpenMDAO tool called N2 Diagrams](https://openmdao.org/newdocs/versions/latest/features/model_visualization/n2_details/n2_details.html), which allows the analysis system to be vizualized!\n", - "\n", - "From here, we run a single top-down analysis run, as in line 25, for the configuration declared in the system yaml file.\n", - "The results will be printed to the command line, including the key outcomes in the problem.\n", - "\n", - "Next, if `optimize` is set to `True` in line 47, a short optimization problem will run, to solve the problem set up in the system yaml file.\n", - "Again, the results of this optimization will be printed to the screen but additionally the output of the optimization will be written to a driver for analysis here." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from pathlib import Path\n", - "\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import openmdao.api as om\n", - "\n", - "# use a dark background for plotting\n", - "plt.style.use([\"dark_background\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "# load the results\n", - "\n", - "# get the case data from the OpenMDAO optimization\n", - "cr = om.CaseReader(Path.cwd() / \"optimization_demo_out\" / \"cases.sql\")\n", - "driver_cases = cr.list_cases(\"driver\", out_stream=None)\n", - "\n", - "# extract the relevant optimization variables\n", - "objective_values = {}\n", - "constraint_values = {}\n", - "design_variables = {}\n", - "\n", - "# initialize all the data variables\n", - "case_init = cr.get_case(driver_cases[0])\n", - "for k_obj in case_init.get_objectives().keys():\n", - " objective_values[k_obj] = []\n", - "for k_cons in case_init.get_constraints().keys():\n", - " constraint_values[k_cons] = []\n", - "for k_DV in case_init.get_design_vars().keys():\n", - " design_variables[k_DV] = []\n", - "\n", - "# then populate them\n", - "for case in [cr.get_case(v) for v in driver_cases]:\n", - " for k_obj, v_obj in case.get_objectives().items():\n", - " objective_values[k_obj].append(np.array(v_obj))\n", - " for k_cons, v_cons in case.get_constraints().items():\n", - " constraint_values[k_cons].append(np.array(v_cons))\n", - " for k_DV, v_DV in case.get_design_vars().items():\n", - " design_variables[k_DV].append(np.array(v_DV))\n", - "\n", - "# create some pretty variable names:\n", - "title_map = {\n", - " \"financese.lcoe\": \"levelized cost of energy, $\\\\mathrm{LCOE}^{(i)}$ (\\\\$/kWh)\",\n", - " \"turbine_spacing\": \"turbine spacing constraint values (m)\",\n", - " \"spacing_primary\": \"primary axis spacing ($D_{\\\\mathrm{rotor}}$)\",\n", - " \"spacing_secondary\": \"secondary axis spacing ($D_{\\\\mathrm{rotor}}$)\",\n", - " \"angle_orientation\": \"orientation angle (degrees)\",\n", - " \"angle_skew\": \"skew angle (degrees)\",\n", - "}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Analysis\n", - "\n", - "Given the result of the last iteration analysis, we can now explore how the optimization arrived at it.\n", - "In the next few sections, we show the path of the optimizer.\n", - "\n", - "### Objective function" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlAAAAG0CAYAAAD93xlMAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAV7xJREFUeJzt3XtclFX+B/DPDMNFdAABuSp4By8pNy0VNTGttd1S3PSX62ZGXmsts1ztQluuWitI3jNv623btoulmwVlKBa6CVle8AqaitwFZoBhGOD8/kCmJkCZeQZmGD7v1+v7WufMmfN857Ftvp3nPOeRARAgIiIiomaTWzoBIiIioraGBRQRERGRkVhAERERERmJBRQRERGRkVhAERERERmJBRQRERGRkVhAERERERlJYekEbJWfnx/UarWl0yAiIiIjKJVK3Lx58679WEC1AD8/P2RnZ1s6DSIiIjKBv7//XYsoFlAtoH7myd/fn7NQREREbYRSqUR2dnazfrtZQLUgtVrNAoqIiMgGcRE5ERERkZFYQBEREREZiQUUERERkZFYQBEREREZiQUUERERkZFYQBEREREZiQUUERERkZFYQBEREREZiQUUERERkZFYQBEREREZiQUUERERkZFYQBEREREZiQ8TbkMcOzrD2cWlQXtZcTF0lVoLZERERNQ+sYBqQ+6d/Agefem5Bu0VpSqsfPgxVJSqLJAVERFR+8NLeG1IbXUNdJVagwAAZ1cX+AX1sXB2RERE7YdVF1Dz5s1DVlYWNBoN0tLSEBkZecf+o0aNQlpaGjQaDTIzMzFnzpwm+06dOhVCCOzbt6/JPkuWLIEQAgkJCSZ/B3P69l8fYsmQ+w3i0vE0AICLl6eFsyMiImo/rLaAmjJlCt555x0sX74coaGhOHr0KL744gt069at0f7du3fHwYMHcfToUYSGhmLFihVYu3YtoqOjG/QNCAhAXFwcUlJSmjx+REQEZs+ejZ9++sls36kllOYXAABcu7CAIiIiai1WW0C98MIL2LZtG7Zt24bz589j4cKFuH79OubNm9do/7lz5+LatWtYuHAhzp8/j23btmH79u148cUXDfrJ5XLs3bsXr7/+OrKyshodq2PHjti7dy9mzZqF4uJis383c1IV1BVQLl5dLJwJERFR+2GVBZS9vT3Cw8ORlJRk0J6UlIThw4c3+plh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UP37QgjT/o1qzicS8d/o1E5UlldAozLvfwiygLIwFlD0a519fdA9dBC69g9CtwH94N+vb4O1U79VW1sLbXkFOig7NXivJDcPe5e+gay0kwbtMpkMA8aMQtCIe9HZzwedfevC0bmDWb8PEZE1OLzzXzgQt86sYxrz+62447tEJFlxTi6Kc3Jx8mASgLpCx83XG06dOsKxgzMcO9ZFjU4HVUERSgsKUXbrFmqra9DRzRU+fXrB93Zo1GU4tHVXo//VJYTAmW+O4Mw3RwzanV1dILezQ3VVFaqrdKjR6WDv5Ai/vn3QdUAwuvYPRtf+QXDq1FE/g1J3N6EAIINMLoNcLodMJgdkdTNStfUzM7W1KC8ugfrWLagLb0FddAvVVVVwdnVBRzdXOLu6wtnVBQpHB9gpFHVhX/e/cjs7yO3s6v6ssINGpUZpXgFK8vJRmpePSnUZOnm4w9XLEy5eXeDapQsUjg71XxZCCNTW1kKVX4iSvDz9zBEAffHo5usNV68usFMoAFn9zJUM1VotbuXUXd4syc2DqqAQTp066WeyXL27oKOb2+0ZuV8+9+v/3qy/4/KXB1rL2uzDrWUymUl3kDbnc231nJD1a2oZRGvhDFQL4AwUERFR22PM7zefhUdERERkJBZQREREREZiAUVERERkJBZQREREREZiAUVERERkJBZQREREREZiAUVERERkJBZQREREREZiAUVERERkJBZQREREREZiAUVERERkJBZQREREREZiAUVERERkJBZQREREREZSWDoBW6ZUKi2dAhERETWTMb/bLKBaQP1fQHZ2toUzISIiImMplUqo1eo79pEBEK2TTvvi5+d315NvCqVSiezsbPj7+7fI+PQLnuvWw3PdeniuWw/Pdesx57lWKpW4efPmXftxBqqFNOfkS6FWq/l/yFbCc916eK5bD8916+G5bj3mONfN/TwXkRMREREZiQUUERERkZFYQLUxWq0Wf/vb36DVai2dis3juW49PNeth+e69fBctx5LnGsuIiciIiIyEmegiIiIiIzEAoqIiIjISCygiIiIiIzEAoqIiIjISCyg2pB58+YhKysLGo0GaWlpiIyMtHRKbd6SJUvw/fffQ6VSIS8vD/v27UPfvn0b9Hv99deRnZ2NiooKJCcno3///hbI1rYsWbIEQggkJCQYtPNcm4efnx92796NwsJClJeX4+TJkwgLCzPow3MtnZ2dHZYtW4asrCxUVFQgMzMTr732GmQymUE/nmvjjRw5Evv370d2djaEEHj00Ucb9LnbeXVwcMDatWtRUFCAsrIyfPbZZ/D39zdbjoJh/TFlyhSh1WpFTEyMCA4OFgkJCUKtVotu3bpZPLe2HF988YWYMWOG6N+/vxg0aJA4cOCAuHr1qnB2dtb3Wbx4sSgtLRWTJk0SAwYMEO+//77Izs4WnTp1snj+bTUiIiJEVlaW+PHHH0VCQgLPtZnDzc1NXLlyRWzfvl0MGTJEBAYGiqioKNGzZ0+eazPHyy+/LAoKCsSECRNEYGCgmDx5slCpVGLBggU81xLjoYceEsuWLROTJk0SQgjx6KOPGrzfnPO6ceNGcf36dTF27FgREhIiDh06JE6ePCnkcrk5crT8SWLcPY4fPy42btxo0JaRkSFWrFhh8dxsKTw9PYUQQowcOVLfdvPmTbF48WL9awcHB1FcXCxmz55t8XzbYnTs2FFcuHBBjB07ViQnJxsUUDzX5omVK1eKlJSUO/bhuTZPHDhwQGzdutWg7aOPPhK7du3iuTZjNFZA3e28uri4CK1WK6ZMmaLv4+vrK6qrq8X48eMl58RLeG2Avb09wsPDkZSUZNCelJSE4cOHWygr2+Tq6goAuHXrFgCgR48e8PX1NTj3VVVVOHLkCM+9iTZs2IDPP/8chw4dMmjnuTafRx55BGlpafjPf/6DvLw8/PDDD3j66af17/Ncm8+3336LsWPHok+fPgCAQYMGITIyEgcPHgTAc91SmnNew8PD4eDgYNAnJycHZ86cMcu558OE2wBPT08oFArk5eUZtOfl5cHHx8dCWdmm1atX4+jRozh79iwA6M9vY+c+MDCw1fNr66ZOnYqwsDAMGTKkwXs81+bTs2dPzJs3D6tXr8aKFSswdOhQrF27FlqtFrt37+a5NqO3334brq6uOH/+PGpqamBnZ4dXXnkF//73vwHwn+uW0pzz6uPjA61Wi5KSkgZ9zPHbyQKqDRFCGLyWyWQN2sh069ev1//X42/x3EvXtWtXrFmzBuPHj7/j4xZ4rqWTy+VIS0vDK6+8AgD48ccfMWDAAMybNw+7d+/W9+O5lm7q1KmYPn06pk2bhrNnzyIkJATvvPMObt68iV27dun78Vy3DFPOq7nOPS/htQGFhYWorq5uUDF7eXk1qL7JNGvXrsUjjzyCMWPGIDs7W9+em5sLADz3ZhAeHg5vb2+kp6dDp9NBp9Ph/vvvx4IFC6DT6fTnk+daupycHGRkZBi0nTt3DgEBAQD4z7U5rVq1Cm+99RY++OADnDlzBnv27EFCQgKWLl0KgOe6pTTnvObm5sLR0RFubm5N9pGCBVQboNPpkJ6ejnHjxhm0jxs3DqmpqRbKynasW7cO0dHRiIqKwtWrVw3eu3LlCnJycgzOvb29PUaPHs1zb6RDhw5h4MCBCAkJ0ceJEyewd+9ehISEICsri+faTL777jsEBQUZtPXt2xc///wzAP5zbU7Ozs6ora01aKupqYFcXvfzynPdMppzXtPT01FVVWXQx8fHBwMHDjTbubf46nrG3aN+G4OZM2eK4OBgsXr1aqFWq0VAQIDFc2vLsWHDBlFcXCxGjRolvL299eHk5KTvs3jxYlFcXCwmTpwoBgwYIPbu3ctbkM0Uv70Lj+faPBERESGqqqrE0qVLRa9evcTjjz8uysrKxLRp03iuzRw7duwQ169f129jMHHiRJGfny/eeustnmuJ0bFjRzF48GAxePBgIYQQzz//vBg8eLB++57mnNeNGzeKa9euiaioKBESEiK+/vprbmPQHmPevHniypUrorKyUqSlpRncas8wLZoyY8YMg36vv/66uHnzptBoNOLw4cNiwIABFs/dFuK3BRTPtfni4YcfFqdOnRIajUZkZGSIp59+ukEfnmvp0alTJ5GQkCCuXr0qKioqxOXLl8WyZcuEvb09z7XEGD16dKP/ft6xY0ezz6ujo6NYu3atKCwsFOXl5WL//v2ia9euZslPdvsPRERERNRMXANFREREZCQWUERERERGYgFFREREZCQWUERERERGYgFFREREZCQWUERERERGYgFFREREZCQWUERERERGYgFFREREZCQWUERERERGYgFFRHeVnJyMhIQEqxmnPRzDFJbM691338XevXubfN/d3R15eXkIDAy84zgffvghFi5caO70iFqExR8YyGAwrCcae8Bv586dzfLkeHON01Se5j5Gc79HU7m05t9Ra333O50TZ2fnJt9ftWqV2Lp1613Hueeee0RhYaFQKpUW+R4MRnODM1BEdFfFxcUoKyuzmnFs9Rj29vaSPt8a3/1Ox66oqGj0PScnJ8TExGDr1q13Hef06dO4evUq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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# plot the objective function of the optimization problem\n", - "fig, ax = plt.subplots()\n", - "for name_obj, values_obj in objective_values.items():\n", - " ax.plot(values_obj, label=title_map[name_obj])\n", - "ax.set_xlabel(\"optimization iteration, $i$ (-)\")\n", - "ax.set_ylabel(title_map[name_obj])\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Constraints\n", - "\n", - "There are actually no constraints on this problem so the next block won't output anything..." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "turbine_spacing\n" - ] - }, - { - "data": { - "image/png": "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y+XLca5eLrnkEpYsWcKXX35JdnY2y5Yt4+abb45cl+Ndffz5558MGDCAFi1aANCxY0f69u3LTz/9BMixrimqMq7dunXDZrOVK5OZmcnq1auPeezl4a61RFJSEhaLhezs7HL52dnZpKSk1JJV/0xeeeUV5s6dy5o1awAi41vZ2KelpR13+05mrrzySrp27cppp51W4Zoc5+qladOmjBo1ildeeYVnn32WHj16MH78eAKBAJMnT5bjXY288MILxMbGsn79egzDQNM0Hn30UT7//HNAvrdriqqMa0pKCoFAgMLCwgpljvXZKQVRLSOEKPdaUZQKeZKj54033oh8uzsQOfbHRoMGDXjttdcYOHDgIUPry3GuHlRVZcmSJTz66KMArFixgnbt2jFq1CgmT54cKSfH+9i58sorueaaaxg+fDhr1qyhc+fOvPrqq+zevZtJkyZFysmxrhmOZlyrY+zllFktkZubi67rFRRtcnJyBXUsOTrGjx/PJZdcwllnnUVGRkYkPysrC0CO/THSrVs36taty9KlSwmFQoRCIfr3789dd91FKBSKjKUc5+ohMzOTtWvXlstbt24djRo1AuT7ujoZO3Yszz//PF988QWrV6/m448/Zty4cTz88MOAHOuaoirjmpWVhd1uJy4u7qBljhYpiGqJUCjE0qVLOffcc8vln3vuucyfP7+WrPrn8PrrrzNs2DDOPvtstm/fXu7atm3byMzMLDf2VquVM888U479ETBz5kzat29P586dI2nx4sV88skndO7cma1bt8pxrkbmzZtHq1atyuW1bNmSHTt2APJ9XZ24XC5M0yyXZxgGqhp+ZMqxrhmqMq5Lly4lGAyWK5OSkkL79u2rZexrfaX5qZr2bru/4YYbROvWrcUrr7wiSkpKRKNGjWrdtpM5vfnmm6KgoED069dP1K1bN5IcDkekzOjRo0VBQYEYMmSIaNeunfjkk0/kltlqSAfuMpPjXH2pe/fuIhgMiocfflg0a9ZMXH311cLj8Yjhw4fL8a7m9MEHH4j09PTItvshQ4aIPXv2iOeff16O9TGmqKgo0alTJ9GpUychhBD33HOP6NSpUyTcTFXG9a233hI7d+4UZ599tujcubP47bff5Lb7f0IaNWqU2LZtm/D7/WLJkiXltobLdHTpYIwYMaJcuTFjxojdu3cLn88nZs2aJdq1a1fr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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# plot the constraint function of the optimization problem\n", - "if constraint_values.keys():\n", - " fig, axes = plt.subplots(\n", - " len(constraint_values.keys()), 1, sharex=True, squeeze=False\n", - " )\n", - " for idx_cons, (name_cons, values_cons) in enumerate(constraint_values.items()):\n", - " print(name_cons)\n", - " axes[idx_cons, 0].plot(values_cons, label=name_cons)\n", - " axes[idx_cons, 0].set_ylabel(title_map[name_cons])\n", - " axes[-1, 0].set_xlabel(\"optimization iteration, $i$ (-)\")\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Design variables" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkQAAAFYCAYAAACyHOMnAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAWcRJREFUeJzt3Xl4U2XaP/BvlqZrurF1gZYdgbKXTREY1hkcBUFFGZDpFBDmFRDFjohFR/gBylIFh3FBERA3VAQUhkVRUNayCBSRrWXpRksLbZo2bZPz+yPNaUPT0iYnzfb9XNe5XnJyTnL3ML69uZ/7eR4ZAAFEREREHkzu6ACIiIiIHI0JEREREXk8JkRERETk8ZgQERERkcdjQkREREQejwkREREReTwmREREROTxmBARERGRx1M6OgBXERERgcLCQkeHQURERPWgVquRkZFxz+uYENVBREQE0tPTHR0GERERWSEyMvKeSRETojowVYYiIyNZJSIiInIRarUa6enpdfrdzYSoHgoLC5kQERERuSE2VRMREZHHY0JEREREHo8JEREREXk8JkRERETk8ZgQERERkcdzqoTowQcfxLZt25Ceng5BEDB69Ohq17z66qtIT0+HVqvFvn370KlTp3t+7tixY5GSkoKSkhKkpKRgzJgxdoieiIiIXJVTJUT+/v747bff8Oyzz1p8PyEhAc8//zyeffZZ9O7dG1lZWdizZw8CAgJq/Mx+/frhiy++wMaNG9GtWzds3LgRX375Jfr06WOvH4OIiIhckOCMhyAIwujRo83OZWRkCAkJCeJrlUol5OfnC9OmTavxcz7//HNhx44dZud27twpfPrpp3WORa1WC4IgCGq12uHPhQcPHjx48OBRt6M+v79dZmHGVq1aITw8HLt37xbPlZaW4ueff8b999+P999/3+J9/fv3R1JSktm5Xbt24bnnnqvxu1QqFby9vcXXarXatuBdyMBJT+JP/5gIudx5iocGvR7/+88HOPL1NkeHQkREbsplEqKwsDAAQHZ2ttn57OxsREdH13qfpXtMn2fJvHnz8Nprr1kfrAt74KlxCGzcyNFhVBP78F+YEBERkd24TEJkIgiC2WuZTFbtnK33LFmyBCtXrhRfm/ZCcXcqXx80btEcALBq4lSUFGocHBEQ3a0Lxr/+MnzUNfeJERER2cplEqKsrCwAxoqP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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjMAAAFYCAYAAACmiX3GAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAARn1JREFUeJzt3XlcVOX+B/DPDJssgzuyo6KooILglqGm5p5m2U/brTTLytS8WWZqaqVmSuo1rVxK03utW17tprmlaOISKoogKouIbAqI7AwMz+8PZHJicQbOcGbg8369nldw1s88VvP1Oc85RwFAgIiIiMhMKeUOQERERFQXLGaIiIjIrLGYISIiIrPGYoaIiIjMGosZIiIiMmssZoiIiMissZghIiIis8ZihoiIiMyapdwB6oOrqytyc3PljkFEREQGUKlUSElJeeB2Db6YcXV1RXJystwxiIiIqBbc3NweWNA0+GKmYkTGzc2NozNERERmQqVSITk5Wa/v7gZfzFTIzc1lMUNERNQAcQIwERERmTUWM0RERGTWWMwQERGRWWMxQ0RERGaNxQwRERGZNRYzREREZNZYzBAREZFZYzFDREREZo3FDDVYj772MqZ//zVaebrLHYWIiIyIxQw1OEoLC0z4aC5GvjUVbf27YfSsN+WORERERsRihkyejZ0dRs96Az4P9XrgtpbW1nhhxRL0GT8WZRoNysrK0P3RR+Di410PSYmISA4sZsjk9Xx8FAa/8gJe+3oNxs+fA2tb2yq3s7Gzw5R1K9F96CCUqtXYOnseLuw/DAAY+tor9RmZiIjqUaN50SSZr3YB3bQ/95vwBHwe6oV/fbAE1yMuAgBaebqjY99eeOipcXDr4oOi/Hxsefs9xJ45i1vXb8B/+BD4DxsM547eSLsW98DzPTnvH/Dw64LcjEzkZGYiL/MOstPScX7fQRTnFxjtcxIRUe2wmCGT5+VfXszs/3Ijeo0bjVYe7njzu/W4HHoCLp06oIWri3bb/DvZ+GbaO0iKugwASI9LwMWDRxAwfAiGvvYytv3jwxrP5dqpIx5+enyV69w6++Cnj1dI9KmIiEgqvMxEJs3RqTVauLmgTKNB6Hf/wsrxL+DMf/8HpVIJv0H90cLVBaVqNa6dDsfe1RuwasJL2kKmwsGvtgAAug8dhDbe7Wo8X9fBAwAAcWfP48dFy/Dbum9w9n+/AQACRj4KCysrI3xKIiKqC47MkElr698VAJB6NQ7FBeWXeHbO/wQR+w7Bs7sfblyMQvy5CJQUFVd7jLRrcbhw4Hf4DxuMoa+9jO/nLKh224pi5szP/0P4nr0AAIVCAe9egWjWxgld+vfDpd9D9cre+4kx8OnbEzsXflpjPqkoLS3g1NYLLj4d4OrjDRefDii4m4Pf/vk1spJTJTtPC3dX+A8bDGtbW+Tczii/HHc7A7kZWSjKL4C6oACa0lLJzkdE9CAsZsiktb03X+b6hUid5VfCTuNK2Gm9j3Pwq83wHzYY/sOH4OCGzUiPv15pm+auznDr7IMyjQbRoX9olwshcH7vQQx6+TkEjh6mVzFjaW2Nx9+bgSb29ogKPYHzew/onVVfTRzs0TagG9oFBqB9oD88unaBlY1Npe26Dh6IfWs24I9//QeirEy7XKFQoF1QAFw6ekNTUoJSdQlK1WqUqktQkJOD3IxM5GZkoigvH00c7OE/fAh6jhmJ9kEBD8xWWlICdUEhstPSkXTpMm5EXUbSpWikXouDlbUNHFq2gKplC6haNoeltTXURUVQFxahpLAIJepi2KpUcGjRvLy1bA5blQoWVpawtLKChZUVlBYWKMzNRU76bdy9Vd7ys3Ng1cQG1rZNYN2kCaxtbWFpbQULS0soLS3L/2mhRFmpBqUlJdCUlqKstPTeXW8CokyDMk0ZysrKACEgysogBAAIKC0t0cTODjb2drBxsIeNbROUFKtRnF+A4oICFOcXoFStLj+HlSUsLa2gtLr3v9eKY5UJCAgooAAUCigUABSKe+sFysrK7p2z4rzl++pQKCp39n3biL9vX5OKbRUKKBT3Zbp/tRCGHVMCiqo+433qOw/pJz3+OlKvxsp2fhYzZNK87o3M/L2YMVTq1ThcPHQU3R99BI++9jK2v7ew0jZdB5WPysSfu4CCuzk66879uh+DXn4OvgMfRhMHexTl5dd4vo59e6GJvT0AwLtXD0mLGUtrazz/2WL4PRIMpYWFzrqi/HykXo1D6tVYpMXGo/uwwejQKxDj3p+FgBGPYueCT2BlY4Meo4ahx6ihaNbG6YHnKykuhkKhgKW1NQCgTKPBtVN/IiMpGY6tW91rLeHQorm2mLK0soJlUyvYNXWEa6eO6DN+bPm+ZWVQKnl1m6ihOfTNdyxmiKpiaW0Nd9/OAIDrEXUrZgDg4IbN6P7oIwgYPgT7132DjBs3ddZXXGK69PuxSvumXLmGtNh4OHdoj+6PDsKZ//6vxnN1f/QR7c/eQT3qnP1+4+bOQrchAwEAGTduIv5cBBLOXkD8+QvIvHFT52+uYTt/Rt+nxuGxd95E24BuePe/O3SKicKcXMSFnwMAWFhbw9LKClZNbGDftCkcWraArcpBW6CkXotD+J59OLf3AHJu3a4ym9LSAta2trCxs4WNnR2c2nnBw68LPLqWNztHRwBAcUEB8rLuIDczCyVFxeUjKk2awKpJ+ahKYV4e8jKzkJd1B3lZd1CQkwtNSUn5CFJJKUSZBnaOjnBs0xpNncqbraMKpcVqFBcWQl1YCHVhETRqNTSlGmhKS6EpKYUQZVBaWMDi3khN+SiPEkqlEgoLCygUivICUQEooIBCqYRCoYBGU1o+CnOvqQuLYGltVT5SY28HGzs7WFpb3zvPX6M+QgAKpeKvYykV5SM0QpSPeqD8z0qptIBCqSjPUfHnc2+EQgGFdjsAuqM1941iKPC3EQ0FgOoGMRQVuyvuZbl3aJTnuv/cNR7nb8erlSqOLao5ofYz6pOptox1bGNmNgGZScmynl/WYqZ///549913ERQUBFdXV4wbNw67d+/W2WbhwoWYOnUqmjdvjtOnT+PNN99EdHS0TImpPrn7doallRVyM7OQdTOlzsdLuXINUUf/gN8jwRj8ygv44aOl2nV2TR21l0+ijlQuZgDg3K8HMGrG6wgcPbzGYkZpYQG/Qf21vzu184KqVUvkZmTW+TP0GjcaDz01DmVlZdj4xmxcOXGqxu2FEDj54y5cPnYCTy18D13690NJcTGiQ0/g3K/7cfn4SWhKSqrd39LGBqqWzaFUWiDz5oP/Z1VWqkFRbh6KcvMAALcSEnWKQ1WrlijOz4e6sEjPT0xE9GCyjvfa29vjwoULeOutt6pcP2fOHLzzzjt466230KtXL6SlpeHgwYNwcHCo56QkB+18GQlGZSoc3vgdACBo7EidSyxdBjwMpYUFUq5cq3ay7Lm9+wEA3r0D4ejUutpztA8KgH2zpsjLuoOUK9fK9+lZ99EZt84+GD/vXQDA/nXfPLCQuV92+i1sfGM2Ph31f1g4cBS2zp6HS78fq7GQAYDS4mLcSUnTq5DRR25GJgsZIpKcrMXMb7/9hvnz52PXrl1Vrp85cyY++eQT7Nq1C1FRUZg0aRLs7Ozw7LPP1nNSkoN2voyExUzihUu4djocllZWGDjpr3+ParrEVOFOShoSzl2AUqlEjxGPVrtd96GDAABRR47j2ulwAIB3r0C9M9o1dUQTlW7BbuuowourPoFVExtEh57A4W++0/t498tMuskH/xFRg2OyM/HatWsHFxcXHDjw18RJtVqN0NBQ9OvXr9r9rK2toVKpdBqZJ2OMzADA4Y1bAQB9n3q8fNJqExt0frgvgJqLGQA4+2v56Ezg6OFVrlcoFNrC6OKhI4gLPw8A6KBnMePWxQcfHtiFJX/sx8x/b8Zj77yFzsF98cwnC9DKwx2ZN5Ox44NFvKODiOg+JlvMODs7AwDS09N1lqenp2vXVWXu3LnIycnRtuRkeSclUe20cHeFY6uWKC0pwc3oGEmPfe3Un7gRGQ1r2ybo/9wE+PTtBWvbJshKSUVyzNUa97144HdoSkrh7tsJTu28Kq337O6Hpk6tUZibh2unzyL+7AWUlZWVz5tp2aLGYzdROeDFlZ/Axs4OSqUSHn5dMOjl5/Dq+hD4PRKMkuJifDfrAxTm5Nbp8xMRNTQmW8xU+PvfQLWz76uxdOlSODo6apubm5uxI5IRVDwsLzn6CkrVasmPf+ibbwEADz/zFILGjARQflnoQfKz7yLm3lyVwMcqj850f7T8EtPlYyegKSlBYU4OUq+U3674oHkzTy/58N7oSwqWj30a37+3EKd/2oPMm8nQlJbix0XLH1hsERE1RiZ7a3ZaWhqA8hGaip8BwMnJqdJozf3UajXURvjyo/rVNqA7gLo/X6Y60Uf/QOq1OLh09Ib/sMEAHnyJqcK5X/fD75FgBI4ahgNfbkKZRqNd1+3R8lumLx46ql0WF34ebl184N0rEBH33uL9dwNefBrdhgzUvu37VkIibiUkap9PY2FpyafqEhFVw2RHZhISEpCamoqhQ4dql1lZWWHgwIEICwuTMRnVh7b+xpkvU0EIgd83bdX+XnA3B/HnIvTaN+rocRTm5qGluxteXrMcNnZ2AMpfUtnS3Q3qwiKdO40qnuPSvpqRmbb+3fDYzDcBALs/W13lZTUWMkRE1ZP91mx/f3/4+/sDKJ/06+/vDw8PDwDAF198gQ8++ADjxo2Dn58fvv32WxQUFGDHjh1yxiYjs7Gzg4uPNwDg+oVLRjtPxG+HkZFU/uC86NATKCvVPGCPciVFxdgxdxHUhUXwHfAw3vx2PRydWmvvYoo5cUrn9uO48AiUlZXB2bsdHFo21zmWffNmeGHlx7CwssT5vQcQtvNniT4dEVHjIWsx07NnT0RERCAiIgIAEBISgoiICCxevBgA8Nlnn+GLL77Al19+ifDwcLi5uWHYsGHIy8uTMTUZm0fXLlBaWCArJbXaJ81KoUyjwU9LVuBGZDSOfrfdoH2jQ//Al6+8idzMLLh18cGMHRsR9NgIAEDk4aM62xbm5CDtWhwAoP19TwNWWljg+eWL0KyNE24lJOLHRcvr9oGIiBopWefMhIaGPvClYosWLcKiRYvqKRGZgopbshONdInpfldPnsHVk2dqtW/SpWiseW4Kpny5Cm3atwVQ/oLF6NATlbaN/fMcXDt1RIdegbh44HcAwMi3X4PPQ71RXFCI72bP074VnIiIDGOyc2ao8frrTdnGu8QklazkVKx9YSpiz5wFAFw5cVr7KP/7xf1Z/ryZijua/IcPweBXXgAA7FzwiXbkhoiIDGeydzNR46S0sNBO/k00g2IGKH9Z49evzUTXIQMRf+8heX+XcG9ysXOH9ujQOwgTF88DABzZ/D0uVHOHExER6YcjM2RS2gZ0g62jCvnZd3Hz8hW54+hNU1qKC/sPIzczq8r1+dl3kXK1/HkzU9athI2dLa6ePIO9azbUZ0wiogaJxQyZlC79HwIAXDlxCqKsTOY00or7s/wWbasmNsi8mYJt787XeUYNERHVDosZMildBjwMAIg+1vCeJRR7pryYURcW4duZ76Pgbo7MiYiIGgbOmSGT0cy5DVw6eqNMo0HMH6cevIOZiTp6HHtXb0DC+QtIuXJN7jhERA0GixkyGV0GlL8NPfHCJRTmNLxRC1FWhsMbv5M7BhFRg8PLTGQyfBvwJSYiIjIeFjNkEixtbNChdxAA4PLxyg+dIyIiqg6LGTIJHXoHwtq2CbLT0pF6lQ+QIyIi/bGYIZPAS0xERFRbLGbIJHTpXz759zKLGSIiMlCdihlra2upclAj1sa7HVq4uaCkuBixZ8LljkNERGbGoGJm2LBh2LJlC2JjY6FWq1FQUICcnBwcPXoUH3zwAVxcXIyVkxow33u3ZMf+eQ7qwiKZ0xARkbnRq5h5/PHHERMTg++++w5lZWVYsWIFnnzySQwfPhyTJ09GaGgoHn30UcTHx2P9+vVo1aqVsXNTA1Lx1F9eYiIiotoSD2qnT58Wjz32mFAoFDVu5+rqKpYvXy7eeeedBx6zvppKpRJCCKFSqWTPwla5NVE5iM/OHxcrI0+KFm4usudhY2NjYzONZsj3t+LeDw2WSqVCTk4OHB0dkZubK3ecRs2hZXOM/3AO3H07aZdZWlvDsVVLpMUlYMW4Z2VMR0REpsSQ7+86v85AqVSiW7duSExMRHZ2dl0PRw2Uh18XvPTFUjRzblPl+vN7D9RzIiIiaigMLmZCQkIQGRmJzZs3Q6lUIjQ0FP369UNBQQEee+wxhIaGGiMnmbGeY0fhqQVzYGVjg1sJifjp4xUoysvXri9Vq5EelyBjQiIiMmcGFzNPPfUUvv/+ewDAmDFj0K5dO3Tu3BkvvvgiPvnkEwQHB0seksyT0tICY2ZPx4DnJwIAoo4cx44PFukUMkRERHVl8HNmWrVqhbS0NADAqFGj8OOPP+LatWvYtGkTunXrJnlAMl+DXn5eW8js/3Ijtsx4j4UMERFJzuBiJj09Hb6+vlAqlRgxYgQOHToEALCzs4NGo5E8IJmvLsEPAQB2r1iNA+s3QYgGPdeciIhkYvBlpi1btuCHH35AamoqhBA4ePAgAKBPnz6IiYmRPCCZJ6WlBdx9OwMAokP5FmwiIjIeg4uZRYsW4dKlS/Dw8MCPP/4ItVoNANBoNFi2bJnkAck8uXT0hlUTGxTk5CDzxk254xARUQNWq1uzf/rpJwCAjY2NdtnWrVulSUQNgmc3PwBAUmQ0Ly8REZFRGTxnRqlU4sMPP8TNmzeRl5eHdu3aAQAWL16MV155RfKAZJ48u/kCABIjo2VOQkREDZ3Bxcy8efPw0ksvYc6cOdpLTAAQGRmJKVOmSBqOzFfFyMwNFjNERGRkBhczL774IqZOnYodO3bo3L108eJFdO7cWdJwZJ6aONjDqZ0XACDpEosZIiIyLoOLGTc3N8TGxlY+kFIJKysrSUKRefPw6wKlUonMmynIy7ojdxwiImrgDC5moqKi0L9//0rL/+///g/nz5+XJBSZt78uMUXJnISIiBqDWt2avW3bNri5uUGpVOLJJ59Ep06d8OKLL+Kxxx4zRkYyM57dyyf/cr4MERHVB4NHZv73v/9h4sSJGDVqFIQQWLx4Mbp06YIxY8ZonwZMjRsn/xIRUX2q1XNmDhw4gAMHDkidhRqAZs5t4NiqJTQlpbh5+YrccYiIqBEweGQGAJo2bYrJkyfjk08+QfPmzQEAPXr0gKurq6ThyPx4di8flUm5FovS4mKZ0xARUWNg8MhMt27dcOjQIdy9exdt27bFxo0bcefOHTzxxBPw8vLCpEmTjJGTzITXfU/+JSIiqg8Gj8ysWrUK3377LXx8fFBUVKRdvm/fPgwYMEDScGR+PLp1AcA7mYiIqP4YXMz06tULX331VaXlycnJcHZ2liRUBQsLCyxZsgTx8fEoKChAXFwc5s+fD4VCIel5SBpKCwu4dyl/cGLiRRYzRERUPwy+zFRUVARHR8dKyzt16oTbt29LEqrCe++9h9dffx2TJk1CVFQUevbsiS1btuDu3btYs2aNpOeiunPu0B42drYozM3D7es35I5DRESNhMEjM7t378aCBQtgaVleBwkh4OHhgWXLlmnfpi2Vhx56CLt378bevXuRmJiIn376CQcOHEDPnj0lPQ9Jo+LlkklRl/mmbCIiqjcGFzP/+Mc/0Lp1a9y6dQu2trYIDQ1FbGwscnNzMW/ePEnD/fHHHxgyZAg6duwIAOjevTuCg4Oxd+/eavextraGSqXSaVQ/tM+X4SUmIiKqRwZfZsrNzUX//v0xaNAgBAYGQqlU4ty5czh8+LDk4ZYvX46mTZsiJiYGGo0GFhYWmDdvHv79739Xu8/cuXPx0UcfSZ6FHqxiZOYGXy5JRET1TOjbLCwsRElJifDz89N7n7q0iRMnihs3boiJEyeKrl27iueff15kZGSIF198sdp9rK2thUql0jZXV1chhBAqlapeMjfWZmNnJ1ZcOCFWRp4UqpYtZM/DxsbGxmbeTaVS6f39bdDIjEajQWJiIiwsLAzZrdZWrFiBZcuWYefOnQCAS5cuwcvLC3PnzsXWrVur3EetVkOtVtdLPvqLm28nKJVKZKelIzczS+44RETUiBg8Z+bjjz/G0qVLtU/+NSY7OzuUlZXpLNNoNFAqa/XgYjIid99OAICkqBiZkxARUWNj8JyZt99+Gx06dEBKSgoSExORn5+vsz4oKEiycL/88gvmzZuHGzduICoqCj169MA777yDzZs3S3YOkoaHX/nD8m5Gs5ghIqL6ZXAx89///tcIMao2ffp0LFmyBF9++SWcnJyQkpKCr776CosXL663DKQf9y4cmSEiInkoUD55psFSqVTIycmBo6MjcnNz5Y7TINnY2+HTU+V3sy0YMBL5d7LlDURERGbPkO9vTj6hOnO7NypzJzWNhQwREdU7gy8zZWVlVfl0VyEEioqKEBsbi2+//RbffvutFPnIDFRM/r0ZfUXmJERE1BgZXMwsXrwY8+bNw759+3DmzBkoFAr06tULI0aMwLp169CuXTusX78elpaW2LhxozEyk4nh5F8iIpKTwcVMcHAwPvzww0pvzp46dSqGDRuGp556ChcvXsTbb7/NYqaR4ORfIiKSk8FzZoYPH45Dhw5VWn748GEMHz4cALB37160b9++7unI5NnY28GpnRcAjswQEZE8DC5msrKyMGbMmErLx4wZg6ys8ie/2tvb886hRoKTf4mISG4GX2ZasmQJ1q9fj0GDBuHMmTMQQqB3794YNWoUXn/9dQDA0KFDERoaKnlYMj2c/EtERHIzuJjZuHEjoqOj8dZbb+HJJ5+EQqFATEwMBg4ciJMnTwIAVq1aJXlQMk2c/EtERHIzuJgBgLCwMISFhUmdhcwQJ/8SEZHcavXQvPbt22PJkiXYvn07WrduDaB8YrCvr6+k4ci0cfIvERGZAoOLmQEDBiAyMhJ9+vTB+PHj4eDgAADo3r07Fi1aJHlAMl2c/EtERKbA4GJm2bJl+PDDDzFs2DCo1Wrt8iNHjuChhx6SNByZNk7+JSIiU2BwMdOtWzfs2rWr0vLbt2+jZcuWkoQi88DJv0REZAoMLmays7Ph4uJSaXmPHj2QnJwsSSgyD5z8S0REpsDgYmbHjh1Yvnw52rRpAyEElEol+vXrh88//xxbt241RkYyQZz8S0REpsLgYmbevHm4ceMGkpOT4eDggOjoaBw7dgxhYWH4+OOPjZGRTBAn/xIRkakw+DkzpaWleP7557FgwQL06NEDSqUS58+fR2xsrDHykYni5F8iIjIVtXpoHgDEx8cjPj5eyixkRjj5l4iITIVexczKlSv1PuDs2bNrHYbMR7se3QEAiRejZE5CRESNnV7FTI8ePXR+DwoKgoWFBa5cKb/E4OPjA41Gg7Nnz0qfkExOCzcXNHdxhqakFIkXIuWOQ0REjZxexczgwYO1P8+aNQu5ubmYNGkSsrOzAQDNmjXDli1bcPz4caOEJNPi3bO8uE2Kugx1YZHMaYiIqLEz+G6m2bNnY+7cudpCBih/9syHH37IS0yNRPt7xUxc+HmZkxAREdWimHF0dESbNm0qLXdycoJKpZIkFJm2ipGZ+LMsZoiISH4GFzO7du3Cli1bMH78eLi5ucHNzQ3jx4/Hpk2b8PPPPxsjI5mQZm2c0NLdDWUaDRLOX5Q7DhERkeG3Zr/++uv4/PPP8f3338PKygpA+bNnNm3ahHfffVfygGRa2vcMAADcvHwFxfkF8oYhIiJCLYqZwsJCvPnmm3j33Xfh7e0NhUKB2NhYFBTwi60xqJgvEx8eIW8QIiKie2r90LyCggJERvK23MbGO4iTf4mIyLToNWdm/fr1cHd31+uAEyZMwLPPPlunUGSaVK1awqmdF8rKyhB/LkLuOERERAD0HJm5ffs2Ll26hLCwMOzZswfh4eFISUlBUVERmjdvDl9fXwQHB+Ppp59GcnIypk6dauzcJAPvoAAAQOqVWBTl5skbhoiI6B69ipkFCxZg7dq1mDx5Ml5//XV07dpVZ31ubi4OHTqEKVOm4ODBg0YJSvLTPl+Gt2QTEZEJ0XvOzO3bt7Fs2TIsW7YMTZs2hZeXF2xtbZGRkYG4uDhjZiQT0f7eyEw858sQEZEJqdUE4Lt37+LiRT5jpDGxb9YULh29AQDxZyPkDUNERHQfgx+aR41TxahM6rU45GfflTcMERHRfVjMkF60z5fhqAwREZkYFjOkF2++XJKIiEwUixl6IFtHFVx8OgDg5F8iIjI9tSpmLCwsMGTIEEydOhUODg4AABcXF9jb20sajkyDV3c/KJVK3EpIRG5mltxxiIiIdBhczHh6eiIyMhK7d+/GunXr0Lp1awDAnDlz8Pnnn0se0NXVFdu2bUNGRgby8/Nx/vx5BAYGSn4eqp5bl04AgJvRMTInISIiqszgYmb16tUIDw9H8+bNUVhYqF2+a9cuDBkyRNJwzZo1w4kTJ1BSUoKRI0fC19cXs2fPRnZ2tqTnoZq5dfYBACRfvipzEiIiosoMfs5McHAwHn74YZSUlOgsT0xMhJubm2TBAOC9995DUlISXnnlFZ3zUP1y63KvmIlhMUNERKbH4JEZpVIJCwuLSsvd3d2Rm5srSagKY8eORXh4OH744Qekp6fj3LlzmDJlSo37WFtbQ6VS6TSqvSYO9mjlUf6S0ZscmSEiIhNkcDFz8OBBzJw5U/u7EAL29vZYtGgR9u7dK2U2tG/fHtOmTcO1a9cwfPhwbNiwAWvWrMELL7xQ7T5z585FTk6OtiUnJ0uaqbFxvXeJKSslFYU5OTKnISIiqpowpLm4uIiYmBgRFRUl1Gq1CAsLE7dv3xaXL18WrVu3NuhYD2rFxcXixIkTOstWr14twsLCqt3H2tpaqFQqbXN1dRVCCKFSqSTN1lha/+cnipWRJ8XLq5fJnoWNjY2NrfE0lUql9/e3wXNmUlNTERAQgGeeeQaBgYFQKpXYtGkTtm/fjqKiIkMP98BzRUdH6yy7fPkyxo8fX+0+arUaarVa0hyNGSf/EhGRqavViyaLioqwZcsWbNmyReo8Ok6cOIFOnTrpLPPx8eEk4HrEyb9ERGTq9CpmxowZo/cBf/nll1qH+buQkBCEhYVh7ty5+OGHH9C7d29MnToVU6dOlewcVD1La2u0ad8WAEdmiIjItD3wWpRGo9GrlZaWSn7NbPTo0eLixYuisLBQREdHiylTphjtmhubbnP37SxWRp4Ui4/tkz0LGxsbG1vjapLPmanqVuz68uuvv+LXX3+V7fyNGS8xERGROeCLJqlanPxLRETmwOAJwNOnT69yuRACRUVFiI2NxbFjx1BWVlbncCQvjswQEZE5MLiYmTVrFlq3bg07OzvcuXMHCoUCzZo1Q0FBAfLy8uDk5IT4+HgMGjQIN2/eNEZmqgcKpRIuHTsAAG5eviJzGiIiouoZfJnpgw8+wJ9//omOHTuiVatWaNmyJXx8fHD69GnMmDEDnp6eSEtLQ0hIiDHyUj1p7eUBGztbFBcUICMxSe44RERENTJodnFsbKzw9/evtDwgIEDExcUJAOKhhx4SKSkpss+EhoGzodn+aj1GDRMrI0+Kt7Z+JXsWNjY2NrbG1wz5/jZ4ZMbFxQWWlpWvTllaWsLZ2RkAkJKSwhc8mjnt5F/OlyEiIhNncDFz5MgRfPXVVwgICNAuCwgIwPr16/H7778DALp164aEhATJQlL9007+5Z1MRERk4gwuZiZPnoysrCycPXsWRUVFKCoqQnh4OLKysjB58mQAQF5eHmbPni15WKo/f43McPIvERGZNoPvZkpPT8ewYcPQqVMn+Pj4QKFQICYmBlev/vU3+KNHj0qZkepZM+c2sG/WFJqSUqTFcoSNiIhMW61eNAkAV65cwZUr/Ft7Q1RxiSktLh6akhKZ0xAREdXM4GJGqVTipZdewpAhQ+Dk5ASlUvdK1ZAhQyQLR/Lg5F8iIjInBhczq1evxksvvYRff/0Vly5dghDCGLlIRpz8S0RE5sTgYubpp5/GhAkTsG/fPmPkIRPg3qUTAI7MEBGReTD4bia1Wo3Y2FhjZCET4NCyOZo5t0FZWRlHZoiIyCwYXMysXLkSM2bMMEYWMgHuvp0BALcSEqEuLJQ5DRER0YMZfJkpODgYgwYNwsiRIxEVFYWSv93tMn78eMnCUf2rKGZuRsfInISIiEg/Bhcz2dnZ2LVrlzGykAnw8C2fL3MzmrfdExGReTC4mHnllVeMkYNMhLtfFwAcmSEiIvNh8JwZargcWjZHszZOnPxLRERmpVZPAB4/fjwmTJgAT09PWFtb66wLCgqSJBjVP07+JSIic2TwyMz06dOxZcsW3Lp1Cz169MCZM2eQmZmJ9u3b89kzZs6Dl5iIiMgMGVzMvPHGG5g6dSqmT58OtVqNzz77DMOGDcOaNWvQtGlTY2SkeuLOyb9ERGSGDC5mPD09ERYWBgAoLCyESqUCAGzbtg3PPPOMtOmoXvG2bCIiMkcGFzNpaWlo2bIlACAxMRF9+/YFALRr1w4KhULadFRvVC1bcPIvERGZJYOLmd9//x1jxowBAGzatAkhISE4cOAAdu7cyefPmDFO/iUiInNl8N1MU6dOhVJZXgN99dVXyMrKQnBwMH755Rds2LBB8oBUP9z9eImJiIjMk8HFjBACGo1G+/uPP/6IH3/8UdJQVP84+ZeIiMwVH5pHAO6b/Bt1WeYkREREhmExQ7qTf2OuyR2HiIjIICxmiJN/iYjIrLGYIU7+JSIis8ZihuChnS/DYoaIiMyPwcWMk5MTtm7diuTkZJSUlKC0tFSnkfnhk3+JiMicGXxr9rfffgtPT08sWbIEqampEEIYIxfVE1XLFmjapjUn/xIRkdkyuJgJDg5G//79ceHCBWPkoXrmfu9N2Zz8S0RE5srgy0xJSUl8B1MD4tO3FwAgMSJS5iRERES1Y3AxM3PmTCxbtgxeXl7GyEP1rEv/hwAAl4+HyZyEiIiodgwuZnbu3IlHHnkEcXFxyMnJQWZmpk4zpvfffx9CCISEhBj1PI1FK093tG7rCU1JKa6e+lPuOERERLVi8JyZmTNnGiHGg/Xs2RNTp07lXB0JdQ4uH5WJPxeB4vwCmdMQERHVjsHFzNatW42Ro0b29vbYvn07Xn31VXz44Yf1fv6Gqkv/fgCAmOMnZU5CRERUewYXMwCgVCoxbtw4dOnSBUIIREdHY8+ePSgrK5M6HwBg3bp1+PXXX3H48OEHFjPW1tawsbHR/q5SqYySydxZ2zaBd68eADhfhoiIzJvBxYy3tzf27t0LNzc3XLlyBQqFAj4+PkhKSsLo0aMRHx8vacCJEyciMDAQvXr10mv7uXPn4qOPPpI0Q0Pk3SsIVjY2yLyZgvT463LHISIiqjWDJwCvWbMGcXFx8PDwQFBQEAIDA+Hp6YmEhASsWbNG0nDu7u5YvXo1nn/+eRQXF+u1z9KlS+Ho6Khtbm5ukmZqKCruYor5g5eYiIjI/AlDWl5enujatWul5d27dxe5ubkGHetB7fHHHxdCCFFSUqJtQgih0WhESUmJUCqVDzyGSqUSQgihUqkkzWbubd5vP4uVkSdFl/79ZM/CxsbGxsb292bI97fBl5mKi4urnIfi4OAAtVpt6OFqdPjwYXTt2lVn2ZYtWxATE4Ply5cbbY5OQ9fGux1auLmgpLgYsX+elTsOERFRnRhczPzvf//D119/jcmTJ+PMmTMAgD59+mDDhg3Ys2ePpOHy8vIQFRWlsyw/Px+ZmZmVlpP+Ku5iiv3zHEqK9Lt8R0REZKoMnjPz9ttvIy4uDidPnkRRURGKiopw4sQJxMbGYsaMGcbISBLTzpfhXUxERNQAGDwyc/fuXYwbNw4dOnRA586doVAoEB0djbi4OGPkq2TQoEH1cp6GqomDPdr18AcAXD5+SuY0REREdVer58wAQGxsLGJjY6XMQvWgY99esLCyxK2ERGQm3ZQ7DhERUZ3pVcysXLkS8+fPR0FBAVauXFnjtrNnz5YkGBlHxXwZPiiPiIgaCr2KmR49esDKykr7M5mvzsF9AfD5MkRE1HDoVcwMHjy4yp/JvDh3aI+mTq2hLixC/Fm+sJOIiBoGg+9m2rRpExwcHCott7Ozw6ZNmyQJRcbRsW/5KyESzkWgVOJnAhEREcnF4GJm0qRJsLW1rbTc1tYWL774oiShyDh8HiovZq6e/FPmJERERNLR+24mlUoFhUIBhUIBlUqFoqIi7ToLCwuMGjUKt27dMkpIqjsLS0t49yyf73T1FIsZIiJqOPQuZrKzsyGEgBACV69erbReCIGFCxdKGo6k4+XfFTZ2dsjNzELqVd5ST0REDYfexcygQYOgUCjw+++/Y/z48cjKytKuU6vVSExMRGpqqlFCUt1VzJeJPR0OIYTMaYiIiKSjdzFz7NgxAEC7du2QlJTEL0Qzw/kyRETUUBn8BOAbN24AKJ/w6+npCWtra531kZGR0iQjyTRxsIdnV18AnC9DREQNj8HFTKtWrbBlyxaMHDmy6gNa1voNCWQkHXoHQWlhgVsJichOS5c7DhERkaQMvjX7iy++QPPmzdG3b18UFhZixIgRmDRpEq5du4axY8caIyPVUcV8mWunw2VOQkREJD2Dh1EGDx6Mxx9/HOHh4SgrK0NiYiIOHTqEnJwczJ07F3v37jVGTqoDn74V82XOyJyEiIhIegaPzNjb22ufJ5OVlYXWrVsDKJ8rExgYKG06qrNmzm3g1M4LZRoNYv88J3ccIiIiyRlczFy5cgWdOnUCAEREROC1116Dq6srXn/9dd6abYIqRmVuXIpGUW6ezGmIiIikZ/Blpi+++AIuLi4AgEWLFmH//v147rnnoFar8dJLL0mdj+qo471bsq+d4nwZIiJqmAwuZnbs2KH9OSIiAm3btkXnzp1x48YNZGZmShqO6kahUKBjn54AOF+GiIgaLoMvM82fP1/nRZOFhYU4f/488vPzMX/+fEnDUd04d/SGqmULFBcUIPHCJbnjEBERGYXBxczChQvh4OBQabmdnR3fzWRiOj/cBwAQF34emtJSmdMQEREZh8HFjEKhqPJVBv7+/jrvayL5dR86GAAQHXpC5iRERETGo/ecmaysLJ23Zt9f0FhYWMDBwQEbNmwwSkgyXAs3F3h280WZRoPIw0fljkNERGQ0ehczM2fOhEKhwObNm7Fw4ULcvXtXu06tVuP69es4deqUUUKS4SpGZeLCzyMv847MaYiIiIxH72Jm69atAICEhASEhYWhlHMwTJr/8PJi5sL+32VOQkREZFwG35p97Nix8lt+O3aEk5MTlErdaTfHjx+XLBzVTgs3F3h25SUmIiJqHAwuZvr06YMdO3bAy8sLCoVCZ50Qgm/NNgH+w+5dYvrzPPKyeImJiIgaNoMrjw0bNiA8PByjR49GampqlXc2kby63ytmIg4cljkJERGR8RlczHTs2BFPPfUU4uLijJGH6qiFu6v2EtOlw6FyxyEiIjI6g58zc/r0aXTo0MEYWUgCFZeYYv88x0tMRETUKBg8MrN27VqsXLkSzs7OiIyMRElJic76yMhIycKR4SqKmQsHeBcTERE1DgYXMz/99BMAYPPmzdplQgjtk4E5AVg+Ldxd4eHXpfwupkNH5Y5DRERULwyuPNq1a2eMHCSB+y8x5d/JljcMERFRPTG4mLlx44YxcpAE/IcPAQBc2M+7mIiIqPEweAIwADz//PP4448/kJycDE9PTwDAjBkzMHbsWEnDkf5aurvBw7czNKWliORdTERE1IgYXMy8/vrrWLVqFfbu3YtmzZrBwsICAJCdnY2ZM2dKnY/0FDDiUQBA7JmzvMRERESNisHFzPTp0/Hqq6/i008/hUaj0S4PDw9Ht27dJA1H+gsYUX6JKeI3XmIiIqLGxeBipl27djh//nyl5cXFxbC3t5ckVIX3338fZ86cQU5ODtLT07Fr1y74+PhIeo6GwKmdF1w7dYSmhJeYiIio8TG4mElISEBAQECl5SNHjkR0dLQUmbQGDhyIdevWoW/fvhg6dCgsLS1x4MAB2NnZSXoecxdwb+LvlZOnUZiTI3MaIiKi+mXw3UwrVqzAunXr0KRJEygUCvTu3RvPPPMM5s6diylTpkgabuTIkTq/v/zyy7h9+zaCgoL4du77/HUXEx+UR0REjY/Bxcy3334LS0tLfPbZZ7Czs8OOHTuQnJyMGTNmYOfOncbIqNW0aVMAQFZWVrXbWFtbw8bGRvu7SqUyaia5OXdoD+cO7VGqVuPS77zEREREjZOobWvZsqVo3bp1rfc3tO3evVscO3asxm0WLlwoqqJSqeotZ322EW9NFSsjT4qX1yyXPQsbGxsbG5tUTaVS6f39XavnzFTIzMzE7du363IIvf3zn/9E9+7d8cwzz9S43dKlS+Ho6Khtbm5u9ZJPLhXzZXgXExERNVZ6XWY6e/YshgwZguzsbJw7dw5CiGq3DQoKkixchTVr1mDs2LEYMGAAkpOTa9xWrVZDrVZLnsEUuXX2Qeu2nigpKkb00T/kjkNERCQLvYqZ3bt3o7i4GADw3//+15h5Klm7di2eeOIJPPLII7h+/Xq9ntvUVTxbJvrYCRQXFMichoiISB56FTOLFy8GACiVShw9ehQXL15Edna2MXMBANatW4dnn30Wjz/+OHJzc9GmTRsAwN27d1FUVGT085s6/+HlT/2N4LuYiIioETNozkxZWRn279+PZs2aGSmOrjfeeAPNmjVDaGgo0tLStG3ixIn1cn5T5tHVFy3dXVFcUIjLx07IHYeIiEg2Bt+aHRkZifbt29fLJR+FQmH0c5irnmPLn8ETHfoHSoqKZU5DREQkH4PvZpo3bx4+//xzjB49Gs7OzlCpVDqNjE/VqiX6PDEGAHD6519kTkNERCQvg0dmfvvtNwDAnj17dO5qUigUEELA0tLgQ5KBBr/yAqya2CDh3AVcO/Wn3HGIiIhkZXDlMWjQIGPkID2pWrXEQ/83DgCwf/0mecMQERGZAIOLmWPHjhkjB+mJozJERES6anVNqGnTppg8eTK6dOkCIQSio6OxefNm5PCNzUbFURkiIqLKDJ4AHBQUhLi4OMyaNQstWrRAq1at8M477yAuLg49evQwRka6h6MyRERElRk8MhMSEoI9e/bg1VdfhUajAQBYWFhg48aN+OKLLzBw4EDJQxJHZYiIiKpjcDHTs2dPnUIGADQaDT777DOEh4dLGo7+wlEZIiKiqhl8mSknJweenp6Vlnt4eCA3N1eSUKSraZvWHJUhIiKqhsHFzM6dO7Fp0yZMmDAB7u7ucHNzw8SJE7Fx40b861//MkbGRm/4G6/CqokN4s6e56gMERHR3xh8mekf//gHhBDYunWr9gF5JSUlWL9+Pd5//33JAzZ2bbzbodfjowAAv4Z8KXMaIiIi02NwMVNSUoKZM2di7ty58Pb2hkKhQGxsLAoLC42Rr9EbPfMNKC0scPHgESReuCR3HCIiIpNT63cPFBYW4tIlfrkaU/ugAPg9EgxNaSl+Xb1e7jhEREQmyeA5M1R/HnvnLQDAqf/sRkZiksxpiIiITBOLGRPVfdhgeHX3Q3FBAQ5s4B1MRERE1WExY4KUlhYY9fbrAICj3+5AXuYdmRMRERGZrlrPmSFpWFpb4/8+eh/NXZ21y5rY2aO1lwdyM7MQ+h1vdyciIqoJixmZdQ7ui55jRla5bv+6jSguKKjnREREROaFxYzM3Dr7AACunDiFk//ZrV1elJuHa6f5eggiIqIHYTEjs4piJvrYCUQeOipvGCIiIjPECcAyc+tSXswkx1yTOQkREZF5YjEjI/tmTdHMuQ0AIOUKixkiIqLaYDEjo4pRmduJSSjO50RfIiKi2mAxI6OK+TLJMVdlTkJERGS+WMzISFvMXGYxQ0REVFssZmTk1qUTAI7MEBER1QWLGZlY29qilZcHACA55orMaYiIiMwXixmZuPh4Q6lU4u6t23z3EhERUR2wmJEJJ/8SERFJg8WMTCqKmRQ+LI+IiKhOWMzI5K8n/3JkhoiIqC5YzMhAaWkBl47eAHhbNhERUV2xmJFBm/ZtYWltjcLcPGQlp8gdh4iIyKyxmJGBW+fy58ukXLkGIYTMaYiIiMwbixkZ8Mm/RERE0mExIwNO/iUiIpIOi5l6plAo4NqpIwA++ZeIiEgKZlHMTJs2DfHx8SgsLER4eDiCg4PljlRrLdxcYatyQKlajfT463LHISIiMnsmX8xMmDABX3zxBT755BP06NEDx48fx759++Dh4SF3tFqpuMSUGhuPslKNzGmIiIjMn8kXM++88w42bdqETZs2ISYmBrNmzUJSUhKmTZsmd7Race1cfokphZN/iYiIJGEpd4CaWFlZISgoCMuWLdNZfuDAAfTr16/KfaytrWFjY6P9XaVSGSVb/+cm4NGpLxm8n429HQBO/iUiIpKKSRczrVq1gqWlJdLT03WWp6enw9nZucp95s6di48++sjo2aya2MChRfNa7aspKcXVU39KnIiIiKhxMulipsLfHyynUCiqfdjc0qVLsWrVKu3vKpUKycnJkmc6/dMeRB05Xqt987LuID/7rsSJiIiIGieTLmYyMjJQWlpaaRTGycmp0mhNBbVaDbVabfRs+dl3WZAQERGZAJOeAFxSUoKzZ89i6NChOsuHDh2KsLAwmVIRERGRKTHpkRkAWLVqFbZt24bw8HCcPHkSU6dOhaenJzZs2CB3NCIiIjIBJl/M/PDDD2jZsiUWLFgAFxcXXLp0CaNGjcKNGzfkjkZEREQmQAGgQb+2WaVSIScnB46OjsjNzZU7DhEREenBkO9vk54zQ0RERPQgLGaIiIjIrLGYISIiIrPGYoaIiIjMGosZIiIiMmsmf2u2VIz1wkkiIiKSniHf2w2+mKnoDGO8n4mIiIiMS6VSPfDW7Ab/nBkAcHV1NcozZipeYunm5sZn2BgZ+7r+sK/rD/u6/rCv64+Ufa1SqZCSkvLA7Rr8yAwAvTqiLnJzc/kfRz1hX9cf9nX9YV/XH/Z1/ZGir/XdnxOAiYiIyKyxmCEiIiKzxmKmDoqLi/HRRx+huLhY7igNHvu6/rCv6w/7uv6wr+uPHH3dKCYAExERUcPFkRkiIiIyayxmiIiIyKyxmCEiIiKzxmKGiIiIzBqLmVqaNm0a4uPjUVhYiPDwcAQHB8sdyey9//77OHPmDHJycpCeno5du3bBx8en0nYLFy5EcnIyCgoKcOTIEfj6+sqQtmF5//33IYRASEiIznL2tTRcXV2xbds2ZGRkID8/H+fPn0dgYKDONuzrurOwsMCSJUsQHx+PgoICxMXFYf78+VAoFDrbsa8N179/f+zZswfJyckQQuDxxx+vtM2D+tXa2hpr1qzB7du3kZeXh927d8PNzU2yjILNsDZhwgRRXFwsJk+eLDp37ixCQkJEbm6u8PDwkD2bObd9+/aJSZMmCV9fX9G9e3fxyy+/iOvXrws7OzvtNnPmzBF3794VTzzxhPDz8xP/+te/RHJysnBwcJA9v7m2nj17ivj4eBERESFCQkLY1xK3Zs2aiYSEBLF582bRq1cv4eXlJQYPHizat2/Pvpa4ffDBB+L27dti1KhRwsvLS4wfP17k5OSIt99+m31dxzZixAixZMkS8cQTTwghhHj88cd11uvTr19++aVISkoSQ4YMEQEBAeLw4cPi/PnzQqlUSpFR/k4yt3bq1Cnx5Zdf6iyLjo4Wn376qezZGlJr1aqVEEKI/v37a5elpKSIOXPmaH+3trYWd+7cEVOnTpU9rzk2e3t7ceXKFTFkyBBx5MgRnWKGfS1NW7p0qTh27FiN27CvpWm//PKL2Lhxo86y//znP2Lr1q3sawlbVcXMg/rV0dFRFBcXiwkTJmi3cXFxEaWlpWLYsGF1zsTLTAaysrJCUFAQDhw4oLP8wIED6Nevn0ypGqamTZsCALKysgAA7dq1g4uLi07fq9VqhIaGsu9rad26dfj1119x+PBhneXsa+mMHTsW4eHh+OGHH5Ceno5z585hypQp2vXsa+n88ccfGDJkCDp27AgA6N69O4KDg7F3714A7Gtj0adfg4KCYG1trbNNamoqLl26JEnfN4oXTUqpVatWsLS0RHp6us7y9PR0ODs7y5SqYVq1ahWOHz+OqKgoAND2b1V97+XlVe/5zN3EiRMRGBiIXr16VVrHvpZO+/btMW3aNKxatQqffvopevfujTVr1qC4uBjbtm1jX0to+fLlaNq0KWJiYqDRaGBhYYF58+bh3//+NwD+e20s+vSrs7MziouLkZ2dXWkbKb47WczUkhBC53eFQlFpGdXeP//5T+3fqv6OfV937u7uWL16NYYNG1bjI8fZ13WnVCoRHh6OefPmAQAiIiLg5+eHadOmYdu2bdrt2Nd1N3HiRDz//PN49tlnERUVhYCAAHzxxRdISUnB1q1btduxr42jNv0qVd/zMpOBMjIyUFpaWqmSdHJyqlSVUu2sWbMGY8eOxaBBg5CcnKxdnpaWBgDsewkEBQWhTZs2OHv2LEpKSlBSUoJHHnkEb7/9NkpKSrT9yb6uu9TUVERHR+ssu3z5Mjw9PQHw32sprVixAsuWLcPOnTtx6dIlfP/99wgJCcHcuXMBsK+NRZ9+TUtLg42NDZo1a1btNnXBYsZAJSUlOHv2LIYOHaqzfOjQoQgLC5MpVcOxdu1aPPnkkxg8eDCuX7+usy4hIQGpqak6fW9lZYWBAwey7w10+PBhdO3aFQEBAdr2559/Yvv27QgICEB8fDz7WiInTpxAp06ddJb5+PggMTERAP+9lpKdnR3Kysp0lmk0GiiV5V917Gvj0Kdfz549C7VarbONs7MzunbtKlnfyz4z2txaxa3ZL7/8sujcubNYtWqVyM3NFZ6enrJnM+e2bt06cefOHTFgwADRpk0bbWvSpIl2mzlz5og7d+6IcePGCT8/P7F9+3beVilR+/vdTOxraVrPnj2FWq0Wc+fOFd7e3uKZZ54ReXl54tlnn2VfS9y2bNkikpKStLdmjxs3Tty6dUssW7aMfV3HZm9vL/z9/YW/v78QQoiZM2cKf39/7SNJ9OnXL7/8Uty4cUMMHjxYBAQEiEOHDvHWbLnbtGnTREJCgigqKhLh4eE6tw+z1a5VZ9KkSTrbLVy4UKSkpIjCwkJx9OhR4efnJ3v2htD+Xsywr6Vro0ePFhcvXhSFhYUiOjpaTJkypdI27Ou6NwcHBxESEiKuX78uCgoKRGxsrFiyZImwsrJiX9exDRw4sMr/P2/ZskXvfrWxsRFr1qwRGRkZIj8/X+zZs0e4u7tLkk9x7wciIiIis8Q5M0RERGTWWMwQERGRWWMxQ0RERGaNxQwRERGZNRYzREREZNZYzBAREZFZYzFDREREZo3FDBEREZk1FjNERERk1ljMEJmZI0eOICQkxGSO0xjOURty5tqwYQO2b99e7foWLVogPT0dXl5eNR7nxx9/xKxZs6SOR2QUsr/zgY2NrepW1fuSmjdvLslL8aQ6TnU5pT6Hvp+juiz1+WdUX5+9pj6xs7Ordv2KFSvExo0bH3icbt26iYyMDKFSqWT5HGxs+jaOzBCZmTt37iAvL89kjtNQz2FlZVWn/evjs9d07oKCgirXNWnSBJMnT8bGjRsfeJzIyEhcv34dzz33nNQRiSQne0XFxtYQm7W1tVi9erVIT08XhYWF4vjx46Jnz57a9UeOHBFr164Va9euFXfu3BEZGRliyZIl2vVbtmyp9IZaLy+vSiMBR44cEWvWrBEhISEiKytLpKWliVdffVXY2dmJzZs3i5ycHBEbGytGjBihk+/+43h5eVX5RtwjR44IAGL48OHi+PHj2py//PKLaN++fY05/34Offtk9erVYvny5SIzM1OkpqaKhQsX1tjP95+jpiwAxLvvvivi4uJEQUGBiIiIEOPHj6/057Fy5Upx+/ZtcfToUZP/7FW1ij9LT0/PKtc/8cQT4tatW3ofb8GCBSI0NFT2/57Y2GpqHJkhMpLPPvsM48ePx6RJkxAYGIjY2Fjs378fzZs3124zadIklJaWok+fPnj77bcxa9YsTJkyBQAwY8YMhIWF4euvv4azszOcnZ2RlJRU5bkmTZqEjIwM9O7dG2vXrsX69evx448/IiwsDIGBgdi/fz+2bdsGW1vbKvdPSkrSnsPZ2RkBAQHIyMjAsWPHAAD29vZYtWoVevXqhSFDhqCsrAy7du2CQqEwKKe+fZKfn48+ffpgzpw5WLBgAR599FG9+rymLB9//DFefvllTJs2DX5+fggJCcH333+PAQMGVPrzePjhh/Haa6+Z1WevEBAQgDt37uDGjRtVrh8wYADCw8P1Pt6ZM2fQu3dvWFtbG5SDqL7JXlGxsTW0ZmdnJ4qLi8UzzzyjXWZpaSlu3rwp/vGPfwig/G/iUVFROvstXbpUZ1lV8zGqGpk5duyY9nelUilyc3PFd999p13Wpk0bIYQQffr0qfHYAISNjY04efKk2LNnj1AoFFV+vlatWgkhhPDz86vxWPcv17dP7v8sAMTp06fF0qVLq+3rqvrj71ns7OxEQUGB6Nu3r87yb775Rmzfvl2737lz5x74Z2tKn72qtmDBAu2IWlVt165des2XqWjdunWrcaSHjc0UGkdmiIzA29sb1tbWOHHihHZZaWkpzpw5gy5dumiXnTp1Sme/kydPomPHjlAqDftP8+LFi9qfy8rKkJmZicjISO2y9PR0AICTk9MDj7Vp0yaoVCo8++yzEEIAANq3b4/t27cjLi4Od+/eRUJCAgDA09NT74z69sn9nwUAUlNT9cpdE19fX9ja2uLgwYPIzc3VthdffBHe3t7a7aoasTC3zx4QEIALFy5Uu97W1hZFRUU6y5599lmdfgkODtauKywsBADY2dkZlIOoPlnKHYCoIVIoFACgLQbuX/73ZVIoKSnR+V0IUWkZgAcWSfPmzcOIESPQu3dvncmrv/zyC5KSkvDqq68iJSUFSqUSUVFRBl160LdPqvoshhZ3f1ex/+jRo5GcnKyzrri4WPtzfn5+pX3N7bP7+/tjz5491a7PyMjQubQFAHv27MHp06e1v9/fRy1atAAA3L5926AcRPWJIzNERhAbG4vi4mKdv+FaWlqiZ8+euHz5snZZ3759dfbr27cvrl27hrKyMgCAWq2GhYVFvWR+8sknsWDBAkyYMAHx8fHa5S1atICvry8+/vhj/P7774iJian0ZahPTn37pK6qyhIdHY2ioiJ4enoiLi5Op928ebPaY5nbZ1epVGjbtm2NIzPnz5+Hr6+vzrK8vDydPrl/5KZr165ISkpCZmamZDmJpMaRGSIjKCgowPr167FixQpkZWXhxo0bmDNnDuzs7LBp0ybtdh4eHli5ciW++uorBAYGYvr06Zg9e7Z2/fXr19GnTx94eXkhLy8PWVlZRsnr5+eHrVu3Yvny5YiKikKbNm0AlH9R37lzBxkZGZg6dSpSU1Ph6emJZcuW6exfVc6/j0Lo2yd1VVWWvLw8fP755wgJCYFSqcQff/wBR0dH9OvXD3l5edi6dWuVxzK3z+7v7w+NRoOoqKhqt9m/fz+WLl2KZs2aITs7+4HH7N+/Pw4cOCBZRiJj4MgMkZG8//77+Omnn7Bt2zacO3cOHTp0wPDhw3W+QLZu3QpbW1ucOXMG69atw9q1a/H1119r13/++efQaDSIjo5GRkaGQfM0DNGzZ0/Y29tj/vz5SEtL07aff/4ZQgg8/fTTCAoKwqVLlxASEoJ3331XZ399c+rTJ3VVXZb58+dj8eLFmDt3Li5fvoz9+/djzJgx2jkwVTG1zz5p0qQaL1P6+/sjJiYGarW62m0uXbqE8PBwTJgw4YHns7GxwRNPPIFvvvlG74xEcpF9FjIbW2Ns9f2kWjbzbwsXLqzxTiV928iRI0VUVFS1d6tVtDfeeEPs379f9s/NxvagxstMRERmYvjw4ZgxY0adj7Nv3z507NgRbm5uNc4ZKikpwfTp0+t8PiJjU6C8qiGienbkyBFERETwRX5ERHXEYoaIiIjMGicAExERkVljMUNERERmjcUMERERmTUWM0RERGTWWMwQERGRWWMxQ0RERGaNxQwRERGZNRYzREREZNZYzBAREZFZYzFDREREZo3FDBEREZm1/wcs8XrtaSITuwAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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AI5PISIikoqJih1wsTciIiLLMFGxA3ENlXwmKkRERFIwUbED44aErKgQERFJw0TFDmoG0zJRISIikoKJih0YB9OyokJERCQNExU7MFZUOOuHiIhIGiYqdqDkYFoiIiKLMFGxA+6cTEREZBkmKjbm6esDhYcHAKCUK9MSERFJwkTFxoxTk9VlZdBpNA6OhoiIqHFhomJjXJWWiIjIckxUbMwvhIkKERGRpZio2JhvUCAAJipERESWYKJiY+KqtAVFjg2EiIioEWKiYmNc7I2IiMhyTFRsjINpiYiILMdExca4czIREZHlHJ6oTJ8+HSkpKaioqEBiYiIGDhzo6JCsihsSEhERWc6hicq4cePw2Wef4f3330f37t2xb98+bNu2DS1atHBkWFbF5fOJiIgs59BE5bXXXsM333yDb775BhcvXsSrr76KtLQ0TJ8+3ZFhWY1MJoMfpycTERFZTOGoN3Z3d0fPnj2xePFik+Pbt2/HgAED6n2Nh4cHPD09xcdKpdImsXUePgSPvf3XO76OTCaD3M0NAFBWVHTH1yMiImpqHJaohIaGQqFQIDs72+R4dnY2IiIi6n3NnDlz8M4779g8NoWHu9hlYw3Xz52HXldltesRERE1FQ5LVIwEQTB5LJPJ6hwzWrRoEZYsWSI+ViqVSE9Pt3pMF/cfwkdjnrDa9fKu37DatYiIiJoShyUqeXl50Ol0daonYWFhdaosRlqtFlqt1uaxqUvLoC4ts/n7EBER0a05bDBtZWUljh8/jpEjR5ocHzlyJA4ePOigqIiIiMiZOLTrZ8mSJVi3bh0SExNx6NAhTJs2DTExMfjyyy8dGRYRERE5CYcmKv/85z8REhKCBQsWIDIyEufOncN9992H69evOzIsIiIichIyAPWPXG0ElEolSkpK4O/vD5VK5ehwiIiIyAxSvr8dvoQ+ERERUUOYqBAREZHTYqJCRERETouJChERETktJipERETktBy+hL412GpzQiIiIrI+Kd/bjTpRMX5QW+z3Q0RERLalVCpvOz25Ua+jAgBRUVE2WUPFuOFhdHQ012ixMd5r++G9th/ea/vhvbYfa95rpVKJjIyM257XqCsqAMz6kHdCpVLxP3w74b22H95r++G9th/ea/uxxr029/UcTEtEREROi4kKEREROS0mKg3QaDR45513oNFoHB2Ky+O9th/ea/vhvbYf3mv7ccS9bvSDaYmIiMh1saJCRERETouJChERETktJipERETktJioEBERkdNiolKP6dOnIyUlBRUVFUhMTMTAgQMdHVKjN3v2bBw9ehQlJSXIzs7Gpk2bEB8fX+e8t99+G+np6SgvL8euXbvQsWNHB0TrWmbPng1BELB06VKT47zX1hEVFYV169YhLy8PZWVlOHnyJHr06GFyDu/1nXNzc8O7776LlJQUlJeXIzk5GfPnz4dMJjM5j/daukGDBmHLli1IT0+HIAgYM2ZMnXNud189PDywfPly5ObmorS0FJs3b0Z0dLTVYhTYatq4ceMEjUYjTJ48WWjfvr2wdOlSQaVSCS1atHB4bI25bdu2TZg0aZLQsWNHoWvXrsLWrVuFa9euCT4+PuI5s2bNEoqLi4WxY8cKnTp1Ev7xj38I6enpgp+fn8Pjb6ytV69eQkpKinDq1Clh6dKlvNdWboGBgUJqaqrw7bffCr179xZiY2OF4cOHC61ateK9tnJ76623hNzcXOG+++4TYmNjhUceeUQoKSkRZsyYwXt9h+2ee+4R3n33XWHs2LGCIAjCmDFjTJ43575+8cUXQlpamjBixAghISFB2Llzp3Dy5ElBLpdbI0bH3yRnaocPHxa++OILk2Pnz58XPvjgA4fH5kotNDRUEARBGDRokHgsIyNDmDVrlvjYw8NDKCwsFKZNm+bweBtj8/X1FS5duiSMGDFC2LVrl0miwnttnbZo0SJh7969tzyH99o6bevWrcKaNWtMjv3yyy/CDz/8wHttxVZfonK7++rv7y9oNBph3Lhx4jmRkZGCTqcTRo0adccxseunFnd3d/Ts2RPbt283Ob59+3YMGDDAQVG5poCAAABAQUEBACAuLg6RkZEm916r1WLPnj289xZauXIlfv31V+zcudPkOO+19Tz44INITEzEP//5T2RnZ+PEiROYMmWK+DzvtfXs378fI0aMQNu2bQEAXbt2xcCBA/Hbb78B4L22FXPua8+ePeHh4WFyTmZmJs6dO2eVe9/oNyW0ptDQUCgUCmRnZ5scz87ORkREhIOick1LlizBvn37kJSUBADi/a3v3sfGxto9vsZu/Pjx6NGjB3r37l3nOd5r62nVqhWmT5+OJUuW4IMPPkCfPn2wfPlyaDQarFu3jvfaij788EMEBATg4sWLqKqqgpubG+bOnYsN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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# plot the design variables of the optimization problem\n", - "for idx_DV, (name_DV, values_DV) in enumerate(design_variables.items()):\n", - " fig, ax = plt.subplots(figsize=(6.4, 3.6))\n", - " ax.plot(values_DV, label=name_DV)\n", - " ax.set_xlabel(\"optimization iteration, $i$ (-)\")\n", - " ax.set_ylabel(title_map[name_DV])\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Conclusion\n", - "\n", - "These results show that the optimization, after about 25 iterations delivers around 8¢/kWh of savings.\n", - "These are realized by orienting the farm, slightly skewing it, and adjusting its spacing." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "ard-dev-env", - "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.12.10" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/examples/01_onshore/optimization_demo.ipynb b/examples/01_onshore/optimization_demo.ipynb new file mode 100644 index 00000000..04b723e6 --- /dev/null +++ b/examples/01_onshore/optimization_demo.ipynb @@ -0,0 +1,1803 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "0a8540f7", + "metadata": {}, + "source": [ + "# 01: Onshore layout-to-LCOE\n", + "\n", + "In this example, we will demonstrate `Ard`'s ability to run a layout-to-LCOE analysis and optimization.\n", + "\n", + "We can start by loading what we need to run the problem." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "d75b4457", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: :488\n", + "numpy.ndarray size changed, may indicate binary incompatibility. Expected 16 from C header, got 96 from PyObject" + ] + } + ], + "source": [ + "from pathlib import Path # optional, for nice path specifications\n", + "\n", + "import pprint as pp # optional, for nice printing\n", + "import numpy as np # numerics library\n", + "import matplotlib.pyplot as plt # plotting capabilities\n", + "\n", + "import ard # technically we only really need this\n", + "from ard.utils.io import load_yaml # we grab a yaml loader here\n", + "from ard.api import set_up_ard_model # the secret sauce\n", + "from ard.viz.layout import plot_layout # a plotting tool!\n", + "\n", + "import openmdao.api as om # for N2 diagrams from the OpenMDAO backend\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "id": "cf2ceef4", + "metadata": {}, + "source": [ + "This will do for now.\n", + "We can probably make it a bit cleaner for a later release.\n", + "\n", + "Now, we can set up a case.\n", + "We do it a little verbosely so that our documentation system can grab it, you can generally just use relative paths.\n", + "We grab the file at `inputs/ard_system.yaml`, which describes the `Ard` system for this problem.\n", + "It references, in turn, the `inputs/windio.yaml` file, which is where we define the plant we want to optimize, and an initial setup for it." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "29850609", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[34mfloris.floris_model.FlorisModel\u001b[0m \u001b[1;30mWARNING\u001b[0m \u001b[33mturbine_type has been changed without specifying a new reference_wind_height. reference_wind_height remains 90.00 m. Consider calling `FlorisModel.assign_hub_height_to_ref_height` to update the reference wind height to the turbine hub height.\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Adding top_level\n", + "Adding layout2aep\n", + "Adding layout to layout2aep\n", + "Adding aepFLORIS to layout2aep\n", + "\tActivating approximate totals on layout2aep\n", + "Adding boundary\n", + "Adding landuse\n", + "Adding collection\n", + "Adding spacing_constraint\n", + "Adding tcc\n", + "Adding landbosse\n", + "Adding opex\n", + "Adding financese\n" + ] + } + ], + "source": [ + "# load input\n", + "path_inputs = Path.cwd().absolute() / \"inputs\"\n", + "input_dict = load_yaml(path_inputs / \"ard_system.yaml\")\n", + "\n", + "# create and setup system\n", + "prob = set_up_ard_model(input_dict=input_dict, root_data_path=path_inputs)" + ] + }, + { + "cell_type": "markdown", + "id": "b0732705", + "metadata": {}, + "source": [ + "Here, you should see each of the groups or components described as they are added to the `Ard` model and, occasionally, some options being turned on on them, like semi-total finite differencing on groups.\n", + "\n", + "Next is some code you can flip on to use the [N2 diagram vizualization tools from the backend toolset, OpenMDAO, that we use](https://openmdao.org/newdocs/versions/latest/features/model_visualization/n2_basics/n2_basics.html).\n", + "This can be a really handy debugging tool, if somewhat tricky to use; turned on it will show a comprehensive view of the system in terms of its components, variables, and connections, although we leave it off for now." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "aa48878e", + "metadata": {}, + "outputs": [], + "source": [ + "if False:\n", + " # visualize model\n", + " om.n2(prob)" + ] + }, + { + "cell_type": "markdown", + "id": "723f8210", + "metadata": {}, + "source": [ + "Now, we do a one-shot analysis.\n", + "The one-shot analysis will run a wind farm as specified in `inputs/windio.yaml` and with the models specified in `inputs/ard_system.yaml`, then dump the outputs." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "b74f9d45", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/openmdao/recorders/sqlite_recorder.py:231: UserWarning:The existing case recorder file, ard_prob_out/problem_out/cases.sql, is being overwritten.\n", + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "RESULTS:\n", + "\n", + "{'AEP_val': 405.9510682648514,\n", + " 'BOS_val': 41.68227106807093,\n", + " 'CapEx_val': 110.5,\n", + " 'LCOE_val': 37.328810082644566,\n", + " 'OpEx_val': 3.7400000000000007,\n", + " 'area_tight': 13.2496,\n", + " 'coll_length': 21.89865877023397,\n", + " 'turbine_spacing': 0.91}\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "# run the model\n", + "prob.run_model()\n", + "\n", + "# collapse the test result data\n", + "test_data = {\n", + " \"AEP_val\": float(prob.get_val(\"AEP_farm\", units=\"GW*h\")[0]),\n", + " \"CapEx_val\": float(prob.get_val(\"tcc.tcc\", units=\"MUSD\")[0]),\n", + " \"BOS_val\": float(prob.get_val(\"landbosse.total_capex\", units=\"MUSD\")[0]),\n", + " \"OpEx_val\": float(prob.get_val(\"opex.opex\", units=\"MUSD/yr\")[0]),\n", + " \"LCOE_val\": float(prob.get_val(\"financese.lcoe\", units=\"USD/MW/h\")[0]),\n", + " \"area_tight\": float(prob.get_val(\"landuse.area_tight\", units=\"km**2\")[0]),\n", + " \"coll_length\": float(prob.get_val(\"collection.total_length_cables\", units=\"km\")[0]),\n", + " \"turbine_spacing\": float(\n", + " np.min(prob.get_val(\"spacing_constraint.turbine_spacing\", units=\"km\"))\n", + " ),\n", + "}\n", + "\n", + "print(\"\\n\\nRESULTS:\\n\")\n", + "pp.pprint(test_data)\n", + "print(\"\\n\\n\")" + ] + }, + { + "cell_type": "markdown", + "id": "b3085438", + "metadata": {}, + "source": [ + "Now, we can optimize the same problem!\n", + "The optimization details are set under the `analysis_options` header in `inputs/ard_system.yaml`.\n", + "Here, we use a four-dimensional rectilinear layout parameterization ($\\theta$) as design variables, constrain the farm such that the turbines are in the boundaries and satisfactorily spaced, and then we optimize for LCOE.\n", + "$$\n", + "\\begin{aligned}\n", + "\\textrm{minimize}_\\theta \\quad & \\mathrm{LCOE}(\\theta, \\ldots) \\\\\n", + "\\textrm{subject to} \\quad & f_{\\mathrm{spacing}}(\\theta, \\ldots) < 0 \\\\\n", + " & f_{\\mathrm{boundary}}(\\theta, \\ldots) < 0\n", + "\\end{aligned}\n", + "$$" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "b0009663", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|0\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.]),\n", + " 'angle_skew': array([0.]),\n", + " 'spacing_primary': array([7.]),\n", + " 'spacing_secondary': array([7.])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03732881])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|1\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.]),\n", + " 'angle_skew': array([0.]),\n", + " 'spacing_primary': array([7.]),\n", + " 'spacing_secondary': array([7.])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03732881])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|2\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.]),\n", + " 'angle_skew': array([0.]),\n", + " 'spacing_primary': array([9.]),\n", + " 'spacing_secondary': array([7.])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03630168])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|3\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.]),\n", + " 'angle_skew': array([0.]),\n", + " 'spacing_primary': array([9.]),\n", + " 'spacing_secondary': array([9.])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.0362278])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|4\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([2.]),\n", + " 'angle_skew': array([0.]),\n", + " 'spacing_primary': array([9.]),\n", + " 'spacing_secondary': array([9.])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03589558])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|5\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([2.]),\n", + " 'angle_skew': array([2.]),\n", + " 'spacing_primary': array([9.]),\n", + " 'spacing_secondary': array([9.])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03576731])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|6\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([2.86507341]),\n", + " 'angle_skew': array([0.06342541]),\n", + " 'spacing_primary': array([9.88412296]),\n", + " 'spacing_secondary': array([7.42966507])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03536135])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|7\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([6.22440279]),\n", + " 'angle_skew': array([1.28942792]),\n", + " 'spacing_primary': array([11.09600928]),\n", + " 'spacing_secondary': array([6.10937891])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:498\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03370838])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|8\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([12.81065072]),\n", + " 'angle_skew': array([5.41443477]),\n", + " 'spacing_primary': array([10.77869556]),\n", + " 'spacing_secondary': array([4.23722274])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03370143])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|9\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([4.28310721]),\n", + " 'angle_skew': array([4.24611554]),\n", + " 'spacing_primary': array([11.15159215]),\n", + " 'spacing_secondary': array([4.24222055])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03451831])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|10\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([6.00666884]),\n", + " 'angle_skew': array([1.33986207]),\n", + " 'spacing_primary': array([12.01188114]),\n", + " 'spacing_secondary': array([6.44288611])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03373368])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|11\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.20718925]),\n", + " 'angle_skew': array([1.26618807]),\n", + " 'spacing_primary': array([11.04995437]),\n", + " 'spacing_secondary': array([5.85267537])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:498\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03352562])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|12\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.30827026]),\n", + " 'angle_skew': array([-0.28110214]),\n", + " 'spacing_primary': array([11.21647279]),\n", + " 'spacing_secondary': array([4.60049836])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03470472])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|13\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.29155102]),\n", + " 'angle_skew': array([0.64372952]),\n", + " 'spacing_primary': array([10.8322654]),\n", + " 'spacing_secondary': array([6.59969609])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03362597])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|14\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.59086432]),\n", + " 'angle_skew': array([2.93175261]),\n", + " 'spacing_primary': array([10.37471801]),\n", + " 'spacing_secondary': array([6.64181672])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03351144])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|15\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([9.75180855]),\n", + " 'angle_skew': array([3.5743247]),\n", + " 'spacing_primary': array([10.40303204]),\n", + " 'spacing_secondary': array([5.14565233])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03362007])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|16\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.74175405]),\n", + " 'angle_skew': array([3.20209382]),\n", + " 'spacing_primary': array([9.87740784]),\n", + " 'spacing_secondary': array([7.45226753])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03398983])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|17\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.69666884]),\n", + " 'angle_skew': array([2.95678515]),\n", + " 'spacing_primary': array([10.5780121]),\n", + " 'spacing_secondary': array([6.73851361])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03350047])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|18\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.17818917]),\n", + " 'angle_skew': array([3.05428928]),\n", + " 'spacing_primary': array([10.45137129]),\n", + " 'spacing_secondary': array([6.39931257])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.033564])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|19\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.54548368]),\n", + " 'angle_skew': array([2.85439181]),\n", + " 'spacing_primary': array([10.38776205]),\n", + " 'spacing_secondary': array([6.68407495])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03351661])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|20\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.68235437]),\n", + " 'angle_skew': array([2.82528036]),\n", + " 'spacing_primary': array([10.38236737]),\n", + " 'spacing_secondary': array([6.49956794])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03352674])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|21\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.6540565]),\n", + " 'angle_skew': array([2.91346029]),\n", + " 'spacing_primary': array([10.3196462]),\n", + " 'spacing_secondary': array([6.69319021])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03351022])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|22\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.67575792]),\n", + " 'angle_skew': array([3.08481535]),\n", + " 'spacing_primary': array([10.2720701]),\n", + " 'spacing_secondary': array([6.78208906])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03351441])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|23\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.84425874]),\n", + " 'angle_skew': array([3.07310244]),\n", + " 'spacing_primary': array([10.28009779]),\n", + " 'spacing_secondary': array([6.67529094])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03349585])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|24\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([9.18352292]),\n", + " 'angle_skew': array([3.04313706]),\n", + " 'spacing_primary': array([10.29713614]),\n", + " 'spacing_secondary': array([6.46621779])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03351251])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|25\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.84094657]),\n", + " 'angle_skew': array([3.23775271]),\n", + " 'spacing_primary': array([10.23836947]),\n", + " 'spacing_secondary': array([6.78082797])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03350363])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|26\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.92780689]),\n", + " 'angle_skew': array([3.06227062]),\n", + " 'spacing_primary': array([10.28551011]),\n", + " 'spacing_secondary': array([6.62168977])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03349405])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|27\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.96908323]),\n", + " 'angle_skew': array([2.99969751]),\n", + " 'spacing_primary': array([10.26251137]),\n", + " 'spacing_secondary': array([6.68375367])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.0334977])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|28\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.92431437]),\n", + " 'angle_skew': array([3.06109607]),\n", + " 'spacing_primary': array([10.26197456]),\n", + " 'spacing_secondary': array([6.61410686])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03349462])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|29\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.91563967]),\n", + " 'angle_skew': array([3.05174114]),\n", + " 'spacing_primary': array([10.29746973]),\n", + " 'spacing_secondary': array([6.57588523])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.0334975])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|30\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.93680565]),\n", + " 'angle_skew': array([3.06521408]),\n", + " 'spacing_primary': array([10.28505436]),\n", + " 'spacing_secondary': array([6.61850376])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03349397])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|31\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.93541161]),\n", + " 'angle_skew': array([3.08299015]),\n", + " 'spacing_primary': array([10.28137613]),\n", + " 'spacing_secondary': array([6.62678257])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03349297])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|32\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.9414375]),\n", + " 'angle_skew': array([3.09048798]),\n", + " 'spacing_primary': array([10.27644142]),\n", + " 'spacing_secondary': array([6.64360874])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03349228])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|33\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.94171468]),\n", + " 'angle_skew': array([3.10878737]),\n", + " 'spacing_primary': array([10.27276221]),\n", + " 'spacing_secondary': array([6.65078641])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03349156])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|34\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.97150949]),\n", + " 'angle_skew': array([3.13361962]),\n", + " 'spacing_primary': array([10.26586472]),\n", + " 'spacing_secondary': array([6.65771845])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03349054])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|35\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.97471229]),\n", + " 'angle_skew': array([3.16240794]),\n", + " 'spacing_primary': array([10.25667862]),\n", + " 'spacing_secondary': array([6.68372979])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.0334902])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|36\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.97294762]),\n", + " 'angle_skew': array([3.19266705]),\n", + " 'spacing_primary': array([10.25888031]),\n", + " 'spacing_secondary': array([6.65772162])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03348846])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|37\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.98282721]),\n", + " 'angle_skew': array([3.22341897]),\n", + " 'spacing_primary': array([10.25938009]),\n", + " 'spacing_secondary': array([6.63413215])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03348738])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|38\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.98743922]),\n", + " 'angle_skew': array([3.26280778]),\n", + " 'spacing_primary': array([10.2542312]),\n", + " 'spacing_secondary': array([6.63499243])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03348601])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|39\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([9.00395892]),\n", + " 'angle_skew': array([3.34033783]),\n", + " 'spacing_primary': array([10.24352712]),\n", + " 'spacing_secondary': array([6.63626258])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03348343])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|40\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.93612225]),\n", + " 'angle_skew': array([3.48355345]),\n", + " 'spacing_primary': array([10.23731751]),\n", + " 'spacing_secondary': array([6.61507499])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03347882])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|41\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.95916329]),\n", + " 'angle_skew': array([3.80019775]),\n", + " 'spacing_primary': array([10.20307325]),\n", + " 'spacing_secondary': array([6.5942704])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03346946])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|42\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.99875165]),\n", + " 'angle_skew': array([4.10069548]),\n", + " 'spacing_primary': array([10.27891273]),\n", + " 'spacing_secondary': array([6.03571669])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.0336019])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|43\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.89437289]),\n", + " 'angle_skew': array([3.82860692]),\n", + " 'spacing_primary': array([9.99398572]),\n", + " 'spacing_secondary': array([6.82595451])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03354543])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|44\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.95835196]),\n", + " 'angle_skew': array([3.8101481]),\n", + " 'spacing_primary': array([10.26271389]),\n", + " 'spacing_secondary': array([6.64664718])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03346738])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|45\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.98227427]),\n", + " 'angle_skew': array([3.81532101]),\n", + " 'spacing_primary': array([10.2341381]),\n", + " 'spacing_secondary': array([6.43976427])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03348852])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|46\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.9197167]),\n", + " 'angle_skew': array([3.80310252]),\n", + " 'spacing_primary': array([10.20639718]),\n", + " 'spacing_secondary': array([6.58932262])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03346921])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|47\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.90574977]),\n", + " 'angle_skew': array([3.82174101]),\n", + " 'spacing_primary': array([10.16655647]),\n", + " 'spacing_secondary': array([6.65466976])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03347065])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|48\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.92178396]),\n", + " 'angle_skew': array([3.82244471]),\n", + " 'spacing_primary': array([10.20721649]),\n", + " 'spacing_secondary': array([6.58474715])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03346877])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|49\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.91405197]),\n", + " 'angle_skew': array([3.85212766]),\n", + " 'spacing_primary': array([10.20908038]),\n", + " 'spacing_secondary': array([6.5591412])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03346911])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_COBYLA|50\n", + "----------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([8.92096623]),\n", + " 'angle_skew': array([3.82299027]),\n", + " 'spacing_primary': array([10.19726613]),\n", + " 'spacing_secondary': array([6.58490219])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'financese.lcoe': array([0.03346879])}\n", + "\n", + "Return from COBYLA because the objective function has been evaluated MAXFUN times.\n", + "Number of function values = 50 Least value of F = 0.03346878666309313 Constraint violation = 0.0\n", + "The corresponding X is:\n", + "[10.19726613 6.58490219 8.92096623 3.82299027]\n", + "The constraint value is:\n", + "[-7.19726613e+00 -3.58490219e+00 -1.88920966e+02 -4.88229903e+01\n", + " -9.80273387e+00 -1.34150978e+01 -1.71079034e+02 -4.11770097e+01\n", + " -2.46831711e-01 -2.24161401e+00 -2.65275439e+00 -1.90045167e+00\n", + " -4.53271484e-03 -1.14008252e+00 -3.30539637e+00 -4.32637720e+00\n", + " -3.00226636e+00 -3.83049316e-01 -7.61565918e-01 -3.38078296e+00\n", + " -5.99999604e+00 -3.38078296e+00 -7.61565918e-01 -3.83049316e-01\n", + " -3.00226636e+00 -4.32637720e+00 -3.30539637e+00 -1.14008252e+00\n", + " -4.53271484e-03 -1.90045167e+00 -2.65275439e+00 -2.24161401e+00\n", + " -2.46831711e-01 -7.73644597e-01 -2.09928919e+00 -3.42493379e+00\n", + " -4.75057839e+00 -3.05946391e-01 -9.78275808e-01 -2.17968140e+00\n", + " -3.46011786e+00 -4.76276842e+00 -1.16389278e+00 -1.54521208e+00\n", + " -2.50855162e+00 -3.67296403e+00 -4.91136280e+00 -2.02183917e+00\n", + " -2.26349232e+00 -3.01787579e+00 -4.03882742e+00 -5.18577369e+00\n", + " -2.87978557e+00 -3.04353049e+00 -3.64242417e+00 -4.52473279e+00\n", + " -5.56910323e+00 -7.73644597e-01 -2.09928919e+00 -3.42493379e+00\n", + " -1.07436625e+00 -3.05946391e-01 -9.78275808e-01 -2.17968140e+00\n", + " -3.46011786e+00 -1.68517339e+00 -1.16389278e+00 -1.54521208e+00\n", + " -2.50855162e+00 -3.67296403e+00 -2.42070355e+00 -2.02183917e+00\n", + " -2.26349232e+00 -3.01787579e+00 -4.03882742e+00 -3.20846965e+00\n", + " -2.87978557e+00 -3.04353049e+00 -3.64242417e+00 -4.52473279e+00\n", + " -7.73644597e-01 -2.09928919e+00 -2.28855092e+00 -1.07436625e+00\n", + " -3.05946391e-01 -9.78275808e-01 -2.17968140e+00 -2.70073249e+00\n", + " -1.68517339e+00 -1.16389278e+00 -1.54521208e+00 -2.50855162e+00\n", + " -3.26427460e+00 -2.42070355e+00 -2.02183917e+00 -2.26349232e+00\n", + " -3.01787579e+00 -3.92234677e+00 -3.20846965e+00 -2.87978557e+00\n", + " -3.04353049e+00 -3.64242417e+00 -7.73644597e-01 -3.57196157e+00\n", + " -2.28855092e+00 -1.07436625e+00 -3.05946391e-01 -9.78275808e-01\n", + " -3.88311666e+00 -2.70073249e+00 -1.68517339e+00 -1.16389278e+00\n", + " -1.54521208e+00 -4.32709874e+00 -3.26427460e+00 -2.42070355e+00\n", + " -2.02183917e+00 -2.26349232e+00 -4.87138393e+00 -3.92234677e+00\n", + " -3.20846965e+00 -2.87978557e+00 -3.04353049e+00 -4.87571184e+00\n", + " -3.57196157e+00 -2.28855092e+00 -1.07436625e+00 -3.05946391e-01\n", + " -5.12910184e+00 -3.88311666e+00 -2.70073249e+00 -1.68517339e+00\n", + " -1.16389278e+00 -5.49464571e+00 -4.32709874e+00 -3.26427460e+00\n", + " -2.42070355e+00 -2.02183917e+00 -5.95346498e+00 -4.87138393e+00\n", + " -3.92234677e+00 -3.20846965e+00 -2.87978557e+00 -7.73644597e-01\n", + " -2.09928919e+00 -3.42493379e+00 -4.75057839e+00 -3.05946391e-01\n", + " -9.78275808e-01 -2.17968140e+00 -3.46011786e+00 -4.76276842e+00\n", + " -1.16389278e+00 -1.54521208e+00 -2.50855162e+00 -3.67296403e+00\n", + " -4.91136280e+00 -2.02183917e+00 -2.26349232e+00 -3.01787579e+00\n", + " -4.03882742e+00 -5.18577369e+00 -7.73644597e-01 -2.09928919e+00\n", + " -3.42493379e+00 -1.07436625e+00 -3.05946391e-01 -9.78275808e-01\n", + " -2.17968140e+00 -3.46011786e+00 -1.68517339e+00 -1.16389278e+00\n", + " -1.54521208e+00 -2.50855162e+00 -3.67296403e+00 -2.42070355e+00\n", + " -2.02183917e+00 -2.26349232e+00 -3.01787579e+00 -4.03882742e+00\n", + " -7.73644597e-01 -2.09928919e+00 -2.28855092e+00 -1.07436625e+00\n", + " -3.05946391e-01 -9.78275808e-01 -2.17968140e+00 -2.70073249e+00\n", + " -1.68517339e+00 -1.16389278e+00 -1.54521208e+00 -2.50855162e+00\n", + " -3.26427460e+00 -2.42070355e+00 -2.02183917e+00 -2.26349232e+00\n", + " -3.01787579e+00 -7.73644597e-01 -3.57196157e+00 -2.28855092e+00\n", + " -1.07436625e+00 -3.05946391e-01 -9.78275808e-01 -3.88311666e+00\n", + " -2.70073249e+00 -1.68517339e+00 -1.16389278e+00 -1.54521208e+00\n", + " -4.32709874e+00 -3.26427460e+00 -2.42070355e+00 -2.02183917e+00\n", + " -2.26349232e+00 -4.87571184e+00 -3.57196157e+00 -2.28855092e+00\n", + " -1.07436625e+00 -3.05946391e-01 -5.12910184e+00 -3.88311666e+00\n", + " -2.70073249e+00 -1.68517339e+00 -1.16389278e+00 -5.49464571e+00\n", + " -4.32709874e+00 -3.26427460e+00 -2.42070355e+00 -2.02183917e+00\n", + " -7.73644597e-01 -2.09928919e+00 -3.42493379e+00 -4.75057839e+00\n", + " -3.05946391e-01 -9.78275808e-01 -2.17968140e+00 -3.46011786e+00\n", + " -4.76276842e+00 -1.16389278e+00 -1.54521208e+00 -2.50855162e+00\n", + " -3.67296403e+00 -4.91136280e+00 -7.73644597e-01 -2.09928919e+00\n", + " -3.42493379e+00 -1.07436625e+00 -3.05946391e-01 -9.78275808e-01\n", + " -2.17968140e+00 -3.46011786e+00 -1.68517339e+00 -1.16389278e+00\n", + " -1.54521208e+00 -2.50855162e+00 -3.67296403e+00 -7.73644597e-01\n", + " -2.09928919e+00 -2.28855092e+00 -1.07436625e+00 -3.05946391e-01\n", + " -9.78275808e-01 -2.17968140e+00 -2.70073249e+00 -1.68517339e+00\n", + " -1.16389278e+00 -1.54521208e+00 -2.50855162e+00 -7.73644597e-01\n", + " -3.57196157e+00 -2.28855092e+00 -1.07436625e+00 -3.05946391e-01\n", + " -9.78275808e-01 -3.88311666e+00 -2.70073249e+00 -1.68517339e+00\n", + " -1.16389278e+00 -1.54521208e+00 -4.87571184e+00 -3.57196157e+00\n", + " -2.28855092e+00 -1.07436625e+00 -3.05946391e-01 -5.12910184e+00\n", + " -3.88311666e+00 -2.70073249e+00 -1.68517339e+00 -1.16389278e+00\n", + " -7.73644597e-01 -2.09928919e+00 -3.42493379e+00 -4.75057839e+00\n", + " -3.05946391e-01 -9.78275808e-01 -2.17968140e+00 -3.46011786e+00\n", + " -4.76276842e+00 -7.73644597e-01 -2.09928919e+00 -3.42493379e+00\n", + " -1.07436625e+00 -3.05946391e-01 -9.78275808e-01 -2.17968140e+00\n", + " -3.46011786e+00 -7.73644597e-01 -2.09928919e+00 -2.28855092e+00\n", + " -1.07436625e+00 -3.05946391e-01 -9.78275808e-01 -2.17968140e+00\n", + " -7.73644597e-01 -3.57196157e+00 -2.28855092e+00 -1.07436625e+00\n", + " -3.05946391e-01 -9.78275808e-01 -4.87571184e+00 -3.57196157e+00\n", + " -2.28855092e+00 -1.07436625e+00 -3.05946391e-01 -7.73644597e-01\n", + " -2.09928919e+00 -3.42493379e+00 -4.75057839e+00 -7.73644597e-01\n", + " -2.09928919e+00 -3.42493379e+00 -7.73644597e-01 -2.09928919e+00\n", + " -7.73644597e-01]\n", + "\n", + "Optimization FAILED.\n", + "Return from COBYLA because the objective function has been evaluated MAXFUN times.\n", + "-----------------------------------\n", + "\n", + "\n", + "RESULTS (opt):\n", + "\n", + "{'AEP_val': 453.31177490509094,\n", + " 'BOS_val': 41.923934482221036,\n", + " 'CapEx_val': 110.5,\n", + " 'LCOE_val': 33.46878666309313,\n", + " 'OpEx_val': 3.7400000000000007,\n", + " 'area_tight': 18.15681922585348,\n", + " 'coll_length': 23.423806992035267,\n", + " 'turbine_spacing': 0.8579463914778505}\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "optimize = True # set to False to skip optimization\n", + "if optimize:\n", + " # run the optimization\n", + " prob.run_driver()\n", + " prob.cleanup()\n", + "\n", + " # collapse the test result data\n", + " test_data = {\n", + " \"AEP_val\": float(prob.get_val(\"AEP_farm\", units=\"GW*h\")[0]),\n", + " \"CapEx_val\": float(prob.get_val(\"tcc.tcc\", units=\"MUSD\")[0]),\n", + " \"BOS_val\": float(prob.get_val(\"landbosse.total_capex\", units=\"MUSD\")[0]),\n", + " \"OpEx_val\": float(prob.get_val(\"opex.opex\", units=\"MUSD/yr\")[0]),\n", + " \"LCOE_val\": float(prob.get_val(\"financese.lcoe\", units=\"USD/MW/h\")[0]),\n", + " \"area_tight\": float(prob.get_val(\"landuse.area_tight\", units=\"km**2\")[0]),\n", + " \"coll_length\": float(\n", + " prob.get_val(\"collection.total_length_cables\", units=\"km\")[0]\n", + " ),\n", + " \"turbine_spacing\": float(\n", + " np.min(prob.get_val(\"spacing_constraint.turbine_spacing\", units=\"km\"))\n", + " ),\n", + " }\n", + "\n", + " # clean up the recorder\n", + " prob.cleanup()\n", + "\n", + " # print the results\n", + " print(\"\\n\\nRESULTS (opt):\\n\")\n", + " pp.pprint(test_data)\n", + " print(\"\\n\\n\")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "f93a46df", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_layout(\n", + " prob,\n", + " input_dict=input_dict,\n", + " show_image=True,\n", + " include_cable_routing=True,\n", + ")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "d5fb8cca", + "metadata": {}, + "source": [ + "The result: a farm that fits in a stop-sign domain and minimzes the LCOE." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "ard-dev-env", + "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.12.11" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/01_onshore/optimization_demo.py b/examples/01_onshore/optimization_demo.py deleted file mode 100644 index 176d672c..00000000 --- a/examples/01_onshore/optimization_demo.py +++ /dev/null @@ -1,85 +0,0 @@ -import pprint as pp -import numpy as np - -from ard.utils.io import load_yaml -from ard.api import set_up_ard_model -from ard.viz.layout import plot_layout - -import openmdao.api as om - - -def run_example(): - - # load input - input_dict = load_yaml("./inputs/ard_system.yaml") - - # set up system - prob = set_up_ard_model(input_dict=input_dict, root_data_path="inputs") - - if False: - # visualize model - om.n2(prob) - - # run the model - prob.run_model() - - # collapse the test result data - test_data = { - "AEP_val": float(prob.get_val("AEP_farm", units="GW*h")[0]), - "CapEx_val": float(prob.get_val("tcc.tcc", units="MUSD")[0]), - "BOS_val": float(prob.get_val("landbosse.total_capex", units="MUSD")[0]), - "OpEx_val": float(prob.get_val("opex.opex", units="MUSD/yr")[0]), - "LCOE_val": float(prob.get_val("financese.lcoe", units="USD/MW/h")[0]), - "area_tight": float(prob.get_val("landuse.area_tight", units="km**2")[0]), - "coll_length": float( - prob.get_val("collection.total_length_cables", units="km")[0] - ), - "turbine_spacing": float( - np.min(prob.get_val("spacing_constraint.turbine_spacing", units="km")) - ), - } - - print("\n\nRESULTS:\n") - pp.pprint(test_data) - print("\n\n") - - optimize = True # set to False to skip optimization - - if optimize: - - # run the optimization - prob.run_driver() - prob.cleanup() - - # collapse the test result data - test_data = { - "AEP_val": float(prob.get_val("AEP_farm", units="GW*h")[0]), - "CapEx_val": float(prob.get_val("tcc.tcc", units="MUSD")[0]), - "BOS_val": float(prob.get_val("landbosse.total_capex", units="MUSD")[0]), - "OpEx_val": float(prob.get_val("opex.opex", units="MUSD/yr")[0]), - "LCOE_val": float(prob.get_val("financese.lcoe", units="USD/MW/h")[0]), - "area_tight": float(prob.get_val("landuse.area_tight", units="km**2")[0]), - "coll_length": float( - prob.get_val("collection.total_length_cables", units="km")[0] - ), - "turbine_spacing": float( - np.min(prob.get_val("spacing_constraint.turbine_spacing", units="km")) - ), - } - - # clean up the recorder - prob.cleanup() - - # print the results - print("\n\nRESULTS (opt):\n") - pp.pprint(test_data) - print("\n\n") - - plot_layout( - prob, input_dict=input_dict, show_image=True, include_cable_routing=True - ) - - -if __name__ == "__main__": - - run_example() diff --git a/examples/02_offshore_fixed/inputs/ard_system.yaml b/examples/02_offshore_fixed/inputs/ard_system.yaml index 276e9427..5c12cc73 100644 --- a/examples/02_offshore_fixed/inputs/ard_system.yaml +++ b/examples/02_offshore_fixed/inputs/ard_system.yaml @@ -1,6 +1,7 @@ modeling_options: &modeling_options windIO_plant: !include windio.yaml layout: + type: gridfarm N_turbines: 25 N_substations: 1 spacing_primary: 7.0 @@ -9,20 +10,23 @@ modeling_options: &modeling_options angle_skew: 0.0 collection: max_turbines_per_string: 8 - solver_name: "highs" + solver_name: highs solver_options: time_limit: 60 mip_gap: 0.02 model_options: - topology: "radial" # "radial", "branched" - feeder_route: "segmented" - feeder_limit: "unlimited" + topology: radial # radial, branched + feeder_route: segmented + feeder_limit: unlimited + offshore: true + floating: false + site_depth: 50.0 costs: num_blades: 3 - tower_mass: 1574.04487111 # (t) + tower_mass: 1574.04487111 # (tonne) tower_length: 149.386 # (m) - nacelle_mass: 849.1432357 # (t) - blade_mass: 83.30831171 # (t) + nacelle_mass: 849.1432357 # (tonne) + blade_mass: 83.30831171 # (tonne) turbine_capex: 1397.17046735 # (USD/kW) site_mean_windspeed: 10. # (m/s) turbine_rated_windspeed: 11.13484394 # (m/s) @@ -42,11 +46,11 @@ modeling_options: &modeling_options installation_plan_cost: 1000000.0 # (USD) boem_review_cost: 0.0 # (USD) - transition_piece_mass: 100. # (ton) + transition_piece_mass: 100. # (tonne) transition_piece_cost: 0. # (USD) # Fixed bottom configuration - monopile_mass: 2097.21115974 # (t) + monopile_mass: 2097.21115974 # (tonne) monopile_cost: 4744119.28172591 # (USD) monopile_length: 94. # (m) monopile_diameter: 10. # (m) (max) @@ -60,37 +64,49 @@ modeling_options: &modeling_options mooring_line_length: 837. # (m) anchor_mass: 0. # (kg) floating_substructure_cost: 11803978.242949858 # (USD) - offshore: true - floating: false - site_depth: 50.0 -system: "offshore_monopile" +system: offshore_monopile analysis_options: driver: name: ScipyOptimizeDriver options: - optimizer: "SLSQP" + optimizer: SLSQP + opt_settings: + maxiter: 10 + debug_print: + - "desvars" + - "objs" design_variables: spacing_primary: lower: 3.0 upper: 10.0 + scaler: 2.0 spacing_secondary: lower: 3.0 upper: 10.0 + scaler: 2.0 angle_orientation: lower: -180.0 upper: 180.0 + scaler: 0.2 angle_skew: lower: -45.0 upper: 45.0 + scaler: 0.2 constraints: + AEP_farm: + units: GW*h + lower: 2200.0 + scaler: 2.0 spacing_constraint.turbine_spacing: - units: "m" + units: m lower: 852.0 + scaler: 0.0005 # 1/(7D) objective: name: collection.total_length_cables options: - scaler: 1.0 + units: km + scaler: 0.05 recorder: - filepath: "opt_results.sql" + filepath: opt_results.sql diff --git a/examples/02_offshore_fixed/inputs/windio.yaml b/examples/02_offshore_fixed/inputs/windio.yaml index 7b51492e..8dede6bd 100644 --- a/examples/02_offshore_fixed/inputs/windio.yaml +++ b/examples/02_offshore_fixed/inputs/windio.yaml @@ -3,8 +3,8 @@ site: name: Ard Example 02 offshore wind site boundaries: polygons: - - x: [ 5.0, -5.0, -5.0, 5.0] - y: [ 5.0, 5.0, -5.0, -5.0] + - x: [ 5000.0, -5000.0, -5000.0, 5000.0] + y: [ 5000.0, 5000.0, -5000.0, -5000.0] energy_resource: name: Ard Example 02 offshore energy resource wind_resource: !include ../../data/windIO-plant_wind-resource_wrg-example.yaml @@ -26,7 +26,7 @@ wind_farm: 1250.0, 1250.0, 1250.0, 1250.0, 1250.0, 2500.0, 2500.0, 2500.0, 2500.0, 2500.0 ] - turbine: !include ../../data/windIO-plant_turbine_IEA-3.4MW-130m-RWT.yaml + turbine: !include ../../data/windIO-plant_turbine_IEA-22MW-284m-RWT.yaml electrical_substations: - electrical_substation: coordinates: diff --git a/examples/02_offshore_fixed/optimization_demo.ipynb b/examples/02_offshore_fixed/optimization_demo.ipynb new file mode 100644 index 00000000..7acb8b29 --- /dev/null +++ b/examples/02_offshore_fixed/optimization_demo.ipynb @@ -0,0 +1,547 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "ad55500a", + "metadata": {}, + "source": [ + "# 02: Monopile \n", + "\n", + "In this example, we show `Ard` handling gradient computation.\n", + "\n", + "As in Example 01, we start by loading what we need to run the problem." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "eafa9eb0", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: :488\n", + "numpy.ndarray size changed, may indicate binary incompatibility. Expected 16 from C header, got 96 from PyObject" + ] + } + ], + "source": [ + "from pathlib import Path # optional, for nice path specifications\n", + "\n", + "import pprint as pp # optional, for nice printing\n", + "import numpy as np # numerics library\n", + "import matplotlib.pyplot as plt # plotting capabilities\n", + "\n", + "import ard # technically we only really need this\n", + "from ard.utils.io import load_yaml # we grab a yaml loader here\n", + "from ard.api import set_up_ard_model # the secret sauce\n", + "from ard.viz.layout import plot_layout # a plotting tool!\n", + "\n", + "import openmdao.api as om # for N2 diagrams from the OpenMDAO backend\n", + "\n", + "# import optiwindnet.plotting\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "id": "111fe455", + "metadata": {}, + "source": [ + "Now, we can set up different case.\n", + "As before, we do it a little verbosely so that our documentation system can grab it, you can generally just use relative paths.\n", + "We grab the file at `inputs/ard_system.yaml`, which describes the `Ard` system for this problem.\n", + "It references, in turn, the `inputs/windio.yaml` file, which is where we define the plant we want to optimize, and an initial setup for it." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "22d078e2", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[34mfloris.floris_model.FlorisModel\u001b[0m \u001b[1;30mWARNING\u001b[0m \u001b[33mturbine_type has been changed without specifying a new reference_wind_height. reference_wind_height remains 90.00 m. Consider calling `FlorisModel.assign_hub_height_to_ref_height` to update the reference wind height to the turbine hub height.\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Adding top_level\n", + "Adding layout2aep\n", + "Adding layout to layout2aep\n", + "Adding aepFLORIS to layout2aep\n", + "\tActivating approximate totals on layout2aep\n", + "Adding landuse\n", + "Adding collection\n", + "Adding spacing_constraint\n", + "Adding tcc\n", + "Adding orbit\n", + "Adding opex\n", + "Adding financese\n" + ] + } + ], + "source": [ + "# load input\n", + "path_inputs = Path.cwd().absolute() / \"inputs\"\n", + "input_dict = load_yaml(path_inputs / \"ard_system.yaml\")\n", + "\n", + "# set up system\n", + "prob = set_up_ard_model(input_dict=input_dict, root_data_path=path_inputs)" + ] + }, + { + "cell_type": "markdown", + "id": "6b598f33", + "metadata": {}, + "source": [ + "Here, you should see each of the groups or components described as they are added to the `Ard` model and, occasionally, some options being turned on on them.\n", + "Comparing to Example 01, you can notice that the balance-of-station cost model (BOS) is different: before it was `landbosse` and now it is `orbit`, and this is so we can generate an estimate for offshore BOS costs.\n", + "\n", + "As before, we leave in some turned-off-by-default code here in case you want to see what the connections of the system look like with an [N2 diagram vizualization](https://openmdao.org/newdocs/versions/latest/features/model_visualization/n2_basics/n2_basics.html)." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "a35ba837", + "metadata": {}, + "outputs": [], + "source": [ + "if False:\n", + " # visualize model\n", + " om.n2(prob)" + ] + }, + { + "cell_type": "markdown", + "id": "3c0228e5", + "metadata": {}, + "source": [ + "Here's the one-shot analysis." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "7c99e6ce", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/openmdao/recorders/sqlite_recorder.py:231: UserWarning:The existing case recorder file, ard_prob_out/problem_out/opt_results.sql, is being overwritten.\n", + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ORBIT library intialized at '/Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/library'\n", + "\n", + "\n", + "RESULTS:\n", + "\n", + "{'AEP_val': 2491.169182284602,\n", + " 'BOS_val': 1269.2092798089284,\n", + " 'CapEx_val': 768.4437570425,\n", + " 'LCOE_val': 85.63207159146933,\n", + " 'OpEx_val': 60.50000000000001,\n", + " 'area_tight': 63.234304,\n", + " 'coll_length': 47.761107521256534,\n", + " 'turbine_spacing': 1.988}\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "# run the model\n", + "prob.run_model()\n", + "\n", + "# collapse the test result data\n", + "test_data = {\n", + " \"AEP_val\": float(prob.get_val(\"AEP_farm\", units=\"GW*h\")[0]),\n", + " \"CapEx_val\": float(prob.get_val(\"tcc.tcc\", units=\"MUSD\")[0]),\n", + " \"BOS_val\": float(prob.get_val(\"orbit.total_capex\", units=\"MUSD\")[0]),\n", + " \"OpEx_val\": float(prob.get_val(\"opex.opex\", units=\"MUSD/yr\")[0]),\n", + " \"LCOE_val\": float(prob.get_val(\"financese.lcoe\", units=\"USD/MW/h\")[0]),\n", + " \"area_tight\": float(prob.get_val(\"landuse.area_tight\", units=\"km**2\")[0]),\n", + " \"coll_length\": float(\n", + " prob.get_val(\"collection.total_length_cables\", units=\"km\")[0]\n", + " ),\n", + " \"turbine_spacing\": float(\n", + " np.min(prob.get_val(\"spacing_constraint.turbine_spacing\", units=\"km\"))\n", + " ),\n", + "}\n", + "\n", + "print(\"\\n\\nRESULTS:\\n\")\n", + "pp.pprint(test_data)\n", + "print(\"\\n\\n\")" + ] + }, + { + "cell_type": "markdown", + "id": "78803b2d", + "metadata": {}, + "source": [ + "Now, we can optimize!\n", + "The optimization details are set under the `analysis_options` header in `inputs/ard_system.yaml`.\n", + "As before, we use a four-dimensional rectilinear layout parameterization ($\\theta$) as design variables, and constrain the farm such that the turbines are in the boundaries and satisfactorily spaced.\n", + "However, the derivatives of AEP with respect to layout variables are known to be non-smooth, and FLORIS doesn't provide analytical derivatives; to use finite differencing we would be adding noise on top of the noise, making useful gradients even harder to detect!\n", + "`Ard` is designed to make overcoming this easier, and more about that is in the pipeline, but for now we will avoid the complexities of that discussion.\n", + "Instead, we optimize to minimize the cable length here, while \n", + "$$\n", + "\\begin{aligned}\n", + "\\textrm{minimize}_\\theta \\quad & \\mathrm{LCOE}(\\theta, \\ldots) \\\\\n", + "\\textrm{subject to} \\quad & \\mathrm{AEP}(\\theta, \\ldots) > \\mathrm{AEP}_{\\min} \\\\\n", + " & f_{\\mathrm{spacing}}(\\theta, \\ldots) < 0 \\\\\n", + " & f_{\\mathrm{boundary}}(\\theta, \\ldots) < 0\n", + "\\end{aligned}\n", + "$$" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "58397050", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|0\n", + "--------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.]),\n", + " 'angle_skew': array([0.]),\n", + " 'spacing_primary': array([7.]),\n", + " 'spacing_secondary': array([7.])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'collection.total_length_cables': array([47761.10752126])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|1\n", + "--------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.]),\n", + " 'angle_skew': array([0.]),\n", + " 'spacing_primary': array([7.]),\n", + " 'spacing_secondary': array([7.])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([47761.10752126])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:498\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|2\n", + "--------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.00080387]),\n", + " 'angle_skew': array([-0.00104343]),\n", + " 'spacing_primary': array([6.97160497]),\n", + " 'spacing_secondary': array([6.94320903])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([47422.44976731])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|3\n", + "--------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([-0.02013307]),\n", + " 'angle_skew': array([-0.03367621]),\n", + " 'spacing_primary': array([6.85288012]),\n", + " 'spacing_secondary': array([6.59919383])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([45461.68266391])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|4\n", + "--------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([-0.13933268]),\n", + " 'angle_skew': array([-0.19339181]),\n", + " 'spacing_primary': array([6.25924076]),\n", + " 'spacing_secondary': array([4.87908646])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([35658.12664397])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|5\n", + "--------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([-0.27132002]),\n", + " 'angle_skew': array([-0.36507551]),\n", + " 'spacing_primary': array([5.59352781]),\n", + " 'spacing_secondary': array([3.00004])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([24902.77860916])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|6\n", + "--------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([-0.26746584]),\n", + " 'angle_skew': array([-0.36438297]),\n", + " 'spacing_primary': array([5.57165881]),\n", + " 'spacing_secondary': array([3.])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([24865.97107427])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|7\n", + "--------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([-0.238704]),\n", + " 'angle_skew': array([-0.26296628]),\n", + " 'spacing_primary': array([5.45852978]),\n", + " 'spacing_secondary': array([3.])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([24675.47645605])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|8\n", + "--------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([-0.09214593]),\n", + " 'angle_skew': array([0.24250766]),\n", + " 'spacing_primary': array([4.89375834]),\n", + " 'spacing_secondary': array([3.00012142])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([23728.27195423])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|9\n", + "--------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.25195306]),\n", + " 'angle_skew': array([0.24250766]),\n", + " 'spacing_primary': array([3.55272138]),\n", + " 'spacing_secondary': array([3.00007768])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([21449.28234797])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|10\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.35629992]),\n", + " 'angle_skew': array([0.15825882]),\n", + " 'spacing_primary': array([3.00003157]),\n", + " 'spacing_secondary': array([3.00001001])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.57745996])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|11\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.35830145]),\n", + " 'angle_skew': array([0.15662531]),\n", + " 'spacing_primary': array([3.00000051]),\n", + " 'spacing_secondary': array([3.])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.42919773])}\n", + "\n", + "Iteration limit reached (Exit mode 9)\n", + " Current function value: 1.0253714598865464\n", + " Iterations: 10\n", + " Function evaluations: 11\n", + " Gradient evaluations: 11\n", + "Optimization FAILED.\n", + "Iteration limit reached\n", + "-----------------------------------\n", + "\n", + "\n", + "RESULTS (opt):\n", + "\n", + "{'AEP_val': 2071.4571935884464,\n", + " 'BOS_val': 1250.5550001803392,\n", + " 'CapEx_val': 768.4437570425,\n", + " 'LCOE_val': 102.3071620536793,\n", + " 'OpEx_val': 60.50000000000001,\n", + " 'area_tight': 11.614465966740871,\n", + " 'coll_length': 20.507429197730925,\n", + " 'turbine_spacing': 0.8520001442738311}\n", + "\n", + "\n", + "\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAArMAAAIjCAYAAAAQgZNYAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAeExJREFUeJzt3Qd4VNXWxvGVHgIptJDQe6+KegFp0kSKir1ivRZQFNvFjg3hsyvItYG9oIKKSu9Ib9J7E1IJpBBSSOZ71obJTQMyIZMz5f97nmNmzrSdOTG82bPO2j42m80mAAAAgBvytXoAAAAAQGkRZgEAAOC2CLMAAABwW4RZAAAAuC3CLAAAANwWYRYAAABuizALAAAAt0WYBQAAgNsizAIAAMBtEWYBAC7pxRdfFB8fH6uHAcDFEWYBuJXdu3fLfffdJw0bNpTg4GAJCwuTLl26yLvvvisnTpywengogTvuuMOEVPumx7Bdu3by5ptvSmZmZpm8xoQJE2Ty5Mll8lwAXJu/1QMAgJL6/fff5brrrpOgoCC5/fbbpXXr1pKVlSVLliyRJ554QjZv3iwfffSR1cNECegx/OSTT8zlY8eOyU8//SSPP/64rFq1Sr777rsyCbPVqlUzwRmAZyPMAnALe/fulRtvvFHq1asn8+bNk+jo6Lzbhg0bJrt27TJh151lZGRIYGCg+Pp6/odm/v7+cuutt+Zdf/DBB+WSSy6R77//Xt566y2pWbOmpeMD4D48/zcmAI8wbtw4SUtLk08//bRAkLVr3LixjBgxIu/6yZMn5eWXX5ZGjRqZWcD69evL008/XeRjbN0/cOBAM7t78cUXm9IFLWH44osv8u6zevVq83H4559/XuR1Z86caW6bPn163r5Dhw7JXXfdJTVq1DCv3apVK/nss88KPG7BggXmcToL+eyzz0qtWrUkJCREUlJSzO1TpkyRli1bmvHoDPTUqVPNLKOON7/c3Fx55513zGvoffU1tQzj6NGjDn+fdjpT+uijj5rH6Phr165tZsITExPz7qPv4wsvvGDed71PnTp15Mknnyx1mYAG+B49epjL+/btO+P9SnJcdZ/O0i9cuDCvlMH+3AA8kA0A3ECtWrVsDRs2LPH9hw4datNfcddee61t/Pjxtttvv91cv+qqqwrcr169erZmzZrZatSoYXv66adtH3zwge2CCy6w+fj42DZt2pR3P33tK664osjr3HnnnbbKlSvbsrKyzPXY2Fhb7dq1bXXq1LG99NJLtg8//NA2ePBg89pvv/123uPmz59v9rVs2dLWvn1721tvvWUbM2aM7fjx47bp06eb12/btq3Z/9xzz5nXaN26tRlvfvfcc4/N39/fdu+999omTpxoe+qpp2wVK1a0XXTRRXljcuT7TE1NNa/j5+dnnlPH//LLL5vnW7dunblPTk6OrW/fvraQkBDbI488Yvvvf/9rGz58uBnHlVdeWaJjo2Ms7OqrrzbvybZt28z1F154wVx39LhOnTrVHIPmzZvbvvzyS7PNmjXrnOMC4J4IswBcXnJysgksJQlKav369eb+GvTye/zxx83+efPmFQh5um/RokV5++Lj421BQUG2xx57LG/fqFGjbAEBAbakpKS8fZmZmbaIiAjbXXfdlbfv7rvvtkVHR9sSExMLvPaNN95oCw8Pt6WnpxcIsxqS7fvs2rRpY8KYBku7BQsWmPvnD7OLFy82+77++usCj58xY0aR/SX9Pp9//nlzv59//rnI+5qbm2u+ajj09fU1r5+fhml97NKlS20lCbMJCQlm27Vrl+21117LC/B2hcOsI8e1VatWtu7du591HAA8A2UGAFye/aP30NDQEt3/jz/+MF9HjhxZYP9jjz1mvhaurdWP87t27Zp3vXr16tKsWTPZs2dP3r4bbrhBsrOz5eeff87bN2vWLPORvN6mdIJAT2QaNGiQuawfy9u3fv36SXJysqxdu7bAaw8dOlQqVKiQd/3w4cOyceNG87F+pUqV8vZ3795d2rRpU+CxWooQHh4uffr0KfBaF154oXns/PnzHf4+dfzaWeDqq68u8r7a22Tp67Zo0UKaN29e4HUvu+wyc3vh1y3O8ePHzevrpqUKWirQqVMnU05RVscVgHfgBDAALk9bN6nU1NQS3X///v2mBlNDUn5RUVESERFhbs+vbt26RZ6jcuXKBepONeBpeNMTlO6++26zTy/rGfP2EJeQkGDCrXZUOFNXhfj4+ALXGzRoUGTsqvDY7fvyh+GdO3eagBwZGVmi1yrJ96mtz6655ppiny//627dutUE0ZK8bnG0Zve3334zl7X2Vd8Hrc0ty+MKwDsQZgG4RZjVs9s3bdrk0ONK2nDfz8+v2P06u5qfzsC++uqrZhZSZ4l//fVXuemm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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "optimize = True # set to False to skip optimization\n", + "if optimize:\n", + " # run the optimization\n", + " prob.run_driver()\n", + " prob.cleanup()\n", + "\n", + " # collapse the test result data\n", + " test_data = {\n", + " \"AEP_val\": float(prob.get_val(\"AEP_farm\", units=\"GW*h\")[0]),\n", + " \"CapEx_val\": float(prob.get_val(\"tcc.tcc\", units=\"MUSD\")[0]),\n", + " \"BOS_val\": float(prob.get_val(\"orbit.total_capex\", units=\"MUSD\")[0]),\n", + " \"OpEx_val\": float(prob.get_val(\"opex.opex\", units=\"MUSD/yr\")[0]),\n", + " \"LCOE_val\": float(prob.get_val(\"financese.lcoe\", units=\"USD/MW/h\")[0]),\n", + " \"area_tight\": float(prob.get_val(\"landuse.area_tight\", units=\"km**2\")[0]),\n", + " \"coll_length\": float(\n", + " prob.get_val(\"collection.total_length_cables\", units=\"km\")[0]\n", + " ),\n", + " \"turbine_spacing\": float(\n", + " np.min(prob.get_val(\"spacing_constraint.turbine_spacing\", units=\"km\"))\n", + " ),\n", + " }\n", + "\n", + " # clean up the recorder\n", + " prob.cleanup()\n", + "\n", + " # print the results\n", + " print(\"\\n\\nRESULTS (opt):\\n\")\n", + " pp.pprint(test_data)\n", + " print(\"\\n\\n\")\n", + " # plot convergence\n", + " ## read cases\n", + " cr = om.CaseReader(\n", + " prob.get_outputs_dir()\n", + " / input_dict[\"analysis_options\"][\"recorder\"][\"filepath\"]\n", + " )\n", + "\n", + " # Extract the driver cases\n", + " cases = cr.get_cases(\"driver\")\n", + "\n", + " # Initialize lists to store iteration data\n", + " iterations = []\n", + " objective_values = []\n", + "\n", + " # Loop through the cases and extract iteration number and objective value\n", + " for i, case in enumerate(cases):\n", + " iterations.append(i)\n", + " objective_values.append(\n", + " case.get_objectives()[\n", + " input_dict[\"analysis_options\"][\"objective\"][\"name\"]\n", + " ]\n", + " )\n", + "\n", + " # Plot the convergence\n", + " plt.figure(figsize=(8, 6))\n", + " plt.plot(iterations, objective_values, marker=\"o\", label=\"Objective (LCOE)\")\n", + " plt.xlabel(\"Iteration\")\n", + " plt.ylabel(\"Objective Value (Total Cable Length (m))\")\n", + " plt.title(\"Convergence Plot\")\n", + " plt.legend()\n", + " plt.grid()\n", + " plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "55f0f73c", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_layout(\n", + " prob,\n", + " input_dict=input_dict,\n", + " show_image=True,\n", + " include_cable_routing=True,\n", + ")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "00f0a29b", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "ard-dev-env", + "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.12.11" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/02_offshore_fixed/optimization_demo.py b/examples/02_offshore_fixed/optimization_demo.py deleted file mode 100644 index 310eb081..00000000 --- a/examples/02_offshore_fixed/optimization_demo.py +++ /dev/null @@ -1,121 +0,0 @@ -import pprint as pp - -import numpy as np -import matplotlib.pyplot as plt - -import optiwindnet.plotting -from ard.utils.io import load_yaml -from ard.api import set_up_ard_model -from ard.viz.layout import plot_layout - -import openmdao.api as om - - -def run_example(): - - # load input - input_dict = load_yaml("./inputs/ard_system.yaml") - - # set up system - prob = set_up_ard_model(input_dict=input_dict, root_data_path="inputs") - - # run the model - prob.run_model() - - if False: - # visualize model - om.n2(prob) - - # collapse the test result data - test_data = { - "AEP_val": float(prob.get_val("AEP_farm", units="GW*h")[0]), - "CapEx_val": float(prob.get_val("tcc.tcc", units="MUSD")[0]), - "BOS_val": float(prob.get_val("orbit.total_capex", units="MUSD")[0]), - "OpEx_val": float(prob.get_val("opex.opex", units="MUSD/yr")[0]), - "LCOE_val": float(prob.get_val("financese.lcoe", units="USD/MW/h")[0]), - "area_tight": float(prob.get_val("landuse.area_tight", units="km**2")[0]), - "coll_length": float( - prob.get_val("collection.total_length_cables", units="km")[0] - ), - "turbine_spacing": float( - np.min(prob.get_val("spacing_constraint.turbine_spacing", units="km")) - ), - } - - print("\n\nRESULTS:\n") - pp.pprint(test_data) - print("\n\n") - - optimize = True # set to False to skip optimization - - if optimize: - - # run the optimization - prob.run_driver() - prob.cleanup() - - # collapse the test result data - test_data = { - "AEP_val": float(prob.get_val("AEP_farm", units="GW*h")[0]), - "CapEx_val": float(prob.get_val("tcc.tcc", units="MUSD")[0]), - "BOS_val": float(prob.get_val("orbit.total_capex", units="MUSD")[0]), - "OpEx_val": float(prob.get_val("opex.opex", units="MUSD/yr")[0]), - "LCOE_val": float(prob.get_val("financese.lcoe", units="USD/MW/h")[0]), - "area_tight": float(prob.get_val("landuse.area_tight", units="km**2")[0]), - "coll_length": float( - prob.get_val("collection.total_length_cables", units="km")[0] - ), - "turbine_spacing": float( - np.min(prob.get_val("spacing_constraint.turbine_spacing", units="km")) - ), - } - - # clean up the recorder - prob.cleanup() - - # print the results - print("\n\nRESULTS (opt):\n") - pp.pprint(test_data) - print("\n\n") - - # plot convergence - ## read cases - cr = om.CaseReader( - prob.get_outputs_dir() - / input_dict["analysis_options"]["recorder"]["filepath"] - ) - - # Extract the driver cases - cases = cr.get_cases("driver") - - # Initialize lists to store iteration data - iterations = [] - objective_values = [] - - # Loop through the cases and extract iteration number and objective value - for i, case in enumerate(cases): - iterations.append(i) - objective_values.append( - case.get_objectives()[ - input_dict["analysis_options"]["objective"]["name"] - ] - ) - - # Plot the convergence - plt.figure(figsize=(8, 6)) - plt.plot(iterations, objective_values, marker="o", label="Objective (LCOE)") - plt.xlabel("Iteration") - plt.ylabel("Objective Value (Total Cable Length (m))") - plt.title("Convergence Plot") - plt.legend() - plt.grid() - plt.show() - - plot_layout( - prob, input_dict=input_dict, show_image=True, include_cable_routing=True - ) - - -if __name__ == "__main__": - - run_example() diff --git a/examples/03_offshore_floating_custom_system/inputs/ard_system.yaml b/examples/03_offshore_floating_custom_system/inputs/ard_system.yaml index f80e1ac0..d37e0f1d 100644 --- a/examples/03_offshore_floating_custom_system/inputs/ard_system.yaml +++ b/examples/03_offshore_floating_custom_system/inputs/ard_system.yaml @@ -1,6 +1,7 @@ modeling_options: &modeling_options windIO_plant: !include windio.yaml layout: + type: gridfarm N_turbines: 25 N_substations: 1 spacing_primary: 7.0 @@ -14,14 +15,17 @@ modeling_options: &modeling_options site_depth: 50.0 collection: max_turbines_per_string: 8 - solver_name: "highs" + solver_name: highs solver_options: time_limit: 60 mip_gap: 0.02 model_options: - topology: "radial" # "radial", "branched" - feeder_route: "segmented" - feeder_limit: "unlimited" + topology: radial # radial, branched + feeder_route: segmented + feeder_limit: unlimited + offshore: true + floating: true + site_depth: 50.0 costs: num_blades: 3 tower_mass: 1574.04487111 # (tonne) @@ -65,42 +69,49 @@ modeling_options: &modeling_options mooring_line_length: 837. # (m) anchor_mass: 0. # (kg) floating_substructure_cost: 11803978.242949858 # (USD) - offshore: true - floating: true -system: "offshore_floating" +system: offshore_floating analysis_options: driver: name: ScipyOptimizeDriver options: - optimizer: "SLSQP" + optimizer: SLSQP + opt_settings: + maxiter: 10 + debug_print: + - "desvars" + - "objs" design_variables: spacing_primary: lower: 3.0 upper: 10.0 + scaler: 2.0 spacing_secondary: lower: 3.0 upper: 10.0 + scaler: 2.0 angle_orientation: lower: -180.0 upper: 180.0 + scaler: 0.2 angle_skew: lower: -45.0 upper: 45.0 - phi_platform: - lower: -30.0 - upper: 30.0 + scaler: 0.2 constraints: - mooring_constraint.mooring_spacing: - units: "m" - lower: 50.0 + AEP_farm: + units: GW*h + lower: 2200.0 + scaler: 2.0 spacing_constraint.turbine_spacing: - units: "m" + units: m lower: 852.0 + scaler: 0.0005 # 1/(7D) objective: name: collection.total_length_cables options: - scaler: 1.0 + units: km + scaler: 0.05 recorder: - filepath: "opt_results.sql" + filepath: opt_results.sql diff --git a/examples/03_offshore_floating_custom_system/inputs/windio.yaml b/examples/03_offshore_floating_custom_system/inputs/windio.yaml index 6f648fd8..1b4cc1f0 100644 --- a/examples/03_offshore_floating_custom_system/inputs/windio.yaml +++ b/examples/03_offshore_floating_custom_system/inputs/windio.yaml @@ -3,8 +3,8 @@ site: name: Ard Example 03 offshore wind site boundaries: polygons: - - x: [ 5.0, -5.0, -5.0, 5.0] - y: [ 5.0, 5.0, -5.0, -5.0] + - x: [ 5000.0, -5000.0, -5000.0, 5000.0] + y: [ 5000.0, 5000.0, -5000.0, -5000.0] energy_resource: name: Ard Example 03 offshore energy resource wind_resource: !include ../../data/windIO-plant_wind-resource_wrg-example.yaml diff --git a/examples/03_offshore_floating_custom_system/optimization_demo.ipynb b/examples/03_offshore_floating_custom_system/optimization_demo.ipynb new file mode 100644 index 00000000..f175620e --- /dev/null +++ b/examples/03_offshore_floating_custom_system/optimization_demo.ipynb @@ -0,0 +1,854 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "db01766d", + "metadata": {}, + "source": [ + "# 03: Simplified Floating\n", + "\n", + "In this example, we run `Ard` on a simplified floating platform problem.\n", + "\n", + "We follow Example 02 closely, so descriptions are more sparse." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "ccd441f4", + "metadata": {}, + "outputs": [], + "source": [ + "from pathlib import Path # optional, for nice path specifications\n", + "\n", + "import pprint as pp # optional, for nice printing\n", + "import numpy as np # numerics library\n", + "import matplotlib.pyplot as plt # plotting capabilities\n", + "\n", + "import windIO\n", + "\n", + "import ard # technically we only really need this\n", + "from ard.utils.io import load_yaml # we grab a yaml loader here\n", + "from ard.api import set_up_ard_model # the secret sauce\n", + "from ard.viz.layout import plot_layout # a plotting tool!\n", + "\n", + "import openmdao.api as om # for N2 diagrams from the OpenMDAO backend\n", + "\n", + "# import optiwindnet.plotting\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "efa685c2", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[34mfloris.floris_model.FlorisModel\u001b[0m \u001b[1;30mWARNING\u001b[0m \u001b[33mturbine_type has been changed without specifying a new reference_wind_height. reference_wind_height remains 90.00 m. Consider calling `FlorisModel.assign_hub_height_to_ref_height` to update the reference wind height to the turbine hub height.\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Adding top_level\n", + "Adding layout2aep\n", + "Adding layout to layout2aep\n", + "Adding aepFLORIS to layout2aep\n", + "\tActivating approximate totals on layout2aep\n", + "Adding landuse\n", + "Adding collection\n", + "Adding mooring_design\n", + "Adding mooring_constraint\n", + "Adding spacing_constraint\n", + "Adding tcc\n", + "Adding orbit\n", + "Adding opex\n", + "Adding financese\n" + ] + } + ], + "source": [ + "# load input\n", + "path_inputs = Path.cwd().absolute() / \"inputs\"\n", + "input_dict = load_yaml(path_inputs / \"ard_system.yaml\")\n", + "\n", + "# set up system\n", + "prob = set_up_ard_model(input_dict=input_dict, root_data_path=path_inputs)" + ] + }, + { + "cell_type": "markdown", + "id": "9ee689b1", + "metadata": {}, + "source": [ + "Some new components are added to the `Ard` model here, comparing to Example 02:\n", + "- `mooring_design`: designs the mooring system, here simply by doing straight-line mooring lines to the constant-valued seafloor\n", + "- `mooring_constraint`: a module to compute a constraint function to make sure the moorings don't violate regulatory requirements on proximity" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "6658af8a", + "metadata": {}, + "outputs": [], + "source": [ + "# visualize model\n", + "if False:\n", + " om.n2(prob)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "d846d084", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/openmdao/recorders/sqlite_recorder.py:231: UserWarning:The existing case recorder file, ard_prob_out/problem_out/opt_results.sql, is being overwritten.\n", + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ORBIT library intialized at '/Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/library'\n", + "\n", + "\n", + "RESULTS:\n", + "\n", + "{'AEP_val': 409.5574721457793,\n", + " 'BOS_val': 992.9941014540512,\n", + " 'CapEx_val': 118.75948972475001,\n", + " 'LCOE_val': 226.41881944569417,\n", + " 'OpEx_val': 9.350000000000001,\n", + " 'area_tight': 13.2496,\n", + " 'coll_length': 21.89865877023397,\n", + " 'mooring_spacing': 0.042875983926893214,\n", + " 'turbine_spacing': 0.91}\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "# run the model\n", + "prob.run_model()\n", + "\n", + "# collapse the test result data\n", + "test_data = {\n", + " \"AEP_val\": float(prob.get_val(\"AEP_farm\", units=\"GW*h\")[0]),\n", + " \"CapEx_val\": float(prob.get_val(\"tcc.tcc\", units=\"MUSD\")[0]),\n", + " \"BOS_val\": float(prob.get_val(\"orbit.total_capex\", units=\"MUSD\")[0]),\n", + " \"OpEx_val\": float(prob.get_val(\"opex.opex\", units=\"MUSD/yr\")[0]),\n", + " \"LCOE_val\": float(prob.get_val(\"financese.lcoe\", units=\"USD/MW/h\")[0]),\n", + " \"area_tight\": float(prob.get_val(\"landuse.area_tight\", units=\"km**2\")[0]),\n", + " \"coll_length\": float(\n", + " prob.get_val(\"collection.total_length_cables\", units=\"km\")[0]\n", + " ),\n", + " \"mooring_spacing\": float(\n", + " np.min(prob.get_val(\"mooring_constraint.mooring_spacing\", units=\"km\"))\n", + " ),\n", + " \"turbine_spacing\": float(\n", + " np.min(prob.get_val(\"spacing_constraint.turbine_spacing\", units=\"km\"))\n", + " ),\n", + "}\n", + "\n", + "print(\"\\n\\nRESULTS:\\n\")\n", + "pp.pprint(test_data)\n", + "print(\"\\n\\n\")" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "4f589061", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|0\n", + "--------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.]),\n", + " 'angle_skew': array([0.]),\n", + " 'spacing_primary': array([7.]),\n", + " 'spacing_secondary': array([7.])}\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "RuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:328\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_deflection/gauss.py:163\n", + "invalid value encountered in divideRuntimeWarning: /Users/cfrontin/miniforge3/envs/ard-dev-env/lib/python3.12/site-packages/floris/core/wake_velocity/gauss.py:80\n", + "invalid value encountered in divide" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Objectives\n", + "{'collection.total_length_cables': array([21898.65877023])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|1\n", + "--------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.]),\n", + " 'angle_skew': array([0.]),\n", + " 'spacing_primary': array([7.]),\n", + " 'spacing_secondary': array([7.])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([21898.65877023])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|2\n", + "--------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.00109214]),\n", + " 'angle_skew': array([-0.00134399]),\n", + " 'spacing_primary': array([6.98051224]),\n", + " 'spacing_secondary': array([6.98052015])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([21837.91155865])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|3\n", + "--------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([-0.00014881]),\n", + " 'angle_skew': array([-0.00631291]),\n", + " 'spacing_primary': array([6.73678083]),\n", + " 'spacing_secondary': array([6.83434807])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([21154.05797017])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|4\n", + "--------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.02340924]),\n", + " 'angle_skew': array([0.11915457]),\n", + " 'spacing_primary': array([6.55391781]),\n", + " 'spacing_secondary': array([6.71842342])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20636.16240077])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|5\n", + "--------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.02342247]),\n", + " 'angle_skew': array([0.11960816]),\n", + " 'spacing_primary': array([6.55384636]),\n", + " 'spacing_secondary': array([6.710889])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20630.13198583])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|6\n", + "--------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.04096478]),\n", + " 'angle_skew': array([0.12898625]),\n", + " 'spacing_primary': array([6.55387122]),\n", + " 'spacing_secondary': array([6.67301083])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20600.69059806])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|7\n", + "--------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.05964169]),\n", + " 'angle_skew': array([0.18509518]),\n", + " 'spacing_primary': array([6.55391654]),\n", + " 'spacing_secondary': array([6.55384863])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20508.02626244])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|8\n", + "--------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.05964192]),\n", + " 'angle_skew': array([0.18509538]),\n", + " 'spacing_primary': array([6.55384615]),\n", + " 'spacing_secondary': array([6.55381196])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.88131483])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|9\n", + "--------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.05965357]),\n", + " 'angle_skew': array([0.18507667]),\n", + " 'spacing_primary': array([6.55384616]),\n", + " 'spacing_secondary': array([6.55381198])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.88131694])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|10\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.05964768]),\n", + " 'angle_skew': array([0.18508614]),\n", + " 'spacing_primary': array([6.55384616]),\n", + " 'spacing_secondary': array([6.55381197])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.88131602])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|11\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.05964476]),\n", + " 'angle_skew': array([0.18509082]),\n", + " 'spacing_primary': array([6.55384616]),\n", + " 'spacing_secondary': array([6.55381196])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.8813163])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|12\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.05964329]),\n", + " 'angle_skew': array([0.18509318]),\n", + " 'spacing_primary': array([6.55384616]),\n", + " 'spacing_secondary': array([6.55381196])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.88131558])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|13\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.05964258]),\n", + " 'angle_skew': array([0.18509432]),\n", + " 'spacing_primary': array([6.55384615]),\n", + " 'spacing_secondary': array([6.55381196])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.88131524])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|14\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.05964224]),\n", + " 'angle_skew': array([0.18509487]),\n", + " 'spacing_primary': array([6.55384615]),\n", + " 'spacing_secondary': array([6.55381196])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.88131502])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|15\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.05964207]),\n", + " 'angle_skew': array([0.18509514]),\n", + " 'spacing_primary': array([6.55384615]),\n", + " 'spacing_secondary': array([6.55381196])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.88131489])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|16\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.059642]),\n", + " 'angle_skew': array([0.18509526]),\n", + " 'spacing_primary': array([6.55384615]),\n", + " 'spacing_secondary': array([6.55381196])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.88131491])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|17\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.05964196]),\n", + " 'angle_skew': array([0.18509533]),\n", + " 'spacing_primary': array([6.55384615]),\n", + " 'spacing_secondary': array([6.55381196])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.88131481])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|18\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.05964194]),\n", + " 'angle_skew': array([0.18509535]),\n", + " 'spacing_primary': array([6.55384615]),\n", + " 'spacing_secondary': array([6.55381196])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.88131484])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|19\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.05964193]),\n", + " 'angle_skew': array([0.18509537]),\n", + " 'spacing_primary': array([6.55384615]),\n", + " 'spacing_secondary': array([6.55381196])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.88131483])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|20\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.05964233]),\n", + " 'angle_skew': array([0.18509432]),\n", + " 'spacing_primary': array([6.55384615]),\n", + " 'spacing_secondary': array([6.55381196])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.88131636])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|21\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.05964213]),\n", + " 'angle_skew': array([0.18509485]),\n", + " 'spacing_primary': array([6.55384615]),\n", + " 'spacing_secondary': array([6.55381196])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.88131552])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|22\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.05964203]),\n", + " 'angle_skew': array([0.18509511]),\n", + " 'spacing_primary': array([6.55384615]),\n", + " 'spacing_secondary': array([6.55381196])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.88131521])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|23\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.05964198]),\n", + " 'angle_skew': array([0.18509524]),\n", + " 'spacing_primary': array([6.55384615]),\n", + " 'spacing_secondary': array([6.55381196])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.88131502])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|24\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.05964195]),\n", + " 'angle_skew': array([0.18509531]),\n", + " 'spacing_primary': array([6.55384615]),\n", + " 'spacing_secondary': array([6.55381196])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.88131492])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|25\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.05964194]),\n", + " 'angle_skew': array([0.18509534]),\n", + " 'spacing_primary': array([6.55384615]),\n", + " 'spacing_secondary': array([6.55381196])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.88131488])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|26\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.05964194]),\n", + " 'angle_skew': array([0.18509535]),\n", + " 'spacing_primary': array([6.55384615]),\n", + " 'spacing_secondary': array([6.55381196])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.88131485])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|27\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.05964193]),\n", + " 'angle_skew': array([0.18509536]),\n", + " 'spacing_primary': array([6.55384615]),\n", + " 'spacing_secondary': array([6.55381196])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.88131484])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|28\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.05964193]),\n", + " 'angle_skew': array([0.18509536]),\n", + " 'spacing_primary': array([6.55384615]),\n", + " 'spacing_secondary': array([6.55381196])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.88131484])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|29\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.05964193]),\n", + " 'angle_skew': array([0.18509537]),\n", + " 'spacing_primary': array([6.55384615]),\n", + " 'spacing_secondary': array([6.55381196])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.88131475])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|30\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.05964227]),\n", + " 'angle_skew': array([0.18509466]),\n", + " 'spacing_primary': array([6.55384615]),\n", + " 'spacing_secondary': array([6.55381196])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.88131543])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|31\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.0596421]),\n", + " 'angle_skew': array([0.18509502]),\n", + " 'spacing_primary': array([6.55384615]),\n", + " 'spacing_secondary': array([6.55381196])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.88131502])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|32\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.05964201]),\n", + " 'angle_skew': array([0.1850952]),\n", + " 'spacing_primary': array([6.55384615]),\n", + " 'spacing_secondary': array([6.55381196])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.88131486])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|33\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.05964197]),\n", + " 'angle_skew': array([0.18509528]),\n", + " 'spacing_primary': array([6.55384615]),\n", + " 'spacing_secondary': array([6.55381196])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.88131486])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|34\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.05964195]),\n", + " 'angle_skew': array([0.18509532]),\n", + " 'spacing_primary': array([6.55384615]),\n", + " 'spacing_secondary': array([6.55381196])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.88131487])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|35\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.05964194]),\n", + " 'angle_skew': array([0.18509535]),\n", + " 'spacing_primary': array([6.55384615]),\n", + " 'spacing_secondary': array([6.55381196])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.88131485])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|36\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.05964194]),\n", + " 'angle_skew': array([0.18509536]),\n", + " 'spacing_primary': array([6.55384615]),\n", + " 'spacing_secondary': array([6.55381196])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.88131484])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|37\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.05964193]),\n", + " 'angle_skew': array([0.18509536]),\n", + " 'spacing_primary': array([6.55384615]),\n", + " 'spacing_secondary': array([6.55381196])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.88131484])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|38\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.05964193]),\n", + " 'angle_skew': array([0.18509536]),\n", + " 'spacing_primary': array([6.55384615]),\n", + " 'spacing_secondary': array([6.55381196])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.88131483])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|39\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.05964193]),\n", + " 'angle_skew': array([0.18509537]),\n", + " 'spacing_primary': array([6.55384615]),\n", + " 'spacing_secondary': array([6.55381196])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.88131483])}\n", + "\n", + "Driver debug print for iter coord: rank0:ScipyOptimize_SLSQP|40\n", + "---------------------------------------------------------------\n", + "Design Vars\n", + "{'angle_orientation': array([0.05964193]),\n", + " 'angle_skew': array([0.18509537]),\n", + " 'spacing_primary': array([6.55384615]),\n", + " 'spacing_secondary': array([6.55381196])}\n", + "\n", + "Objectives\n", + "{'collection.total_length_cables': array([20507.88131475])}\n", + "\n", + "Iteration limit reached (Exit mode 9)\n", + " Current function value: 1.0253940657374143\n", + " Iterations: 10\n", + " Function evaluations: 40\n", + " Gradient evaluations: 11\n", + "Optimization FAILED.\n", + "Iteration limit reached\n", + "-----------------------------------\n", + "-----------------\n", + "Total Derivatives\n", + "-----------------\n", + "\n", + "+------------------------------------+-------------------+---------------------+-------------------+------------------------+-------------------+\n", + "| 'of' variable | 'wrt' variable | calc val @ max viol | fd val @ max viol | (calc-fd) - (a + r*fd) | error desc |\n", + "+====================================+===================+=====================+===================+========================+===================+\n", + "| AEP_farm | angle_orientation | 8.268781e+18 | -4.521486e+10 | 8.268781e+18 | 8.268781e+18>TOL |\n", + "+------------------------------------+-------------------+---------------------+-------------------+------------------------+-------------------+\n", + "| AEP_farm | angle_skew | -8.233889e+18 | -1.647045e+13 | 8.233873e+18 | 8.233873e+18>TOL |\n", + "+------------------------------------+-------------------+---------------------+-------------------+------------------------+-------------------+\n", + "| AEP_farm | spacing_primary | 1.151021e+10 | -7.717190e+09 | 1.922739e+10 | 1.922739e+10>TOL |\n", + "+------------------------------------+-------------------+---------------------+-------------------+------------------------+-------------------+\n", + "| AEP_farm | spacing_secondary | -1.057630e+09 | -3.253904e+10 | 3.148138e+10 | 3.148138e+10>TOL |\n", + "+------------------------------------+-------------------+---------------------+-------------------+------------------------+-------------------+\n", + "| collection.total_length_cables | angle_orientation | -1.580118e+00 | -1.636772e+00 | 5.665216e-02 | 5.665216e-02>TOL |\n", + "+------------------------------------+-------------------+---------------------+-------------------+------------------------+-------------------+\n", + "| collection.total_length_cables | angle_skew | 8.732002e-01 | 1.098618e+00 | 2.254163e-01 | 2.254163e-01>TOL |\n", + "+------------------------------------+-------------------+---------------------+-------------------+------------------------+-------------------+\n", + "| collection.total_length_cables | spacing_primary | 1.168868e+03 | 9.087827e+02 | 2.600840e+02 | 2.600840e+02>TOL |\n", + "+------------------------------------+-------------------+---------------------+-------------------+------------------------+-------------------+\n", + "| collection.total_length_cables | spacing_secondary | 1.948150e+03 | 7.785256e+02 | 1.169623e+03 | 1.169623e+03>TOL |\n", + "+------------------------------------+-------------------+---------------------+-------------------+------------------------+-------------------+\n", + "| spacing_constraint.turbine_spacing | angle_orientation | -1.821301e-04 | 0.000000e+00 | 1.821301e-04 | 1.821301e-04>TOL |\n", + "+------------------------------------+-------------------+---------------------+-------------------+------------------------+-------------------+\n", + "| spacing_constraint.turbine_spacing | angle_skew | -1.874999e-04 | -4.656613e-10 | 1.874994e-04 | 1.874994e-04>TOL |\n", + "+------------------------------------+-------------------+---------------------+-------------------+------------------------+-------------------+\n", + "| spacing_constraint.turbine_spacing | spacing_primary | -2.176563e-14 | 4.656613e-10 | 4.656826e-10 | 4.656826e-10>TOL |\n", + "+------------------------------------+-------------------+---------------------+-------------------+------------------------+-------------------+\n", + "| spacing_constraint.turbine_spacing | spacing_secondary | 8.412818e-15 | -4.656613e-10 | 4.656692e-10 | 4.656692e-10>TOL |\n", + "+------------------------------------+-------------------+---------------------+-------------------+------------------------+-------------------+\n", + "\n", + "\n", + "RESULTS (opt):\n", + "\n", + "{'AEP_val': 405.4125610918656,\n", + " 'BOS_val': 992.4472464825666,\n", + " 'CapEx_val': 118.75948972475001,\n", + " 'LCOE_val': 228.63254400878142,\n", + " 'OpEx_val': 9.350000000000001,\n", + " 'angle_orientation': 0.05964193123125717,\n", + " 'angle_skew': 0.18509536617932243,\n", + " 'area_tight': 11.614403395006365,\n", + " 'coll_length': 20.507881314748285,\n", + " 'mooring_spacing': -0.0010986122876681097,\n", + " 'spacing_primary': 6.5538461542542645,\n", + " 'spacing_secondary': 6.553811955062258,\n", + " 'turbine_spacing': 0.8520000000105875}\n", + "\n", + "\n", + "\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAArwAAAIjCAYAAADhisjVAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAaVNJREFUeJzt3Qd8U2X3wPHTPaAtm7JElmwZ4sAFyBIQUXxVfFUQFEVxgCK+6CvDAcr7V0QRUFERxQGKuAVkg6BMBREZgiCyV0tLB23+n/NgYtMm0ELSJPf+vp/PtclNbu7Tpymenpx7njCHw+EQAAAAwKLCAz0AAAAAwJ8IeAEAAGBpBLwAAACwNAJeAAAAWBoBLwAAACyNgBcAAACWRsALAAAASyPgBQAAgKUR8AIAAMDSCHgBACFr+PDhEhYWFuhhAAhyBLwALGfr1q1yzz33SM2aNSU2NlYSExPlsssuk7Fjx8rx48cDPTwUwh133GECWeemP8MmTZrICy+8IJmZmT45x/jx42Xy5Mk+eS0AwS0y0AMAAF/66quv5MYbb5SYmBjp2bOnNGrUSLKysmTJkiXy6KOPyi+//CKvv/56oIeJQtCf4aRJk8ztI0eOyCeffCKDBg2SFStWyIcffuiTgLdcuXImuAZgbQS8ACxj27Zt0qNHD6levbrMmzdPKlWq5Hqsf//+smXLFhMQh7KMjAyJjo6W8HDrf0AXGRkpt912m+v+fffdJxdffLF89NFH8uKLL0rlypUDOj4AocP6/2ICsI3Ro0fLsWPH5M0333QLdp1q164tDz30kOv+iRMn5Omnn5ZatWqZbOK5554rjz/+eIGPzHX/NddcY7LEF110kSmT0HKJKVOmuJ6zcuVK89H7O++8U+C8s2bNMo99+eWXrn27du2SPn36SMWKFc25GzZsKG+99ZbbcQsWLDDHaTbzv//9r1SpUkXi4+MlJSXFPD59+nRp0KCBGY9msj/99FOTrdTx5pWbmysvvfSSOYc+V8+pJR+HDx8u8vfppBnXgQMHmmN0/FWrVjUZ9QMHDrieo/M4bNgwM+/6nGrVqsngwYPPuCRBg/zWrVub29u3b/f6vML8XHWfZvsXLlzoKptwvjYAC3IAgEVUqVLFUbNmzUI/v1evXg79Z/Bf//qX49VXX3X07NnT3L/uuuvcnle9enVH3bp1HRUrVnQ8/vjjjnHjxjmaN2/uCAsLc6xfv971PD13586dC5ynd+/ejtKlSzuysrLM/T179jiqVq3qqFatmuOpp55yTJgwwXHttdeac48ZM8Z13Pz5882+Bg0aOJo2bep48cUXHaNGjXKkpaU5vvzyS3P+888/3+x/8sknzTkaNWpkxpvXXXfd5YiMjHT07dvXMXHiRMdjjz3mKFGihOPCCy90jako32dqaqo5T0REhHlNHf/TTz9tXm/NmjXmOTk5OY4OHTo44uPjHQMGDHC89tprjvvvv9+Mo1u3boX62egY87v++uvNnGzcuNHcHzZsmLlf1J/rp59+an4G9erVc7z77rtmmz179mnHBSA0EfACsISjR4+aoKYwwZRau3ateb4Gg3kNGjTI7J83b55bIKj7Fi1a5Nq3b98+R0xMjOORRx5x7RsyZIgjKirKcejQIde+zMxMR6lSpRx9+vRx7bvzzjsdlSpVchw4cMDt3D169HAkJSU50tPT3QJeDaSd+5waN25sAjYNPp0WLFhgnp834F28eLHZN3XqVLfjv/322wL7C/t9Dh061DxvxowZBeY1NzfXfNUAMjw83Jw/Lw249dilS5c6ChPw7t+/32xbtmxxjBw50hXkO+UPeIvyc23YsKGjVatWpxwHAGugpAGAJTg/5k9ISCjU87/++mvz9eGHH3bb/8gjj5iv+Wt9tXTgiiuucN0vX7681K1bV37//XfXvptvvlmys7NlxowZrn2zZ882H//rY0oTDXrxVdeuXc1tLQFwbh07dpSjR4/K6tWr3c7dq1cviYuLc93/66+/ZN26daaEoGTJkq79rVq1ksaNG7sdq2UPSUlJ0r59e7dzXXDBBebY+fPnF/n71PFrx4Trr7++wLw6W4TpeevXry/16tVzO+9VV11lHs9/Xk/S0tLM+XXTsggtS2jZsqUp3fDVzxWAPXDRGgBL0LZVKjU1tVDP/+OPP0xNqAZSeSUnJ0upUqXM43mdc845BV6jdOnSbnWwGgRqgKcXVd15551mn97WTgDOQG///v0mANZOEd66Rezbt8/tfo0aNQqMXeUfu3Nf3oB58+bNJoiuUKFCoc5VmO9T277dcMMNHl8v73l//fVXE6wW5ryeaA3xF198YW5rLa7Og9YK+/LnCsAeCHgBWCbg1av2169fX6TjCrtoQUREhMf9mqXNSzO5zz77rMlmarb5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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "optimize = True # set to False to skip optimization\n", + "if optimize:\n", + " # run the optimization\n", + " prob.run_driver()\n", + " prob.cleanup()\n", + "\n", + " prob.check_totals(compact_print=True, show_only_incorrect=True)\n", + "\n", + " # collapse the test result data\n", + " test_data = {\n", + " \"spacing_primary\": float(prob.get_val(\"spacing_primary\")[0]),\n", + " \"spacing_secondary\": float(prob.get_val(\"spacing_secondary\")[0]),\n", + " \"angle_orientation\": float(prob.get_val(\"angle_orientation\")[0]),\n", + " \"angle_skew\": float(prob.get_val(\"angle_skew\")[0]),\n", + " \"AEP_val\": float(prob.get_val(\"AEP_farm\", units=\"GW*h\")[0]),\n", + " \"CapEx_val\": float(prob.get_val(\"tcc.tcc\", units=\"MUSD\")[0]),\n", + " \"BOS_val\": float(prob.get_val(\"orbit.total_capex\", units=\"MUSD\")[0]),\n", + " \"OpEx_val\": float(prob.get_val(\"opex.opex\", units=\"MUSD/yr\")[0]),\n", + " \"LCOE_val\": float(prob.get_val(\"financese.lcoe\", units=\"USD/MW/h\")[0]),\n", + " \"area_tight\": float(prob.get_val(\"landuse.area_tight\", units=\"km**2\")[0]),\n", + " \"coll_length\": float(\n", + " prob.get_val(\"collection.total_length_cables\", units=\"km\")[0]\n", + " ),\n", + " \"mooring_spacing\": float(\n", + " np.min(prob.get_val(\"mooring_constraint.mooring_spacing\", units=\"km\"))\n", + " ),\n", + " \"turbine_spacing\": float(\n", + " np.min(prob.get_val(\"spacing_constraint.turbine_spacing\", units=\"km\"))\n", + " ),\n", + " }\n", + "\n", + " # clean up the recorder\n", + " prob.cleanup()\n", + "\n", + " # print the results\n", + " print(\"\\n\\nRESULTS (opt):\\n\")\n", + " pp.pprint(test_data)\n", + " print(\"\\n\\n\")\n", + "\n", + " # plot convergence\n", + " ## read cases\n", + " cr = om.CaseReader(\n", + " prob.get_outputs_dir()\n", + " / input_dict[\"analysis_options\"][\"recorder\"][\"filepath\"]\n", + " )\n", + "\n", + " # Extract the driver cases\n", + " cases = cr.get_cases(\"driver\")\n", + "\n", + " # Initialize lists to store iteration data\n", + " iterations = []\n", + " objective_values = []\n", + "\n", + " # Loop through the cases and extract iteration number and objective value\n", + " for i, case in enumerate(cases):\n", + " iterations.append(i)\n", + " objective_values.append(\n", + " case.get_objectives()[\n", + " input_dict[\"analysis_options\"][\"objective\"][\"name\"]\n", + " ]\n", + " )\n", + "\n", + " # Plot the convergence\n", + " plt.figure(figsize=(8, 6))\n", + " plt.plot(iterations, objective_values, marker=\"o\", label=\"Objective (LCOE)\")\n", + " plt.xlabel(\"Iteration\")\n", + " plt.ylabel(\"Objective Value (Total Cable Length (m))\")\n", + " plt.title(\"Convergence Plot\")\n", + " plt.legend()\n", + " plt.grid()\n", + " plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "88a94ea9", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "plot_layout(\n", + " prob, input_dict=input_dict, show_image=True, include_cable_routing=True\n", + ")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "ard-dev-env", + "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.12.11" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/03_offshore_floating_custom_system/optimization_demo.py b/examples/03_offshore_floating_custom_system/optimization_demo.py deleted file mode 100644 index 5bfb1a52..00000000 --- a/examples/03_offshore_floating_custom_system/optimization_demo.py +++ /dev/null @@ -1,141 +0,0 @@ -import pprint as pp - -import numpy as np -import matplotlib.pyplot as plt - -import openmdao.api as om - -import optiwindnet.plotting -import windIO -from ard.utils.io import load_yaml -from ard.api import set_up_ard_model -from ard.viz.layout import plot_layout - - -def run_example(): - - # load input - input_dict = load_yaml("./inputs/ard_system.yaml") - - # windIO dict - windIO_dict = input_dict["modeling_options"]["windIO_plant"] - windIO.validate(windIO_dict, schema_type="plant/wind_energy_system") - - # set up system - prob = set_up_ard_model( - input_dict=input_dict, - root_data_path="inputs", - ) - - # run the model - prob.run_model() - - # visualize model - if False: - om.n2(prob) - - # collapse the test result data - test_data = { - "AEP_val": float(prob.get_val("AEP_farm", units="GW*h")[0]), - "CapEx_val": float(prob.get_val("tcc.tcc", units="MUSD")[0]), - "BOS_val": float(prob.get_val("orbit.total_capex", units="MUSD")[0]), - "OpEx_val": float(prob.get_val("opex.opex", units="MUSD/yr")[0]), - "LCOE_val": float(prob.get_val("financese.lcoe", units="USD/MW/h")[0]), - "area_tight": float(prob.get_val("landuse.area_tight", units="km**2")[0]), - "coll_length": float( - prob.get_val("collection.total_length_cables", units="km")[0] - ), - "mooring_spacing": float( - np.min(prob.get_val("mooring_constraint.mooring_spacing", units="km")) - ), - "turbine_spacing": float( - np.min(prob.get_val("spacing_constraint.turbine_spacing", units="km")) - ), - } - - print("\n\nRESULTS:\n") - pp.pprint(test_data) - print("\n\n") - - optimize = True # set to False to skip optimization - - if optimize: - - # run the optimization - prob.run_driver() - prob.cleanup() - - prob.check_totals(compact_print=True, show_only_incorrect=True) - - # collapse the test result data - test_data = { - "spacing_primary": float(prob.get_val("spacing_primary")[0]), - "spacing_secondary": float(prob.get_val("spacing_secondary")[0]), - "angle_orientation": float(prob.get_val("angle_orientation")[0]), - "angle_skew": float(prob.get_val("angle_skew")[0]), - "AEP_val": float(prob.get_val("AEP_farm", units="GW*h")[0]), - "CapEx_val": float(prob.get_val("tcc.tcc", units="MUSD")[0]), - "BOS_val": float(prob.get_val("orbit.total_capex", units="MUSD")[0]), - "OpEx_val": float(prob.get_val("opex.opex", units="MUSD/yr")[0]), - "LCOE_val": float(prob.get_val("financese.lcoe", units="USD/MW/h")[0]), - "area_tight": float(prob.get_val("landuse.area_tight", units="km**2")[0]), - "coll_length": float( - prob.get_val("collection.total_length_cables", units="km")[0] - ), - "mooring_spacing": float( - np.min(prob.get_val("mooring_constraint.mooring_spacing", units="km")) - ), - "turbine_spacing": float( - np.min(prob.get_val("spacing_constraint.turbine_spacing", units="km")) - ), - } - - # clean up the recorder - prob.cleanup() - - # print the results - print("\n\nRESULTS (opt):\n") - pp.pprint(test_data) - print("\n\n") - - # plot convergence - ## read cases - cr = om.CaseReader( - prob.get_outputs_dir() - / input_dict["analysis_options"]["recorder"]["filepath"] - ) - - # Extract the driver cases - cases = cr.get_cases("driver") - - # Initialize lists to store iteration data - iterations = [] - objective_values = [] - - # Loop through the cases and extract iteration number and objective value - for i, case in enumerate(cases): - iterations.append(i) - objective_values.append( - case.get_objectives()[ - input_dict["analysis_options"]["objective"]["name"] - ] - ) - - # Plot the convergence - plt.figure(figsize=(8, 6)) - plt.plot(iterations, objective_values, marker="o", label="Objective (LCOE)") - plt.xlabel("Iteration") - plt.ylabel("Objective Value (Total Cable Length (m))") - plt.title("Convergence Plot") - plt.legend() - plt.grid() - plt.show() - - plot_layout( - prob, input_dict=input_dict, show_image=True, include_cable_routing=True - ) - - -if __name__ == "__main__": - - run_example() diff --git a/pyproject.toml b/pyproject.toml index a18e052f..8c455aef 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -55,6 +55,7 @@ dependencies = [ [project.optional-dependencies] dev = [ "black[jupyter]", + "jupyter", "pytest", "pytest-cov", "pytest-subtests", diff --git a/test/unit/ard/utils/utils/test_geometry.py b/test/unit/ard/utils/test_geometry.py similarity index 100% rename from test/unit/ard/utils/utils/test_geometry.py rename to test/unit/ard/utils/test_geometry.py diff --git a/test/unit/ard/utils/utils/test_io.py b/test/unit/ard/utils/test_io.py similarity index 100% rename from test/unit/ard/utils/utils/test_io.py rename to test/unit/ard/utils/test_io.py diff --git a/test/unit/ard/utils/utils/test_matematics.py b/test/unit/ard/utils/test_matematics.py similarity index 100% rename from test/unit/ard/utils/utils/test_matematics.py rename to test/unit/ard/utils/test_matematics.py diff --git a/test/unit/ard/utils/utils/test_utils.py b/test/unit/ard/utils/test_utils.py similarity index 100% rename from test/unit/ard/utils/utils/test_utils.py rename to test/unit/ard/utils/test_utils.py