Data Classes#
The WOMBAT architecture relies heavily on a base set of data classes to process most of the model's inputs. This enables a rigid, yet robust data model to properly define a simulation.
What is this FromDictMixin
I keep seeing in the code diagrams?#
The FromDictMixin
class provides a standard method for providing dictionary definitions
to attrs
dataclasses without worrying about overloading the definition. Plus, you get
the convenience of writing cls.from_dict(data_dict)
instead of cls(**data_dict), and
hoping for the best.
- class wombat.core.data_classes.FromDictMixin[source]#
A Mixin class to allow for kwargs overloading when a data class doesn't have a specific parameter definied. This allows passing of larger dictionaries to a data class without throwing an error.
- Raises:
AttributeError -- Raised if the required class inputs are not provided.
Scheduled and Unscheduled Maintenance#
Maintenance Tasks#
- class wombat.core.data_classes.Maintenance(time, materials, frequency, service_equipment, system_value, description='routine maintenance', operation_reduction=0.0, level=0)[source]#
Data class to store maintenance data used in subassembly and cable modeling.
- Parameters:
time (float) -- Amount of time required to perform maintenance, in hours.
materials (float) -- Cost of materials required to perform maintenance, in USD.
frequency (float) -- Optimal number of days between performing maintenance, in days.
service_equipment (list[str] | str) --
Any combination of th following
Equipment.capability
options.RMT: remote (no actual equipment BUT no special implementation)
DRN: drone
CTV: crew transfer vessel/vehicle
SCN: small crane (i.e., cherry picker)
MCN: medium crane (i.e., field support vessel)
LCN: large crane (i.e., heavy lift vessel)
CAB: cabling vessel/vehicle
DSV: diving support vessel
TOW: tugboat or towing equipment
AHV: anchor handling vessel (tugboat that doesn't trigger tow-to-port)
VSG: vessel support group (group of vessels required for single operation)
system_value (Union[int, float]) -- Turbine replacement value. Used if the materials cost is a proportional cost.
description (str) -- A short text description to be used for logging.
operation_reduction (float) --
Performance reduction caused by the failure, between (0, 1]. Defaults to 0.
Warning
As of v0.7, availability is very sensitive to the usage of this parameter, and so it should be used carefully.
level (int, optional) -- Severity level of the maintenance. Defaults to 0.
-
request_id:
str
#
Failures#
- class wombat.core.data_classes.Failure(scale, shape, time, materials, operation_reduction, level, service_equipment, system_value, rng, replacement=False, description='failure')[source]#
Data class to store failure data used in subassembly and cable modeling.
- Parameters:
scale (float) -- Weibull scale parameter for a failure classification.
shape (float) -- Weibull shape parameter for a failure classification.
time (float) -- Amount of time required to complete the repair, in hours.
materials (float) -- Cost of the materials required to complete the repair, in $USD.
operation_reduction (float) --
Performance reduction caused by the failure, between (0, 1].
Warning
As of v0.7, availability is very sensitive to the usage of this parameter, and so it should be used carefully.
level (int, optional) -- Level of severity, will be generated in the
ComponentData.create_severities
method.service_equipment (list[str] | str) --
Any combination of the following
Equipment.capability
options:RMT: remote (no actual equipment BUT no special implementation)
DRN: drone
CTV: crew transfer vessel/vehicle
SCN: small crane (i.e., cherry picker)
MCN: medium crane (i.e., field support vessel)
LCN: large crane (i.e., heavy lift vessel)
CAB: cabling vessel/vehicle
DSV: diving support vessel
TOW: tugboat or towing equipment
AHV: anchor handling vessel (tugboat that doesn't trigger tow-to-port)
VSG: vessel support group (group of vessels required for single operation)
system_value (Union[int, float]) -- Turbine replacement value. Used if the materials cost is a proportional cost.
replacement (bool) -- True if triggering the failure requires a subassembly replacement, False, if only a repair is necessary. Defaults to False
description (str) -- A short text description to be used for logging.
rng (np.random._generator.Generator) --
Note
Do not provide this, it comes from
wombat.core.environment.WombatEnvironment
The shared random generator used for the Weibull sampling. This is fed through the simulation environment to ensure consistent seeding between simulations.
-
request_id:
str
#
- hours_to_next_failure()[source]#
Sample the next time to failure in a Weibull distribution. If the
scale
andshape
parameters are set to 0, then the model will returnNone
to cause the subassembly to timeout to the end of the simulation.- Return type:
float
|None
- Returns:
float | None -- Returns
None
for a non-modelled failure, or the time until the next simulated failure.
Repair Requests#
- class wombat.core.data_classes.RepairRequest(system_id, system_name, subassembly_id, subassembly_name, severity_level, details, *, cable=False, upstream_turbines=NOTHING, upstream_cables=NOTHING, prior_operating_level=1)[source]#
Repair/Maintenance request data class.
- Parameters:
system_id (str) --
System.id
.system_name (str) --
System.name
.subassembly_id (str) --
Subassembly.id
.subassembly_name (str) --
Subassembly.name
.severity_level (int) --
Maintenance.level
orFailure.level
.details (Failure | Maintenance) -- The actual data class.
cable (bool) -- Indicator that the request is for a cable, by default False.
upstream_turbines (list[str]) -- The cable's upstream turbines, by default []. No need to use this if
cable
== False.upstream_cables (list[str]) -- The cable's upstream cables, by default []. No need to use this if
cable
== False.prior_operating_level (float)
-
prior_operating_level:
float
#
-
request_id:
str
#
Servicing Equipment and Crews#
Service Equipment#
- class wombat.core.data_classes.ServiceEquipmentData(data_dict, *, strategy=None)[source]#
Helps to determine the type ServiceEquipment that should be used, based on the repair strategy for its operation. See
ScheduledServiceEquipmentData
orUnscheduledServiceEquipmentData
for more details on each classifcation.- Parameters:
data_dict (dict) -- The dictionary that will be used to create the appropriate ServiceEquipmentData. This should contain a field called 'strategy' with either "scheduled" or "unscheduled" as a value if strategy is not provided as a keyword argument.
strategy (str, optional) -- Should be one of "scheduled", "requests", "downtime". If nothing is provided, the equipment configuration will be checked.
- Raises:
ValueError -- Raised if
strategy
is not one of "scheduled" or "unscheduled".
Examples
The below workflow is how a new data
ScheduledServiceEquipmentData
object could be created via a generic/routinized creation method, and is how theServiceEquipment
's__init__
method creates the settings data.>>> from wombat.core.data_classes import ServiceEquipmentData >>> >>> data_dict = { >>> "name": "Crew Transfer Vessel 1", >>> "equipment_rate": 1750, >>> "start_month": 1, >>> "start_day": 1, >>> "end_month": 12, >>> "end_day": 31, >>> "start_year": 2002, >>> "end_year": 2014, >>> "onsite": True, >>> "capability": "CTV", >>> "max_severity": 10, >>> "mobilization_cost": 0, >>> "mobilization_days": 0, >>> "speed": 37.04, >>> "max_windspeed_transport": 99, >>> "max_windspeed_repair": 99, >>> "max_waveheight_transport": 1.5, >>> "max_waveheight_repair": 1.5, >>> "strategy": scheduled, >>> "crew_transfer_time": 0.25, >>> "n_crews": 1, >>> "crew": { >>> "day_rate": 0, >>> "n_day_rate": 0, >>> "hourly_rate": 0, >>> "n_hourly_rate": 0, >>> }, >>> } >>> equipment = ServiceEquipmentData(data_dict).determine_type() >>> type(equipment)
- determine_type()[source]#
Generate the appropriate ServiceEquipmentData variation.
- Return type:
ScheduledServiceEquipmentData
|UnscheduledServiceEquipmentData
- Returns:
Union[ScheduledServiceEquipmentData, UnscheduledServiceEquipmentData] -- The appropriate
xxServiceEquipmentData
schema depending on the strategy theServiceEquipment
will use.
ServiceCrew#
- class wombat.core.data_classes.ServiceCrew(n_day_rate, day_rate, n_hourly_rate, hourly_rate)[source]#
An internal data class for the indivdual crew units that are on the servicing equipment.
- Parameters:
n_day_rate (int) -- Number of salaried workers.
day_rate (float) -- Day rate for salaried workers, in USD.
n_hourly_rate (int) -- Number of hourly/subcontractor workers.
hourly_rate (float) -- Hourly labor rate for subcontractors, in USD.
Scheduled Service Equipment#
- class wombat.core.data_classes.ScheduledServiceEquipmentData(name, equipment_rate, n_crews, crew, capability, speed, max_windspeed_transport, max_windspeed_repair, mobilization_cost=0, mobilization_days=0, max_waveheight_transport=1000.0, max_waveheight_repair=1000.0, workday_start=-1, workday_end=-1, crew_transfer_time=0.0, speed_reduction_factor=0.0, port_distance=0.0, onsite=False, method='severity', start_month=-1, start_day=-1, start_year=-1, end_month=-1, end_day=-1, end_year=-1, strategy='scheduled', non_operational_start=None, non_operational_end=None, reduced_speed_start=None, reduced_speed_end=None, reduced_speed=0)[source]#
The data class specification for servicing equipment that will use a pre-scheduled basis for returning to site.
- Parameters:
name (str) -- Name of the piece of servicing equipment.
equipment_rate (float) -- Day rate for the equipment/vessel, in USD.
n_crews (int) --
Number of crew units for the equipment.
Note
The input to this does not matter yet, as multi-crew functionality is not yet implemented.
crew (ServiceCrew) -- The crew details, see
ServiceCrew
for more information. Dictionary of labor costs with the following:n_day_rate
,day_rate
,n_hourly_rate
, andhourly_rate
.start_month (int) -- The day to start operations for the rig and crew.
start_day (int) -- The month to start operations for the rig and crew.
start_year (int) -- The year to start operations for the rig and crew.
end_month (int) -- The month to end operations for the rig and crew.
end_day (int) -- The day to end operations for the rig and crew.
end_year (int) --
The year to end operations for the rig and crew.
Note
if the rig comes annually, then the enter the year for the last year that the rig and crew will be available.
capability (str) --
The type of capabilities the equipment contains. Must be one of:
RMT: remote (no actual equipment BUT no special implementation)
DRN: drone
CTV: crew transfer vessel/vehicle
SCN: small crane (i.e., cherry picker)
MCN: medium crane (i.e., field support vessel)
LCN: large crane (i.e., heavy lift vessel)
CAB: cabling vessel/vehicle
DSV: diving support vessel
AHV: anchor handling vessel (tugboat that doesn't trigger tow-to-port)
VSG: vessel support group (group of vessels required for single operation)
Please note that "TOW" is unavailable for scheduled servicing equipment
mobilization_cost (float) -- Cost to mobilize the rig and crew.
mobilization_days (int) -- Number of days it takes to mobilize the equipment.
speed (float) -- Maximum transit speed, km/hr.
speed_reduction_factor (flaot) -- Reduction factor for traveling in inclement weather, default 0. When 0, travel is stopped when either max_windspeed_transport or max_waveheight_transport is reached, and when 1, speed is used.
max_windspeed_transport (float) -- Maximum windspeed for safe transport, m/s.
max_windspeed_repair (float) -- Maximum windspeed for safe operations, m/s.
max_waveheight_transport (float) -- Maximum waveheight for safe transport, m, default 1000 (land-based).
max_waveheight_repair (float) -- Maximum waveheight for safe operations, m, default 1000 (land-based).
workday_start (int) -- The starting hour of a workshift, in 24 hour time.
workday_end (int) -- The ending hour of a workshift, in 24 hour time.
crew_transfer_time (float) -- The number of hours it takes to transfer the crew from the equipment to the system, e.g. how long does it take to transfer the crew from the CTV to the turbine, default 0.
onsite (bool) --
Indicator for if the servicing equipment and crew are based onsite.
Note
If based onsite, be sure that the start and end dates represent the first and last day/month of the year, respectively, and the start and end years represent the fist and last year in the weather file.
method (str) -- Determines if the equipment will do all maximum severity repairs first or do all the repairs at one turbine before going to the next, by default severity. Must be one of "severity" or "turbine".
port_distance (int | float) -- The distance, in km, the equipment must travel to go between port and site, by default 0.
non_operational_start (str | datetime.datetime | None) -- The starting month and day, e.g., MM/DD, M/D, MM-DD, etc. for an annualized period of prohibited operations. When defined at the environment level, an undefined or later starting date will be overridden, by default None.
non_operational_end (str | datetime.datetime | None) -- The ending month and day, e.g., MM/DD, M/D, MM-DD, etc. for an annualized period of prohibited operations. When defined at the environment level, an undefined or earlier ending date will be overridden, by default None.
reduced_speed_start (str | datetime.datetime | None) -- The starting month and day, e.g., MM/DD, M/D, MM-DD, etc. for an annualized period of reduced speed operations. When defined at the environment level, an undefined or later starting date will be overridden, by default None.
reduced_speed_end (str | datetime.datetime | None) -- The ending month and day, e.g., MM/DD, M/D, MM-DD, etc. for an annualized period of reduced speed operations. When defined at the environment level, an undefined or earlier ending date will be overridden, by default None.
reduced_speed (float) -- The maximum operating speed during the annualized reduced speed operations. When defined at the environment level, an undefined or faster value will be overridden, by default 0.0.
strategy (str)
-
operating_dates_set:
set
#
-
non_operational_dates:
DatetimeIndex
#
-
non_operational_dates_set:
DatetimeIndex
#
-
reduced_speed_dates:
DatetimeIndex
#
-
non_stop_shift:
bool
#
Unscheduled Service Equipment#
- class wombat.core.data_classes.UnscheduledServiceEquipmentData(name, equipment_rate, n_crews, crew, capability, speed, max_windspeed_transport, max_windspeed_repair, mobilization_cost=0, mobilization_days=0, max_waveheight_transport=1000.0, max_waveheight_repair=1000.0, workday_start=-1, workday_end=-1, crew_transfer_time=0.0, speed_reduction_factor=0.0, port_distance=0.0, onsite=False, method='severity', strategy='unscheduled', strategy_threshold=-1, charter_days=-1, tow_speed=1, unmoor_hours=0, reconnection_hours=0, non_operational_start=None, non_operational_end=None, reduced_speed_start=None, reduced_speed_end=None, reduced_speed=0)[source]#
The data class specification for servicing equipment that will use either a basis of windfarm downtime or total number of requests serviceable by the equipment.
- Parameters:
name (str) -- Name of the piece of servicing equipment.
equipment_rate (float) -- Day rate for the equipment/vessel, in USD.
n_crews (int) --
Number of crew units for the equipment.
crew (ServiceCrew) -- The crew details, see
ServiceCrew
for more information. Dictionary of labor costs with the following:n_day_rate
,day_rate
,n_hourly_rate
, andhourly_rate
.charter_days (int) -- The number of days the servicing equipment can be chartered for.
capability (str) --
The type of capabilities the equipment contains. Must be one of:
RMT: remote (no actual equipment BUT no special implementation)
DRN: drone
CTV: crew transfer vessel/vehicle
SCN: small crane (i.e., cherry picker)
MCN: medium crane (i.e., field support vessel)
LCN: large crane (i.e., heavy lift vessel)
CAB: cabling vessel/vehicle
DSV: diving support vessel
TOW: tugboat or towing equipment
AHV: anchor handling vessel (tugboat that doesn't trigger tow-to-port)
VSG: vessel support group (group of vessels required for single operation)
speed (float) -- Maximum transit speed, km/hr.
tow_speed (float) --
The maximum transit speed when towing, km/hr.
Note
This is only required for when the servicing equipment is tugboat enabled for a tow-to-port scenario (capability = "TOW")
speed_reduction_factor (flaot) -- Reduction factor for traveling in inclement weather, default 0. When 0, travel is stopped when either max_windspeed_transport or max_waveheight_transport is reached, and when 1, speed is used.
max_windspeed_transport (float) -- Maximum windspeed for safe transport, m/s.
max_windspeed_repair (float) -- Maximum windspeed for safe operations, m/s.
max_waveheight_transport (float) -- Maximum waveheight for safe transport, m, default 1000 (land-based).
max_waveheight_repair (float) -- Maximum waveheight for safe operations, m, default 1000 (land-based).
mobilization_cost (float) -- Cost to mobilize the rig and crew, default 0.
mobilization_days (int) -- Number of days it takes to mobilize the equipment, default 0.
strategy (str) -- For any unscheduled maintenance servicing equipment, this determines the strategy for dispatching. Should be on of "downtime" or "requests".
strategy_threshold (str) -- For downtime-based scenarios, this is based on the operating level, and should be in the range (0, 1). For reqest-based scenarios, this is the maximum number of requests that are allowed to build up for any given type of unscheduled servicing equipment, should be an integer >= 1.
workday_start (int) -- The starting hour of a workshift, in 24 hour time.
workday_end (int) -- The ending hour of a workshift, in 24 hour time.
crew_transfer_time (float) -- The number of hours it takes to transfer the crew from the equipment to the system, e.g. how long does it take to transfer the crew from the CTV to the turbine, default 0.
onsite (bool) --
Indicator for if the rig and crew are based onsite.
Note
if the rig and crew are onsite be sure that the start and end dates represent the first and last day/month of the year, respectively, and the start and end years represent the fist and last year in the weather file.
method (str) -- Determines if the ship will do all maximum severity repairs first or do all the repairs at one turbine before going to the next, by default severity. Should by one of "severity" or "turbine".
unmoor_hours (int | float) --
The number of hours required to unmoor a floating offshore wind turbine in order to tow it to port, by default 0.
Note
Required for the tugboat/towing capability, otherwise unused.
reconnection_hours (int | float) --
The number of hours required to reconnect a floating offshore wind turbine after being towed back to site, by default 0.
Note
Required for the tugboat/towing capability, otherwise unused.
port_distance (int | float) -- The distance, in km, the equipment must travel to go between port and site, by default 0.
non_operational_start (str | datetime.datetime | None) -- The starting month and day, e.g., MM/DD, M/D, MM-DD, etc. for an annualized period of prohibited operations. When defined at the environment level or the port level, if a tugboat, an undefined or later starting date will be overridden, by default None.
non_operational_end (str | datetime.datetime | None) -- The ending month and day, e.g., MM/DD, M/D, MM-DD, etc. for an annualized period of prohibited operations. When defined at the environment level or the port level, if a tugboat, an undefined or earlier ending date will be overridden, by default None.
reduced_speed_start (str | datetime.datetime | None) -- The starting month and day, e.g., MM/DD, M/D, MM-DD, etc. for an annualized period of reduced speed operations. When defined at the environment level or the port level, if a tugboat, an undefined or later starting date will be overridden, by default None.
reduced_speed_end (str | datetime.datetime | None) -- The ending month and day, e.g., MM/DD, M/D, MM-DD, etc. for an annualized period of reduced speed operations. When defined at the environment level or the port level, if a tugboat, an undefined or earlier ending date will be overridden, by default None.
reduced_speed (float) -- The maximum operating speed during the annualized reduced speed operations. When defined at the environment level, an undefined or faster value will be overridden, by default 0.0.
-
non_operational_dates:
DatetimeIndex
#
-
non_operational_dates_set:
DatetimeIndex
#
-
reduced_speed_dates:
DatetimeIndex
#
-
non_stop_shift:
bool
#
Port Configuration#
- class wombat.core.data_classes.PortConfig(name, tugboats, crew, n_crews=1, max_operations=1, workday_start=-1, workday_end=-1, site_distance=0.0, annual_fee=0, non_operational_start=None, non_operational_end=None, reduced_speed_start=None, reduced_speed_end=None, reduced_speed=0)[source]#
Port configurations for offshore wind power plant scenarios.
- Parameters:
name (str) -- The name of the port, if multiple are used, then be sure this is unique.
tugboats (list[str]) --
file, or list of files to create the port's tugboats.
Note
Each tugboat is considered to be a tugboat + supporting vessels as the primary purpose to tow turbines between a repair port and site.
n_crews (int) -- The number of service crews available to be working on repairs simultaneously; each crew is able to service exactly one repair.
crew (ServiceCrew) -- The crew details, see
ServiceCrew
for more information. Dictionary of labor costs with the following:n_day_rate
,day_rate
,n_hourly_rate
, andhourly_rate
.max_operations (int) -- Total number of turbines the port can handle simultaneously.
workday_start (int) -- The starting hour of a workshift, in 24 hour time.
workday_end (int) -- The ending hour of a workshift, in 24 hour time.
site_distance (int | float) -- Distance, in km, a tugboat has to travel to get between site and port.
annual_fee (int | float) --
The annualized fee for access to the repair port that will be distributed monthly in the simulation and accounted for on the first of the month from the start of the simulation to the end of the simulation.
Note
Don't include this cost in both this category and either the
FixedCosts.operations_management_administration
bucket orFixedCosts.marine_management
category.non_operational_start (str | datetime.datetime | None) -- The starting month and day, e.g., MM/DD, M/D, MM-DD, etc. for an annualized period of prohibited operations. When defined at the port level, an undefined or later starting date will be overridden by the environment, and any associated tubboats will have this value overridden using the same logic, by default None.
non_operational_end (str | datetime.datetime | None) -- The ending month and day, e.g., MM/DD, M/D, MM-DD, etc. for an annualized period of prohibited operations. When defined at the port level, an undefined or earlier ending date will be overridden by the environment, and any associated tubboats will have this value overridden using the same logic, by default None.
reduced_speed_start (str | datetime.datetime | None) -- The starting month and day, e.g., MM/DD, M/D, MM-DD, etc. for an annualized period of reduced speed operations. When defined at the port level, an undefined or later starting date will be overridden by the environment, and any associated tubboats will have this value overridden using the same logic, by default None.
reduced_speed_end (str | datetime.datetime | None) -- The ending month and day, e.g., MM/DD, M/D, MM-DD, etc. for an annualized period of reduced speed operations. When defined at the port level, an undefined or earlier ending date will be overridden by the environment, and any associated tubboats will have this value overridden using the same logic, by default None.
reduced_speed (float) -- The maximum operating speed during the annualized reduced speed operations. When defined at the port level, an undefined or faster value will be overridden by the environment, and any associated tubboats will have this value overridden using the same logic, by default 0.0.
-
non_operational_dates:
DatetimeIndex
#
-
reduced_speed_dates:
DatetimeIndex
#
Wind Farm Support#
Subassembly Model#
- class wombat.core.data_classes.SubassemblyData(name, maintenance, failures, system_value, rng)[source]#
Data storage and validation class for the subassemblies.
- Parameters:
name (str) -- Name of the component/subassembly.
maintenance (list[dict[str, float | str]]) -- List of the maintenance classification dictionaries. This will be converted to a list of
Maintenance
objects in the post initialization hook.failures (dict[int, dict[str, float | str]]) -- Dictionary of failure classifications in a numerical (ordinal) categorization order. This will be converted to a dictionary of
Failure
objects in the post initialization hook.system_value (int | float) -- Turbine's cost of replacement. Used in case percentages of turbine cost are used in place of an absolute cost.
rng (Generator)
Wind Farm Map#
- class wombat.core.data_classes.WindFarmMap(substation_map, export_cables)[source]#
A list of the upstream connections for a turbine and its downstream connector.
- Parameters:
substation_map (list[str]) -- A dictionary mapping of each substation and its
SubstationMap
.export_cables (list[tuple[str, str]]) -- A list of the export cable connections.
- get_upstream_connections(substation, string_start, node, return_cables=True)[source]#
Retrieve the upstream turbines (and optionally cables) within the wind farm graph.
- Parameters:
substation (str) -- The substation's
System.id
.string_start (str) -- The
System.id
of the first turbine in the string.node (str) -- The
System.id
of the ending node for a cable connection.return_cables (bool) -- Indicates if the
Cable.id
should be generated for each of the turbines, by default True.
- Return type:
list
[str
] |tuple
[list
[str
],list
[str
]]- Returns:
list[str] | tuple[list[str], list[str]] -- A list of
System.id
for all of the upstream turbines ofnode
ifcables=False
, otherwise the upstream turbine and theCable.id
lists are returned.
- get_upstream_connections_from_substation(substation, return_cables=True, by_string=True)[source]#
Retrieve the upstream turbines (and optionally, cables) connected to a py:attr:substation in the wind farm graph.
- Parameters:
substation (str) -- The py:attr:System.id for the substation.
return_cables (bool, optional) -- Indicates if the
Cable.id
should be generated for each of the turbines, by default Trueby_string (bool, optional) -- Indicates if the list of turbines (and cables) should be a nested list for each string (py:obj:True), or as 1-D list (py:obj:False), by default True.
- Return type:
list
[str
] |tuple
[list
[str
],list
[str
]] |list
[list
[str
]] |tuple
[list
[list
[str
]],list
[list
[str
]]]- Returns:
list[str] | tuple[list[str], list[str]] -- A list of
System.id
for all of the upstream turbines ofnode
ifreturn_cables=False
, otherwise the upstream turbine and theCable.id
lists are returned. These are bifurcated in lists of lists for each string ifby_string=True
Substation Map#
- class wombat.core.data_classes.SubstationMap(string_starts, string_map, downstream)[source]#
A mapping of every
String
connected to a substation, excluding export connections to other substations.- Parameters:
string_starts (list[str]) -- A list of every first turbine's
System.id
in a string connected to the substation.string_map (dict[str, String]) -- A dictionary mapping each string starting turbine to its
String
data.downstream (str) -- The
System.id
of where the export cable leads. This should be the sameSystem.id
as the substation for an interconnection point, or another connecting substation.
String#
- class wombat.core.data_classes.String(start, upstream_map)[source]#
All of the connection information for a complete string in a wind farm.
- Parameters:
start (str) -- The substation's ID (
System.id
)upstream_map (dict[str, SubString]) -- The dictionary of each turbine ID in the string and it's upstream
SubString
.
Sub String#
Miscellaneous#
Fixed Cost Model#
- class wombat.core.data_classes.FixedCosts(operations=0, operations_management_administration=0, project_management_administration=0, marine_management=0, weather_forecasting=0, condition_monitoring=0, operating_facilities=0, environmental_health_safety_monitoring=0, insurance=0, brokers_fee=0, operations_all_risk=0, business_interruption=0, third_party_liability=0, storm_coverage=0, annual_leases_fees=0, submerge_land_lease_costs=0, transmission_charges_rights=0, onshore_electrical_maintenance=0, labor=0)[source]#
Fixed costs for operating a windfarm. All values are assumed to be in $/kW/yr.
- Parameters:
operations (float) -- Non-maintenance costs of operating the project. If a value is provided for this attribute, then it will zero out all other values, otherwise it will be set to the sum of the remaining values.
operations_management_administration (float) --
Activities necessary to forecast, dispatch, sell, and manage the production of power from the plant. Includes both the onsite and offsite personnel, software, and equipment to coordinate high voltage equipment, switching, port activities, and marine activities.
Note
This should only be used when not breaking down the cost into the following categories:
project_management_administration
,operation_management_administration
,marine_management
, and/orweather_forecasting
project_management_administration (float) -- Financial reporting, public relations, procurement, parts and stock management, H&SE management, training, subcontracts, and general administration.
marine_management (float) -- Coordination of port equipment, vessels, and personnel to carry out inspections and maintenance of generation and transmission equipment.
weather_forecasting (float) -- Daily forecast of metocean conditions used to plan maintenance visits and estimate project power production.
condition_monitoring (float) -- Monitoring of SCADA data from wind turbine components to optimize performance and identify component faults.
operating_facilities (float) -- Co-located offices, parts store, quayside facilities, helipad, refueling facilities, hanger (if necesssary), etc.
environmental_health_safety_monitoring (float) -- Coordination and monitoring to ensure compliance with HSE requirements during operations.
insurance (float) --
Insurance policies during operational period including All Risk Property, Buisness Interuption, Third Party Liability, and Brokers Fee, and Storm Coverage.
Note
This should only be used when not breaking down the cost into the following categories:
brokers_fee
,operations_all_risk
,business_interruption
,third_party_liability
, and/orstorm_coverage
brokers_fee (float) -- Fees for arranging the insurance package.
operations_all_risk (float) -- All Risk Property (physical damage). Sudden and unforseen physical loss or physical damage to teh plant/assets during the operational phase of a project.
business_interruption (float) -- Sudden and unforseen loss or physical damage to the plant/assets during the operational phase of a project causing an interruption.
third_party_liability (float) -- Liability imposed by law, and/or Express Contractual Liability, for bodily injury or property damage.
storm_coverage (float) -- Coverage from huricane and tropical storm events (tyipcally for Atlantic Coast projects).
annual_leases_fees (float) --
Ongoing payments, including but not limited to: payments to regulatory body for permission to operate at project site (terms defined within lease); payments to Transmission Systems Operators or Transmission Asseet Owners for rights to transport generated power.
Note
This should only be used when not breaking down the cost into the following categories:
submerge_land_lease_costs
and/ortransmission_charges_rights
submerge_land_lease_costs (float) -- Payments to submerged land owners for rights to build project during operations.
transmission_charges_rights (float) -- Any payments to Transmissions Systems Operators or Transmission Asset Owners for rights to transport generated power.
onshore_electrical_maintenance (float) --
Inspections of cables, transformer, switch gears, power compensation equipment, etc. and infrequent repairs
Warning
This should only be used if not modeling these as processes within the model. Currently, onshore modeling is not included.
labor (float) -- The costs associated with labor, if not being modeled through the simulated processes.