from dataclasses import dataclass, field
from typing import List, Optional, Union
import pandas as pd
from shapely.geometry import Point
import pytz
from uuid import uuid4
[docs]
@dataclass
class Reservoir:
"""
Models a reservoir used in a hydroelectric power plant for storing water.
"""
capacity: float #: The total water capacity of the reservoir in cubic meters.
surface_area: float #: The surface area of the reservoir in square kilometers.
average_depth: float #: The average depth of the reservoir in meters.
location: str #: The geographical location of the reservoir.
[docs]
@dataclass(kw_only=True)
class HydroTurbine:
"""
Represents an individual hydro turbine in a hydroelectric power plant.
Attributes:
turbine_type (str): The type of the hydro turbine (e.g. Francis, Kaplan).
capacity (float): The maximum power output capacity of the turbine in megawatts (MW).
efficiency (float): The efficiency of the turbine as a percentage.
operational_since (Optional[int]): The year when the turbine became operational. Defaults to None.
"""
turbine_type: str
capacity: float
efficiency: float
operational_since: Optional[int] = None
[docs]
@dataclass
class HydroPowerPlant:
capacity: float # in megawatts (MW)
location: str # Geographical location
river: str # Name of the river or water body
annual_output: float # Annual energy output in MWh
turbine_type: str # Type of turbine used (e.g., Francis, Kaplan)
reservoir_capacity: Optional[float] = None # Capacity of the reservoir in cubic meters, if applicable
operational_since: Optional[int] = None # Year when the plant became operational
environmental_impact: Optional[str] = None # Description of any environmental impacts
maintenance_schedule: Optional[Union[pd.DataFrame, dict]] = None # Maintenance schedule data, if available