NREL-reV 0.8.7__py3-none-any.whl → 0.9.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {NREL_reV-0.8.7.dist-info → NREL_reV-0.9.0.dist-info}/METADATA +13 -10
- {NREL_reV-0.8.7.dist-info → NREL_reV-0.9.0.dist-info}/RECORD +43 -43
- {NREL_reV-0.8.7.dist-info → NREL_reV-0.9.0.dist-info}/WHEEL +1 -1
- reV/SAM/SAM.py +217 -133
- reV/SAM/econ.py +18 -14
- reV/SAM/generation.py +611 -422
- reV/SAM/windbos.py +93 -79
- reV/bespoke/bespoke.py +681 -377
- reV/bespoke/cli_bespoke.py +2 -0
- reV/bespoke/place_turbines.py +187 -43
- reV/config/output_request.py +2 -1
- reV/config/project_points.py +218 -140
- reV/econ/econ.py +166 -114
- reV/econ/economies_of_scale.py +91 -45
- reV/generation/base.py +331 -184
- reV/generation/generation.py +326 -200
- reV/generation/output_attributes/lcoe_fcr_inputs.json +38 -3
- reV/handlers/__init__.py +0 -1
- reV/handlers/exclusions.py +16 -15
- reV/handlers/multi_year.py +57 -26
- reV/handlers/outputs.py +6 -5
- reV/handlers/transmission.py +44 -27
- reV/hybrids/hybrid_methods.py +30 -30
- reV/hybrids/hybrids.py +305 -189
- reV/nrwal/nrwal.py +262 -168
- reV/qa_qc/cli_qa_qc.py +14 -10
- reV/qa_qc/qa_qc.py +217 -119
- reV/qa_qc/summary.py +228 -146
- reV/rep_profiles/rep_profiles.py +349 -230
- reV/supply_curve/aggregation.py +349 -188
- reV/supply_curve/competitive_wind_farms.py +90 -48
- reV/supply_curve/exclusions.py +138 -85
- reV/supply_curve/extent.py +75 -50
- reV/supply_curve/points.py +735 -390
- reV/supply_curve/sc_aggregation.py +357 -248
- reV/supply_curve/supply_curve.py +604 -347
- reV/supply_curve/tech_mapping.py +144 -82
- reV/utilities/__init__.py +274 -16
- reV/utilities/pytest_utils.py +8 -4
- reV/version.py +1 -1
- {NREL_reV-0.8.7.dist-info → NREL_reV-0.9.0.dist-info}/LICENSE +0 -0
- {NREL_reV-0.8.7.dist-info → NREL_reV-0.9.0.dist-info}/entry_points.txt +0 -0
- {NREL_reV-0.8.7.dist-info → NREL_reV-0.9.0.dist-info}/top_level.txt +0 -0
reV/SAM/econ.py
CHANGED
@@ -4,24 +4,27 @@
|
|
4
4
|
Wraps the NREL-PySAM lcoefcr and singleowner modules with
|
5
5
|
additional reV features.
|
6
6
|
"""
|
7
|
-
from copy import deepcopy
|
8
7
|
import logging
|
9
|
-
|
8
|
+
from copy import deepcopy
|
10
9
|
from warnings import warn
|
10
|
+
|
11
|
+
import numpy as np
|
11
12
|
import PySAM.Lcoefcr as PySamLCOE
|
12
13
|
import PySAM.Singleowner as PySamSingleOwner
|
13
14
|
|
14
|
-
from reV.SAM.defaults import DefaultSingleOwner, DefaultLCOE
|
15
15
|
from reV.handlers.outputs import Outputs
|
16
|
-
from reV.SAM.
|
16
|
+
from reV.SAM.defaults import DefaultLCOE, DefaultSingleOwner
|
17
17
|
from reV.SAM.SAM import RevPySam
|
18
|
+
from reV.SAM.windbos import WindBos
|
18
19
|
from reV.utilities.exceptions import SAMExecutionError
|
20
|
+
from reV.utilities import ResourceMetaField
|
19
21
|
|
20
22
|
logger = logging.getLogger(__name__)
|
21
23
|
|
22
24
|
|
23
25
|
class Economic(RevPySam):
|
24
26
|
"""Base class for SAM economic models."""
|
27
|
+
|
25
28
|
MODULE = None
|
26
29
|
|
27
30
|
def __init__(self, sam_sys_inputs, site_sys_inputs=None,
|
@@ -172,7 +175,7 @@ class Economic(RevPySam):
|
|
172
175
|
with Outputs(cf_file) as cfh:
|
173
176
|
|
174
177
|
# get the index location of the site in question
|
175
|
-
site_gids = list(cfh.get_meta_arr(
|
178
|
+
site_gids = list(cfh.get_meta_arr(ResourceMetaField.GID))
|
176
179
|
isites = [site_gids.index(s) for s in sites]
|
177
180
|
|
178
181
|
# look for the cf_profile dataset
|
@@ -335,6 +338,7 @@ class Economic(RevPySam):
|
|
335
338
|
class LCOE(Economic):
|
336
339
|
"""SAM LCOE model.
|
337
340
|
"""
|
341
|
+
|
338
342
|
MODULE = 'lcoefcr'
|
339
343
|
PYSAM = PySamLCOE
|
340
344
|
|
@@ -375,7 +379,7 @@ class LCOE(Economic):
|
|
375
379
|
|
376
380
|
# get the cf_file meta data gid's to use as indexing tools
|
377
381
|
with Outputs(cf_file) as cfh:
|
378
|
-
site_gids = list(cfh.meta[
|
382
|
+
site_gids = list(cfh.meta[ResourceMetaField.GID])
|
379
383
|
|
380
384
|
calc_aey = False
|
381
385
|
if 'annual_energy' not in site_df:
|
@@ -463,6 +467,7 @@ class LCOE(Economic):
|
|
463
467
|
class SingleOwner(Economic):
|
464
468
|
"""SAM single owner economic model.
|
465
469
|
"""
|
470
|
+
|
466
471
|
MODULE = 'singleowner'
|
467
472
|
PYSAM = PySamSingleOwner
|
468
473
|
|
@@ -497,14 +502,13 @@ class SingleOwner(Economic):
|
|
497
502
|
"""
|
498
503
|
|
499
504
|
outputs = {}
|
500
|
-
if inputs is not None
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
outputs = wb.output
|
505
|
+
if (inputs is not None
|
506
|
+
and 'total_installed_cost' in inputs
|
507
|
+
and isinstance(inputs['total_installed_cost'], str)
|
508
|
+
and inputs['total_installed_cost'].lower() == 'windbos'):
|
509
|
+
wb = WindBos(inputs)
|
510
|
+
inputs['total_installed_cost'] = wb.total_installed_cost
|
511
|
+
outputs = wb.output
|
508
512
|
return inputs, outputs
|
509
513
|
|
510
514
|
@staticmethod
|