For a complete list of metrics and their documentation, please see the API Metrics documentation.
This demonstration will rely on the results produced in the "How To" notebook.
from pprint import pprint
import pandas as pd
from wombat.core import Simulation
from wombat.core.library import load_yaml
pd.set_option("display.float_format", '{:,.2f}'.format)
pd.set_option("display.max_rows", 1000)
pd.set_option("display.max_columns", 1000)
The simulations from the How To notebook are going to be rerun as it is not recommended to create a Metrics class from scratch due to the large number of inputs that are required and the initialization is provided in the simulation API's run method.
simulation_name = "dinwoodie_base"
sim = Simulation(simulation_name, "DINWOODIE", "base.yaml")
sim.run()
# For convenience only
metrics = sim.metrics
There are two methods to produce availability, which have their own function calls:
production_based_availability
time_based_availability
Here, we will go through the various input definitions to get time-based availability data as both methods use the same inputs, and provide outputs in the same format.
frequency
options:
by
options:
# Project total at the whole windfarm level
total = metrics.time_based_availability(frequency="project", by="windfarm")
print(f"Project total: {total * 100:.1f}%")
Project total: 89.7%
# Project total at the turbine level
metrics.time_based_availability(frequency="project", by="turbine")
S00T1 | S00T2 | S00T3 | S00T4 | S00T5 | S00T6 | S00T7 | S00T8 | S00T9 | S00T10 | S00T11 | S00T12 | S00T13 | S00T14 | S00T15 | S00T16 | S00T17 | S00T18 | S00T19 | S00T20 | S00T21 | S00T22 | S00T23 | S00T24 | S00T25 | S00T26 | S00T27 | S00T28 | S00T29 | S00T30 | S00T31 | S00T32 | S00T33 | S00T34 | S00T35 | S00T36 | S00T37 | S00T38 | S00T39 | S00T40 | S00T41 | S00T42 | S00T43 | S00T44 | S00T45 | S00T46 | S00T47 | S00T48 | S00T49 | S00T50 | S00T51 | S00T52 | S00T53 | S00T54 | S00T55 | S00T56 | S00T57 | S00T58 | S00T59 | S00T60 | S00T61 | S00T62 | S00T63 | S00T64 | S00T65 | S00T66 | S00T67 | S00T68 | S00T69 | S00T70 | S00T71 | S00T72 | S00T73 | S00T74 | S00T75 | S00T76 | S00T77 | S00T78 | S00T79 | S00T80 | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0.87 | 0.97 | 0.86 | 0.92 | 0.97 | 0.90 | 0.80 | 0.68 | 0.97 | 0.79 | 0.87 | 0.83 | 0.97 | 0.85 | 0.97 | 0.78 | 0.85 | 0.96 | 0.97 | 0.98 | 0.97 | 0.92 | 0.97 | 0.86 | 0.89 | 0.87 | 0.68 | 0.98 | 0.97 | 0.97 | 0.73 | 0.97 | 0.97 | 0.87 | 0.81 | 0.94 | 0.85 | 0.75 | 0.97 | 0.97 | 0.75 | 0.97 | 0.82 | 0.84 | 0.97 | 0.83 | 0.80 | 0.89 | 0.97 | 0.84 | 0.96 | 0.91 | 0.97 | 0.97 | 0.92 | 0.97 | 0.89 | 0.92 | 0.82 | 0.97 | 0.96 | 0.97 | 0.89 | 0.97 | 0.44 | 0.92 | 0.97 | 0.97 | 0.85 | 0.96 | 0.97 | 0.84 | 0.97 | 0.93 | 0.78 | 0.96 | 0.85 | 0.98 | 0.97 | 0.93 | 0.97 |
# Project annual totals at the windfarm level
metrics.time_based_availability(frequency="annual", by="windfarm")
year | windfarm | |
---|---|---|
0 | 2003 | 0.96 |
1 | 2004 | 0.88 |
2 | 2005 | 0.90 |
3 | 2006 | 0.94 |
4 | 2007 | 0.94 |
5 | 2008 | 0.87 |
6 | 2009 | 0.85 |
7 | 2010 | 0.86 |
8 | 2011 | 0.89 |
9 | 2012 | 0.89 |
# Project monthly totals at the windfarm level
metrics.time_based_availability(frequency="monthly", by="windfarm")
month | windfarm | |
---|---|---|
0 | 1 | 0.90 |
1 | 2 | 0.89 |
2 | 3 | 0.88 |
3 | 4 | 0.88 |
4 | 5 | 0.89 |
5 | 6 | 0.89 |
6 | 7 | 0.90 |
7 | 8 | 0.90 |
8 | 9 | 0.91 |
9 | 10 | 0.91 |
10 | 11 | 0.91 |
11 | 12 | 0.90 |
# Project month-by-year totals at the windfarm level
# NOTE: This is limited to the first two years for cleanliness of the notebook
metrics.time_based_availability(frequency="month-year", by="windfarm").head(24)
year | month | windfarm | |
---|---|---|---|
0 | 2003 | 1 | 0.98 |
1 | 2003 | 2 | 0.97 |
2 | 2003 | 3 | 0.97 |
3 | 2003 | 4 | 0.96 |
4 | 2003 | 5 | 0.96 |
5 | 2003 | 6 | 0.97 |
6 | 2003 | 7 | 0.98 |
7 | 2003 | 8 | 0.95 |
8 | 2003 | 9 | 0.96 |
9 | 2003 | 10 | 0.96 |
10 | 2003 | 11 | 0.94 |
11 | 2003 | 12 | 0.93 |
12 | 2004 | 1 | 0.92 |
13 | 2004 | 2 | 0.90 |
14 | 2004 | 3 | 0.87 |
15 | 2004 | 4 | 0.85 |
16 | 2004 | 5 | 0.87 |
17 | 2004 | 6 | 0.87 |
18 | 2004 | 7 | 0.86 |
19 | 2004 | 8 | 0.87 |
20 | 2004 | 9 | 0.87 |
21 | 2004 | 10 | 0.88 |
22 | 2004 | 11 | 0.89 |
23 | 2004 | 12 | 0.88 |
Here, we will go through the various input definitions to get capacity factor data. The inputs are very similar to that of the availability calculation.
which
options:
frequency
options:
by
options:
# Project total at the whole windfarm level
cf = metrics.capacity_factor(which="net", frequency="project", by="windfarm")
print(f" Net Capacity Factor: {cf:.2f}%")
cf = metrics.capacity_factor(which="gross", frequency="project", by="windfarm")
print(f"Gross Capacity Factor: {cf:.2f}%")
Net Capacity Factor: 0.43% Gross Capacity Factor: 0.48%
# Project total at the turbine level
metrics.capacity_factor(which="net", frequency="project", by="turbine")
S00T1 | S00T2 | S00T3 | S00T4 | S00T5 | S00T6 | S00T7 | S00T8 | S00T9 | S00T10 | S00T11 | S00T12 | S00T13 | S00T14 | S00T15 | S00T16 | S00T17 | S00T18 | S00T19 | S00T20 | S00T21 | S00T22 | S00T23 | S00T24 | S00T25 | S00T26 | S00T27 | S00T28 | S00T29 | S00T30 | S00T31 | S00T32 | S00T33 | S00T34 | S00T35 | S00T36 | S00T37 | S00T38 | S00T39 | S00T40 | S00T41 | S00T42 | S00T43 | S00T44 | S00T45 | S00T46 | S00T47 | S00T48 | S00T49 | S00T50 | S00T51 | S00T52 | S00T53 | S00T54 | S00T55 | S00T56 | S00T57 | S00T58 | S00T59 | S00T60 | S00T61 | S00T62 | S00T63 | S00T64 | S00T65 | S00T66 | S00T67 | S00T68 | S00T69 | S00T70 | S00T71 | S00T72 | S00T73 | S00T74 | S00T75 | S00T76 | S00T77 | S00T78 | S00T79 | S00T80 | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0.41 | 0.46 | 0.41 | 0.44 | 0.46 | 0.42 | 0.38 | 0.33 | 0.46 | 0.37 | 0.41 | 0.40 | 0.46 | 0.41 | 0.46 | 0.38 | 0.41 | 0.46 | 0.46 | 0.44 | 0.46 | 0.41 | 0.43 | 0.41 | 0.32 | 0.47 | 0.47 | 0.47 | 0.47 | 0.40 | 0.47 | 0.42 | 0.46 | 0.35 | 0.46 | 0.47 | 0.46 | 0.42 | 0.39 | 0.45 | 0.40 | 0.35 | 0.46 | 0.46 | 0.37 | 0.46 | 0.39 | 0.40 | 0.46 | 0.39 | 0.38 | 0.43 | 0.46 | 0.41 | 0.46 | 0.43 | 0.46 | 0.46 | 0.44 | 0.46 | 0.42 | 0.44 | 0.39 | 0.46 | 0.46 | 0.46 | 0.42 | 0.46 | 0.21 | 0.44 | 0.46 | 0.47 | 0.41 | 0.46 | 0.46 | 0.40 | 0.47 | 0.44 | 0.38 | 0.46 | 0.41 | 0.47 | 0.46 | 0.45 | 0.46 |
# Project annual totals at the windfarm level
metrics.capacity_factor(which="net", frequency="annual", by="windfarm")
windfarm | |
---|---|
year | |
2003 | 0.40 |
2004 | 0.41 |
2005 | 0.44 |
2006 | 0.46 |
2007 | 0.48 |
2008 | 0.45 |
2009 | 0.40 |
2010 | 0.37 |
2011 | 0.45 |
2012 | 0.44 |
# Project monthly totals at the windfarm level
metrics.capacity_factor(which="net", frequency="monthly", by="windfarm")
windfarm | |
---|---|
month | |
1 | 0.57 |
2 | 0.47 |
3 | 0.46 |
4 | 0.38 |
5 | 0.36 |
6 | 0.30 |
7 | 0.31 |
8 | 0.34 |
9 | 0.43 |
10 | 0.48 |
11 | 0.53 |
12 | 0.52 |
# Project month-by-year totals at the windfarm level
# NOTE: This is limited to the first two years for cleanliness of the notebook
metrics.capacity_factor(which="net", frequency="month-year", by="windfarm").head(24)
windfarm | ||
---|---|---|
year | month | |
2003 | 1 | 0.63 |
2 | 0.37 | |
3 | 0.38 | |
4 | 0.52 | |
5 | 0.34 | |
6 | 0.31 | |
7 | 0.30 | |
8 | 0.29 | |
9 | 0.27 | |
10 | 0.41 | |
11 | 0.53 | |
12 | 0.54 | |
2004 | 1 | 0.52 |
2 | 0.49 | |
3 | 0.46 | |
4 | 0.35 | |
5 | 0.26 | |
6 | 0.34 | |
7 | 0.24 | |
8 | 0.37 | |
9 | 0.52 | |
10 | 0.51 | |
11 | 0.44 | |
12 | 0.44 |
Here, we will go through the various input definitions to get the task completion rates. The inputs are very similar to that of the availability calculation.
which
options:
frequency
options:
# Project total at the whole windfarm level
total = metrics.task_completion_rate(which="scheduled", frequency="project")
print(f" Scheduled Task Completion Rate: {total * 100:.0f}%")
total = metrics.task_completion_rate(which="unscheduled", frequency="project")
print(f"Unscheduled Task Completion Rate: {total * 100:.0f}%")
total = metrics.task_completion_rate(which="both", frequency="project")
print(f" Overall Task Completion Rate: {total * 100:.0f}%")
Scheduled Task Completion Rate: 95% Unscheduled Task Completion Rate: 100% Overall Task Completion Rate: 100%
# Project annual totals at the windfarm level
metrics.task_completion_rate(which="both", frequency="annual")
year | Completion Rate | |
---|---|---|
0 | 2003 | 0.99 |
1 | 2004 | 0.95 |
2 | 2005 | 0.99 |
3 | 2006 | 0.98 |
4 | 2007 | 0.98 |
5 | 2008 | 1.01 |
6 | 2009 | 1.02 |
7 | 2010 | 1.02 |
8 | 2011 | 1.01 |
9 | 2012 | 1.03 |
# Project monthly totals at the windfarm level
metrics.task_completion_rate(which="both", frequency="monthly")
year | Completion Rate | |
---|---|---|
0 | 1 | 0.85 |
1 | 2 | 0.99 |
2 | 3 | 1.00 |
3 | 4 | 1.03 |
4 | 5 | 1.01 |
5 | 6 | 1.05 |
6 | 7 | 1.00 |
7 | 8 | 1.03 |
8 | 9 | 1.00 |
9 | 10 | 1.01 |
10 | 11 | 0.95 |
11 | 12 | 1.01 |
# Project month-by-year totals at the windfarm level
# NOTE: This is limited to the first two years for cleanliness of the notebook
metrics.task_completion_rate(which="both", frequency="month-year").head(24)
year | month | Completion Rate | |
---|---|---|---|
0 | 2003 | 1 | 0.84 |
1 | 2003 | 2 | 1.14 |
2 | 2003 | 3 | 0.93 |
3 | 2003 | 4 | 1.00 |
4 | 2003 | 5 | 1.00 |
5 | 2003 | 6 | 1.03 |
6 | 2003 | 7 | 0.97 |
7 | 2003 | 8 | 1.00 |
8 | 2003 | 9 | 0.95 |
9 | 2003 | 10 | 0.93 |
10 | 2003 | 11 | 1.03 |
11 | 2003 | 12 | 0.98 |
12 | 2004 | 1 | 0.51 |
13 | 2004 | 2 | 1.08 |
14 | 2004 | 3 | 1.07 |
15 | 2004 | 4 | 1.15 |
16 | 2004 | 5 | 1.11 |
17 | 2004 | 6 | 1.04 |
18 | 2004 | 7 | 0.97 |
19 | 2004 | 8 | 1.02 |
20 | 2004 | 9 | 1.11 |
21 | 2004 | 10 | 1.04 |
22 | 2004 | 11 | 0.91 |
23 | 2004 | 12 | 1.10 |
Here, we will go through the various input definitions to get the equipment cost data.
frequency
options:
by_equipment
options:
True
: computed across all equipment usedFalse
: computed for each piece of equipment# Project total at the whole windfarm level
total = metrics.equipment_costs(frequency="project", by_equipment=False)
print(f"Project total: ${total / metrics.project_capacity:,.2f}/MW")
Project total: $554,807.68/MW
# Project totals at the equipment level
metrics.equipment_costs(frequency="project", by_equipment=True)
Crew Transfer Vessel 1 | Crew Transfer Vessel 2 | Crew Transfer Vessel 3 | Field Support Vessel | Heavy Lift Vessel | |
---|---|---|---|---|---|
0 | 6,393,260.42 | 6,393,260.42 | 6,393,260.42 | 2,660,000.00 | 111,314,062.50 |
# Project annual totals at the windfarm level
metrics.equipment_costs(frequency="annual", by_equipment=False)
year | equipment_cost | |
---|---|---|
0 | 2003 | 11,324,406.25 |
1 | 2004 | 13,729,687.50 |
2 | 2005 | 12,893,187.50 |
3 | 2006 | 13,874,437.50 |
4 | 2007 | 14,324,437.50 |
5 | 2008 | 11,629,687.50 |
6 | 2009 | 12,905,687.50 |
7 | 2010 | 13,205,687.50 |
8 | 2011 | 13,574,437.50 |
9 | 2012 | 15,692,187.50 |
# Project monthly totals at the equipment level
metrics.equipment_costs(frequency="monthly", by_equipment=True)
month | Crew Transfer Vessel 1 | Crew Transfer Vessel 2 | Crew Transfer Vessel 3 | Field Support Vessel | Heavy Lift Vessel | |
---|---|---|---|---|---|---|
0 | 1 | 543,010.42 | 543,010.42 | 543,010.42 | 0.00 | 0.00 |
1 | 2 | 495,250.00 | 495,250.00 | 495,250.00 | 0.00 | 0.00 |
2 | 3 | 542,500.00 | 542,500.00 | 542,500.00 | 0.00 | 0.00 |
3 | 4 | 525,000.00 | 525,000.00 | 525,000.00 | 0.00 | 0.00 |
4 | 5 | 542,500.00 | 542,500.00 | 542,500.00 | 0.00 | 36,028,125.00 |
5 | 6 | 525,000.00 | 525,000.00 | 525,000.00 | 2,670,291.67 | 0.00 |
6 | 7 | 542,500.00 | 542,500.00 | 542,500.00 | 0.00 | 35,207,812.50 |
7 | 8 | 542,500.00 | 542,500.00 | 542,500.00 | 0.00 | 0.00 |
8 | 9 | 525,000.00 | 525,000.00 | 525,000.00 | 0.00 | 38,954,687.50 |
9 | 10 | 542,500.00 | 542,500.00 | 542,500.00 | 0.00 | 1,123,437.50 |
10 | 11 | 525,000.00 | 525,000.00 | 525,000.00 | 0.00 | 0.00 |
11 | 12 | 542,500.00 | 542,500.00 | 542,500.00 | 0.00 | 0.00 |
# Project month-by-year totals at the equipment level
# NOTE: This is limited to the two years only
metrics.equipment_costs(frequency="month-year", by_equipment=True).head(24)
year | month | Crew Transfer Vessel 1 | Crew Transfer Vessel 2 | Crew Transfer Vessel 3 | Field Support Vessel | Heavy Lift Vessel | |
---|---|---|---|---|---|---|---|
0 | 2003 | 1 | 54,760.42 | 54,760.42 | 54,760.42 | 0.00 | 0.00 |
1 | 2003 | 2 | 49,000.00 | 49,000.00 | 49,000.00 | 0.00 | 0.00 |
2 | 2003 | 3 | 54,250.00 | 54,250.00 | 54,250.00 | 0.00 | 0.00 |
3 | 2003 | 4 | 52,500.00 | 52,500.00 | 52,500.00 | 0.00 | 0.00 |
4 | 2003 | 5 | 54,250.00 | 54,250.00 | 54,250.00 | 0.00 | 3,570,312.50 |
5 | 2003 | 6 | 52,500.00 | 52,500.00 | 52,500.00 | 266,000.00 | 0.00 |
6 | 2003 | 7 | 54,250.00 | 54,250.00 | 54,250.00 | 0.00 | 3,543,750.00 |
7 | 2003 | 8 | 54,250.00 | 54,250.00 | 54,250.00 | 0.00 | 0.00 |
8 | 2003 | 9 | 52,500.00 | 52,500.00 | 52,500.00 | 0.00 | 2,820,312.50 |
9 | 2003 | 10 | 54,250.00 | 54,250.00 | 54,250.00 | 0.00 | 0.00 |
10 | 2003 | 11 | 52,500.00 | 52,500.00 | 52,500.00 | 0.00 | 0.00 |
11 | 2003 | 12 | 54,250.00 | 54,250.00 | 54,250.00 | 0.00 | 0.00 |
12 | 2004 | 1 | 54,250.00 | 54,250.00 | 54,250.00 | 0.00 | 0.00 |
13 | 2004 | 2 | 50,750.00 | 50,750.00 | 50,750.00 | 0.00 | 0.00 |
14 | 2004 | 3 | 54,250.00 | 54,250.00 | 54,250.00 | 0.00 | 0.00 |
15 | 2004 | 4 | 52,500.00 | 52,500.00 | 52,500.00 | 0.00 | 0.00 |
16 | 2004 | 5 | 54,250.00 | 54,250.00 | 54,250.00 | 0.00 | 2,970,312.50 |
17 | 2004 | 6 | 52,500.00 | 52,500.00 | 52,500.00 | 266,000.00 | 0.00 |
18 | 2004 | 7 | 54,250.00 | 54,250.00 | 54,250.00 | 0.00 | 3,120,312.50 |
19 | 2004 | 8 | 54,250.00 | 54,250.00 | 54,250.00 | 0.00 | 0.00 |
20 | 2004 | 9 | 52,500.00 | 52,500.00 | 52,500.00 | 0.00 | 5,000,000.00 |
21 | 2004 | 10 | 54,250.00 | 54,250.00 | 54,250.00 | 0.00 | 451,562.50 |
22 | 2004 | 11 | 52,500.00 | 52,500.00 | 52,500.00 | 0.00 | 0.00 |
23 | 2004 | 12 | 54,250.00 | 54,250.00 | 54,250.00 | 0.00 | 0.00 |
Here, we will go through the various input definitions to get the service equipment utiliztion rates.
frequency
options:
# Project totals at the project level
total = metrics.service_equipment_utilization(frequency="project")
total
Crew Transfer Vessel 1 | Crew Transfer Vessel 2 | Crew Transfer Vessel 3 | Field Support Vessel | Heavy Lift Vessel | |
---|---|---|---|---|---|
0 | 0.96 | 0.96 | 0.96 | 0.91 | 0.99 |
# Annualized project totals
total = metrics.service_equipment_utilization(frequency="annual")
total
Crew Transfer Vessel 1 | Crew Transfer Vessel 2 | Crew Transfer Vessel 3 | Field Support Vessel | Heavy Lift Vessel | |
---|---|---|---|---|---|
year | |||||
2003 | 0.64 | 0.63 | 0.65 | 0.10 | 0.89 |
2004 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 |
2005 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 |
2006 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 |
2007 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 |
2008 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 |
2009 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 |
2010 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 |
2011 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 |
2012 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 |
Here, we will go through the various input definitions to get the labor cost data.
frequency
options:
by_type
options:
True
: computed across each labor typeFalse
: computed for both labor types used# Project total at the whole windfarm level
total = metrics.labor_costs(frequency="project", by_type=False)
print(f"Project total: ${total / metrics.project_capacity:,.2f}/MW")
Project total: $0.00/MW
# Project totals for each type of labor
# NOTE: Only salaried labor was defined for thesese analyses
metrics.labor_costs(frequency="project", by_type=True)
hourly_labor_cost | salary_labor_cost | total_labor_cost | |
---|---|---|---|
0 | 0.00 | 0.00 | 0.00 |
# Project annual totals for all labor
metrics.labor_costs(frequency="annual", by_type=False)
year | total_labor_cost | |
---|---|---|
0 | 2003 | 0.00 |
1 | 2004 | 0.00 |
2 | 2005 | 0.00 |
3 | 2006 | 0.00 |
4 | 2007 | 0.00 |
5 | 2008 | 0.00 |
6 | 2009 | 0.00 |
7 | 2010 | 0.00 |
8 | 2011 | 0.00 |
9 | 2012 | 0.00 |
# Project monthly totals for all labor
metrics.labor_costs(frequency="monthly", by_type=False)
month | total_labor_cost | |
---|---|---|
0 | 1 | 0.00 |
1 | 2 | 0.00 |
2 | 3 | 0.00 |
3 | 4 | 0.00 |
4 | 5 | 0.00 |
5 | 6 | 0.00 |
6 | 7 | 0.00 |
7 | 8 | 0.00 |
8 | 9 | 0.00 |
9 | 10 | 0.00 |
10 | 11 | 0.00 |
11 | 12 | 0.00 |
# Project month-by-year totals for all labor
# NOTE: This is limited to the first two years only
metrics.labor_costs(frequency="month-year", by_type=False).head(24)
year | month | total_labor_cost | |
---|---|---|---|
0 | 2003 | 1 | 0.00 |
1 | 2003 | 2 | 0.00 |
2 | 2003 | 3 | 0.00 |
3 | 2003 | 4 | 0.00 |
4 | 2003 | 5 | 0.00 |
5 | 2003 | 6 | 0.00 |
6 | 2003 | 7 | 0.00 |
7 | 2003 | 8 | 0.00 |
8 | 2003 | 9 | 0.00 |
9 | 2003 | 10 | 0.00 |
10 | 2003 | 11 | 0.00 |
11 | 2003 | 12 | 0.00 |
12 | 2004 | 1 | 0.00 |
13 | 2004 | 2 | 0.00 |
14 | 2004 | 3 | 0.00 |
15 | 2004 | 4 | 0.00 |
16 | 2004 | 5 | 0.00 |
17 | 2004 | 6 | 0.00 |
18 | 2004 | 7 | 0.00 |
19 | 2004 | 8 | 0.00 |
20 | 2004 | 9 | 0.00 |
21 | 2004 | 10 | 0.00 |
22 | 2004 | 11 | 0.00 |
23 | 2004 | 12 | 0.00 |
Here, we will go through the various input definitions to get the equipment and labor cost data broken out by expense categories.
frequency
options:
by_category
options:
True
: computed across as equipment, plus each labor type, plus totalsFalse
: computed as single totalreason
definitions:
# Project totals
metrics.equipment_labor_cost_breakdowns(frequency="project", by_category=False)
reason | total_cost | |
---|---|---|
0 | Maintenance | 1,854,617.19 |
1 | Repair | 26,326,622.40 |
2 | Mobilization | 15,000,000.00 |
3 | Weather Delay | 18,286,325.52 |
4 | No Requests | 3,365,640.62 |
5 | Not in Shift | 34,934,877.60 |
6 | NaN | 31,855,500.00 |
# Project totals by each category
metrics.equipment_labor_cost_breakdowns(frequency="project", by_category=True)
reason | hourly_labor_cost | salary_labor_cost | total_labor_cost | equipment_cost | total_cost | |
---|---|---|---|---|---|---|
0 | Maintenance | 0.00 | 0.00 | 0.00 | 1,854,617.19 | 1,854,617.19 |
1 | Repair | 0.00 | 0.00 | 0.00 | 26,326,622.40 | 26,326,622.40 |
2 | Mobilization | 0.00 | 0.00 | 0.00 | 15,000,000.00 | 15,000,000.00 |
3 | Weather Delay | 0.00 | 0.00 | 0.00 | 18,286,325.52 | 18,286,325.52 |
4 | No Requests | 0.00 | 0.00 | 0.00 | 3,365,640.62 | 3,365,640.62 |
5 | Not in Shift | 0.00 | 0.00 | 0.00 | 34,934,877.60 | 34,934,877.60 |
6 | NaN | 0.00 | 0.00 | 0.00 | 31,855,500.00 | 31,855,500.00 |
# Project annual totals
# NOTE: This is limited to the first two years
metrics.equipment_labor_cost_breakdowns(frequency="annual", by_category=False).head(10)
year | reason | total_cost | |
---|---|---|---|
0 | 2003 | Maintenance | 35,145.83 |
1 | 2003 | Repair | 2,411,268.23 |
2 | 2003 | Mobilization | 1,500,000.00 |
3 | 2003 | Weather Delay | 923,981.77 |
4 | 2003 | No Requests | 1,588,348.96 |
5 | 2003 | Not in Shift | 2,753,312.50 |
6 | 2003 | NaN | 1,985,875.00 |
7 | 2004 | Maintenance | 213,135.42 |
8 | 2004 | Repair | 2,838,408.85 |
9 | 2004 | Mobilization | 1,500,000.00 |
# Project monthly totals
# NOTE: This is limited to the first two years
metrics.equipment_labor_cost_breakdowns(frequency="monthly", by_category=False).head(10)
month | reason | total_cost | |
---|---|---|---|
0 | 1 | Maintenance | 103,723.96 |
1 | 1 | Repair | 477,695.31 |
2 | 1 | Mobilization | 0.00 |
3 | 1 | Weather Delay | 155,002.60 |
4 | 1 | No Requests | 50,604.17 |
5 | 1 | Not in Shift | 150,682.29 |
6 | 1 | NaN | 661,500.00 |
7 | 2 | Maintenance | 105,437.50 |
8 | 2 | Repair | 464,315.10 |
9 | 2 | Mobilization | 0.00 |
# Project month-by-year totals
# NOTE: This is limited to the first two years
metrics.equipment_labor_cost_breakdowns(frequency="month-year", by_category=False).head(20)
year | month | reason | total_cost | |
---|---|---|---|---|
0 | 2003 | 1 | Maintenance | 0.00 |
1 | 2003 | 1 | Repair | 43,604.17 |
2 | 2003 | 1 | Mobilization | 0.00 |
3 | 2003 | 1 | Weather Delay | 16,369.79 |
4 | 2003 | 1 | No Requests | 50,604.17 |
5 | 2003 | 1 | Not in Shift | 2,460.94 |
6 | 2003 | 1 | NaN | 49,000.00 |
7 | 2003 | 2 | Maintenance | 0.00 |
8 | 2003 | 2 | Repair | 54,085.94 |
9 | 2003 | 2 | Mobilization | 0.00 |
10 | 2003 | 2 | Weather Delay | 10,445.31 |
11 | 2003 | 2 | No Requests | 26,304.69 |
12 | 2003 | 2 | Not in Shift | 1,859.38 |
13 | 2003 | 2 | NaN | 51,625.00 |
14 | 2003 | 3 | Maintenance | 0.00 |
15 | 2003 | 3 | Repair | 48,981.77 |
16 | 2003 | 3 | Mobilization | 0.00 |
17 | 2003 | 3 | Weather Delay | 6,635.42 |
18 | 2003 | 3 | No Requests | 66,171.88 |
19 | 2003 | 3 | Not in Shift | 3,591.15 |
Here, we will go through the various input definitions to get the component cost data broken out by various categories.
NOTE: It should be noted that the the component costs will not sum up to the whole project operations costs because of delays that are not associated with any repair or maintenance task, such as no requests needing to be processed.
frequency
options:
by_category
options:
True
: computed across each cost category (includes total)False
: computed as single totalby_action
options:
True
: computed by each of "repair", "maintenance", and "delay"False
: computed as single totalaction
definitions:
# Project totals by component
metrics.component_costs(frequency="project", by_category=False, by_action=False)
component | total_cost | |
---|---|---|
0 | cable | 0.00 |
1 | drive_train | 0.00 |
2 | electrical_system | 0.00 |
3 | electronic_control | 0.00 |
4 | gearbox | 0.00 |
5 | generator | 149,928,671.88 |
6 | hydraulic_system | 0.00 |
7 | mechanical_brake | 0.00 |
8 | rotor_blades | 0.00 |
9 | rotor_hub | 0.00 |
10 | sensors | 0.00 |
11 | supporting_structure | 0.00 |
12 | transformer | 0.00 |
13 | yaw_system | 0.00 |
# Project totals by each category and action type
metrics.component_costs(frequency="project", by_category=True, by_action=True)
component | action | materials_cost | total_labor_cost | equipment_cost | total_cost | |
---|---|---|---|---|---|---|
0 | generator | delay | 0 | 0.00 | 85,075,171.88 | 85,075,171.88 |
1 | generator | maintenance | 0 | 0.00 | 1,854,617.19 | 1,854,617.19 |
2 | generator | repair | 0 | 0.00 | 26,326,622.40 | 26,326,622.40 |
# Project annual totals by category
# NOTE: This is limited to the first two years
metrics.component_costs(frequency="annual", by_category=True, by_action=False).head(28)
year | component | materials_cost | total_labor_cost | equipment_cost | total_cost | |
---|---|---|---|---|---|---|
0 | 2003 | cable | 0.00 | 0.00 | 0.00 | 0.00 |
1 | 2003 | drive_train | 0.00 | 0.00 | 0.00 | 0.00 |
2 | 2003 | electrical_system | 0.00 | 0.00 | 0.00 | 0.00 |
3 | 2003 | electronic_control | 0.00 | 0.00 | 0.00 | 0.00 |
4 | 2003 | gearbox | 0.00 | 0.00 | 0.00 | 0.00 |
5 | 2003 | generator | 2,410,000.00 | 0.00 | 8,234,526.04 | 10,644,526.04 |
6 | 2003 | hydraulic_system | 0.00 | 0.00 | 0.00 | 0.00 |
7 | 2003 | mechanical_brake | 0.00 | 0.00 | 0.00 | 0.00 |
8 | 2003 | rotor_blades | 0.00 | 0.00 | 0.00 | 0.00 |
9 | 2003 | rotor_hub | 0.00 | 0.00 | 0.00 | 0.00 |
10 | 2003 | sensors | 0.00 | 0.00 | 0.00 | 0.00 |
11 | 2003 | supporting_structure | 0.00 | 0.00 | 0.00 | 0.00 |
12 | 2003 | transformer | 0.00 | 0.00 | 0.00 | 0.00 |
13 | 2003 | yaw_system | 0.00 | 0.00 | 0.00 | 0.00 |
14 | 2004 | cable | 0.00 | 0.00 | 0.00 | 0.00 |
15 | 2004 | drive_train | 0.00 | 0.00 | 0.00 | 0.00 |
16 | 2004 | electrical_system | 0.00 | 0.00 | 0.00 | 0.00 |
17 | 2004 | electronic_control | 0.00 | 0.00 | 0.00 | 0.00 |
18 | 2004 | gearbox | 0.00 | 0.00 | 0.00 | 0.00 |
19 | 2004 | generator | 4,147,000.00 | 0.00 | 12,115,885.42 | 16,262,885.42 |
20 | 2004 | hydraulic_system | 0.00 | 0.00 | 0.00 | 0.00 |
21 | 2004 | mechanical_brake | 0.00 | 0.00 | 0.00 | 0.00 |
22 | 2004 | rotor_blades | 0.00 | 0.00 | 0.00 | 0.00 |
23 | 2004 | rotor_hub | 0.00 | 0.00 | 0.00 | 0.00 |
24 | 2004 | sensors | 0.00 | 0.00 | 0.00 | 0.00 |
25 | 2004 | supporting_structure | 0.00 | 0.00 | 0.00 | 0.00 |
26 | 2004 | transformer | 0.00 | 0.00 | 0.00 | 0.00 |
27 | 2004 | yaw_system | 0.00 | 0.00 | 0.00 | 0.00 |
# Project monthly totals
# NOTE: This is limited to the first two months
metrics.component_costs(frequency="monthly", by_category=True, by_action=False).head(28)
month | component | materials_cost | total_labor_cost | equipment_cost | total_cost | |
---|---|---|---|---|---|---|
0 | 1 | cable | 0.00 | 0.00 | 0.00 | 0.00 |
1 | 1 | drive_train | 0.00 | 0.00 | 0.00 | 0.00 |
2 | 1 | electrical_system | 0.00 | 0.00 | 0.00 | 0.00 |
3 | 1 | electronic_control | 0.00 | 0.00 | 0.00 | 0.00 |
4 | 1 | gearbox | 0.00 | 0.00 | 0.00 | 0.00 |
5 | 1 | generator | 927,500.00 | 0.00 | 1,576,895.83 | 2,504,395.83 |
6 | 1 | hydraulic_system | 0.00 | 0.00 | 0.00 | 0.00 |
7 | 1 | mechanical_brake | 0.00 | 0.00 | 0.00 | 0.00 |
8 | 1 | rotor_blades | 0.00 | 0.00 | 0.00 | 0.00 |
9 | 1 | rotor_hub | 0.00 | 0.00 | 0.00 | 0.00 |
10 | 1 | sensors | 0.00 | 0.00 | 0.00 | 0.00 |
11 | 1 | supporting_structure | 0.00 | 0.00 | 0.00 | 0.00 |
12 | 1 | transformer | 0.00 | 0.00 | 0.00 | 0.00 |
13 | 1 | yaw_system | 0.00 | 0.00 | 0.00 | 0.00 |
14 | 2 | cable | 0.00 | 0.00 | 0.00 | 0.00 |
15 | 2 | drive_train | 0.00 | 0.00 | 0.00 | 0.00 |
16 | 2 | electrical_system | 0.00 | 0.00 | 0.00 | 0.00 |
17 | 2 | electronic_control | 0.00 | 0.00 | 0.00 | 0.00 |
18 | 2 | gearbox | 0.00 | 0.00 | 0.00 | 0.00 |
19 | 2 | generator | 877,500.00 | 0.00 | 1,459,445.31 | 2,336,945.31 |
20 | 2 | hydraulic_system | 0.00 | 0.00 | 0.00 | 0.00 |
21 | 2 | mechanical_brake | 0.00 | 0.00 | 0.00 | 0.00 |
22 | 2 | rotor_blades | 0.00 | 0.00 | 0.00 | 0.00 |
23 | 2 | rotor_hub | 0.00 | 0.00 | 0.00 | 0.00 |
24 | 2 | sensors | 0.00 | 0.00 | 0.00 | 0.00 |
25 | 2 | supporting_structure | 0.00 | 0.00 | 0.00 | 0.00 |
26 | 2 | transformer | 0.00 | 0.00 | 0.00 | 0.00 |
27 | 2 | yaw_system | 0.00 | 0.00 | 0.00 | 0.00 |
# Project month-by-year totals
# NOTE: This is limited to the first two months
metrics.component_costs(frequency="month-year", by_category=True, by_action=False).head(28)
year | month | component | materials_cost | total_labor_cost | equipment_cost | total_cost | |
---|---|---|---|---|---|---|---|
0 | 2003 | 1 | cable | 0.00 | 0.00 | 0.00 | 0.00 |
1 | 2003 | 1 | drive_train | 0.00 | 0.00 | 0.00 | 0.00 |
2 | 2003 | 1 | electrical_system | 0.00 | 0.00 | 0.00 | 0.00 |
3 | 2003 | 1 | electronic_control | 0.00 | 0.00 | 0.00 | 0.00 |
4 | 2003 | 1 | gearbox | 0.00 | 0.00 | 0.00 | 0.00 |
5 | 2003 | 1 | generator | 33,500.00 | 0.00 | 112,145.83 | 145,645.83 |
6 | 2003 | 1 | hydraulic_system | 0.00 | 0.00 | 0.00 | 0.00 |
7 | 2003 | 1 | mechanical_brake | 0.00 | 0.00 | 0.00 | 0.00 |
8 | 2003 | 1 | rotor_blades | 0.00 | 0.00 | 0.00 | 0.00 |
9 | 2003 | 1 | rotor_hub | 0.00 | 0.00 | 0.00 | 0.00 |
10 | 2003 | 1 | sensors | 0.00 | 0.00 | 0.00 | 0.00 |
11 | 2003 | 1 | supporting_structure | 0.00 | 0.00 | 0.00 | 0.00 |
12 | 2003 | 1 | transformer | 0.00 | 0.00 | 0.00 | 0.00 |
13 | 2003 | 1 | yaw_system | 0.00 | 0.00 | 0.00 | 0.00 |
14 | 2003 | 2 | cable | 0.00 | 0.00 | 0.00 | 0.00 |
15 | 2003 | 2 | drive_train | 0.00 | 0.00 | 0.00 | 0.00 |
16 | 2003 | 2 | electrical_system | 0.00 | 0.00 | 0.00 | 0.00 |
17 | 2003 | 2 | electronic_control | 0.00 | 0.00 | 0.00 | 0.00 |
18 | 2003 | 2 | gearbox | 0.00 | 0.00 | 0.00 | 0.00 |
19 | 2003 | 2 | generator | 53,000.00 | 0.00 | 120,695.31 | 173,695.31 |
20 | 2003 | 2 | hydraulic_system | 0.00 | 0.00 | 0.00 | 0.00 |
21 | 2003 | 2 | mechanical_brake | 0.00 | 0.00 | 0.00 | 0.00 |
22 | 2003 | 2 | rotor_blades | 0.00 | 0.00 | 0.00 | 0.00 |
23 | 2003 | 2 | rotor_hub | 0.00 | 0.00 | 0.00 | 0.00 |
24 | 2003 | 2 | sensors | 0.00 | 0.00 | 0.00 | 0.00 |
25 | 2003 | 2 | supporting_structure | 0.00 | 0.00 | 0.00 | 0.00 |
26 | 2003 | 2 | transformer | 0.00 | 0.00 | 0.00 | 0.00 |
27 | 2003 | 2 | yaw_system | 0.00 | 0.00 | 0.00 | 0.00 |
Here, we will go through the various input definitions to get the fixed cost data
frequency
options:
resolution
options:
# The resolution hierarchy for fixed costs
pprint(metrics.fixed_costs.hierarchy)
{'operations': {'annual_leases_fees': ['submerge_land_lease_costs', 'transmission_charges_rights'], 'environmental_health_safety_monitoring': [], 'insurance': ['brokers_fee', 'operations_all_risk', 'business_interruption', 'third_party_liability', 'storm_coverage'], 'labor': [], 'onshore_electrical_maintenance': [], 'operating_facilities': [], 'operations_management_administration': ['project_management_administration', 'marine_management', 'weather_forecasting', 'condition_monitoring']}}
# Project totals at the highest level
metrics.project_fixed_costs(frequency="project", resolution="low")
operations | |
---|---|
0 | 16,000,080.00 |
# Project totals at the medium level
metrics.project_fixed_costs(frequency="project", resolution="medium")
operations_management_administration | insurance | annual_leases_fees | operating_facilities | environmental_health_safety_monitoring | onshore_electrical_maintenance | labor | |
---|---|---|---|---|---|---|---|
0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 16,000,080.00 |
# Project totals at the lowest level
metrics.project_fixed_costs(frequency="project", resolution="high")
project_management_administration | marine_management | weather_forecasting | condition_monitoring | brokers_fee | operations_all_risk | business_interruption | third_party_liability | storm_coverage | submerge_land_lease_costs | transmission_charges_rights | operating_facilities | environmental_health_safety_monitoring | onshore_electrical_maintenance | labor | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 16,000,080.00 |
# Project annualized totals at the medium level
metrics.project_fixed_costs(frequency="annual", resolution="medium")
year | operations_management_administration | insurance | annual_leases_fees | operating_facilities | environmental_health_safety_monitoring | onshore_electrical_maintenance | labor | |
---|---|---|---|---|---|---|---|---|
0 | 2003 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 1,600,008.00 |
1 | 2004 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 1,600,008.00 |
2 | 2005 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 1,600,008.00 |
3 | 2006 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 1,600,008.00 |
4 | 2007 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 1,600,008.00 |
5 | 2008 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 1,600,008.00 |
6 | 2009 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 1,600,008.00 |
7 | 2010 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 1,600,008.00 |
8 | 2011 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 1,600,008.00 |
9 | 2012 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 1,600,008.00 |
There are no inputs for the process timing as it is a slow calculation, so aggregation is left to the user for now. The results corresond to the number of hours required to complete any of the repair or maintenance activities.
# Project totals at the project level
total = metrics.process_times()
total
time_to_completion | process_time | downtime | N | |
---|---|---|---|---|
category | ||||
annual service | 4,262,671.75 | 65,194.50 | 56,590.75 | 419.00 |
major repair | 81,616.83 | 1,617.50 | 1,256.50 | 22.00 |
major replacement | 518,860.50 | 15,277.50 | 518,860.50 | 64.00 |
manual reset | 606,657.98 | 130,290.00 | 13,463.50 | 5,286.00 |
medium repair | 15,102.59 | 11,756.50 | 7,572.50 | 202.00 |
minor repair | 97,823.15 | 48,695.50 | 5,250.50 | 2,040.00 |
Here, we will go through the various input definitions to get the power production data.
frequency
options:
by_turbine
options:
True
: computed for each turbinesFalse
: computed for the whole windfarm# Project total at the whole windfarm level
total = metrics.power_production(frequency="project", by_turbine=False)
total
windfarm | |
---|---|
Project Energy Production (kWh) | 9,001,355,968.50 |
# Project totals at the turbine level
metrics.power_production(frequency="project", by_turbine=True)
windfarm | S00T1 | S00T2 | S00T3 | S00T4 | S00T5 | S00T6 | S00T7 | S00T8 | S00T9 | S00T10 | S00T11 | S00T12 | S00T13 | S00T14 | S00T15 | S00T16 | S00T17 | S00T18 | S00T19 | S00T20 | S00T21 | S00T22 | S00T23 | S00T24 | S00T25 | S00T26 | S00T27 | S00T28 | S00T29 | S00T30 | S00T31 | S00T32 | S00T33 | S00T34 | S00T35 | S00T36 | S00T37 | S00T38 | S00T39 | S00T40 | S00T41 | S00T42 | S00T43 | S00T44 | S00T45 | S00T46 | S00T47 | S00T48 | S00T49 | S00T50 | S00T51 | S00T52 | S00T53 | S00T54 | S00T55 | S00T56 | S00T57 | S00T58 | S00T59 | S00T60 | S00T61 | S00T62 | S00T63 | S00T64 | S00T65 | S00T66 | S00T67 | S00T68 | S00T69 | S00T70 | S00T71 | S00T72 | S00T73 | S00T74 | S00T75 | S00T76 | S00T77 | S00T78 | S00T79 | S00T80 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Project Energy Production (kWh) | 9,001,355,968.50 | 107,648,074.50 | 121,862,554.50 | 108,545,358.00 | 115,582,440.50 | 121,498,227.00 | 110,684,220.00 | 98,773,519.50 | 86,266,014.00 | 121,090,393.50 | 98,278,773.00 | 108,253,191.00 | 105,014,271.00 | 121,391,810.00 | 107,783,308.00 | 122,070,781.00 | 98,771,873.00 | 107,585,524.50 | 121,037,791.50 | 122,830,072.00 | 121,679,370.00 | 114,810,583.50 | 121,888,160.50 | 108,344,876.00 | 111,933,539.00 | 108,821,716.50 | 85,355,986.50 | 122,602,253.50 | 122,277,689.00 | 121,108,753.00 | 90,747,151.00 | 121,538,637.50 | 121,847,805.00 | 109,362,448.00 | 101,526,570.00 | 118,034,699.00 | 106,319,687.50 | 92,098,572.50 | 121,902,836.00 | 121,258,811.00 | 96,533,082.50 | 121,427,126.00 | 103,375,828.50 | 104,669,155.50 | 122,002,582.00 | 103,837,790.50 | 100,238,075.50 | 111,789,492.00 | 122,054,455.50 | 107,250,160.00 | 120,537,318.50 | 113,435,686.00 | 122,044,561.00 | 122,017,771.50 | 115,627,282.00 | 121,759,995.50 | 111,153,907.00 | 115,810,026.00 | 103,802,030.50 | 121,741,656.50 | 120,408,230.50 | 121,364,747.50 | 110,311,047.50 | 121,690,606.00 | 54,580,838.00 | 116,883,550.00 | 121,313,591.50 | 122,615,135.00 | 106,711,468.50 | 121,292,899.00 | 121,725,785.00 | 105,140,010.00 | 122,485,041.50 | 114,965,531.50 | 99,102,445.50 | 120,326,432.00 | 107,756,572.00 | 122,564,419.00 | 120,854,133.50 | 117,721,292.00 | 122,005,869.00 |
# Project annual totals for the windfarm
metrics.power_production(frequency="annual", by_turbine=False)
windfarm | |
---|---|
year | |
2003 | 847,795,441.50 |
2004 | 862,264,163.00 |
2005 | 926,377,047.50 |
2006 | 923,660,836.00 |
2007 | 1,005,666,408.00 |
2008 | 953,597,820.50 |
2009 | 846,267,173.50 |
2010 | 768,713,430.50 |
2011 | 941,257,651.00 |
2012 | 925,755,997.00 |
# Project monthly totals for the windfarm
metrics.power_production(frequency="monthly", by_turbine=False)
windfarm | |
---|---|
month | |
1 | 1,011,225,579.50 |
2 | 760,740,883.00 |
3 | 828,317,025.00 |
4 | 652,647,978.00 |
5 | 634,985,385.50 |
6 | 515,984,660.00 |
7 | 544,902,601.00 |
8 | 600,927,882.00 |
9 | 745,058,360.00 |
10 | 857,886,952.00 |
11 | 920,599,360.00 |
12 | 928,079,302.50 |
# Project month-by-year totals for the windfarm
# NOTE: This is limited to the first two years only
metrics.power_production(frequency="month-year", by_turbine=False).head(24)
windfarm | ||
---|---|---|
year | month | |
2003 | 1 | 110,667,009.50 |
2 | 58,391,902.00 | |
3 | 66,318,208.00 | |
4 | 90,270,200.50 | |
5 | 60,314,461.50 | |
6 | 52,732,948.50 | |
7 | 53,214,108.00 | |
8 | 51,160,175.50 | |
9 | 46,240,076.00 | |
10 | 73,988,741.00 | |
11 | 91,135,362.00 | |
12 | 93,362,249.00 | |
2004 | 1 | 92,113,370.50 |
2 | 79,299,275.50 | |
3 | 82,033,098.00 | |
4 | 59,756,310.00 | |
5 | 47,073,507.00 | |
6 | 58,635,618.50 | |
7 | 42,550,087.00 | |
8 | 65,255,774.50 | |
9 | 89,560,072.00 | |
10 | 90,536,295.00 | |
11 | 76,000,725.50 | |
12 | 79,450,029.50 |
For a number of project financial metrics, the PySAM library is utilized.
With the above warning in mind, the appropriate simulation outputs are provided as inputs to PySAM upon initialization to ensure all values are aligned.
try:
npv = metrics.pysam_npv()
print(f"NPV: ${npv:,.0f}")
except NotImplementedError as e:
print(e)
No SAM inputs were provided, and 'pysam_npv()' cannot be calculated!
try:
lcoe = metrics.pysam_lcoe_real()
print(f"Real LCOE: ${lcoe:,.2f}/kW")
except NotImplementedError as e:
print(e)
No SAM inputs were provided, and 'pysam_lcoe_real()' cannot be calculated!
try:
lcoe = metrics.pysam_lcoe_nominal()
print(f"Nominal LCOE: ${lcoe:,.2f}/kW")
except NotImplementedError as e:
print(e)
No SAM inputs were provided, and 'pysam_lcoe_nominal()' cannot be calculated!
try:
npv = metrics.pysam_irr()
print(f"IRR: {npv:,.1f}%")
except NotImplementedError as e:
print(e)
No SAM inputs were provided, and 'pysam_irr()' cannot be calculated!
For this demonstration we will manually load a PySAM settings file and trigger the setup for demonstration purposes, but it should be noted that this practice should be avoided.
SAM_settings = "SAM_Singleowner_defaults.yaml"
metrics.sam_settings = load_yaml(sim.env.data_dir / "windfarm", SAM_settings)
metrics._setup_pysam()
metrics.pysam_all_outputs()
Value | |
---|---|
Metric | |
After Tax NPV ($) | 24,637,520.25 |
Nominal LCOE ($/kW) | -0.00 |
Real LCOE ($/kW) | -0.00 |
After Tax IRR (%) | 13.16 |
sim.env.cleanup_log_files(log_only=False)