Solar

class emflow.assets.solar.FixedMount(surface_tilt: float = 0.0, surface_azimuth: float = 0.0)[source]

Bases: object

surface_tilt: float = 0.0
surface_azimuth: float = 0.0
class emflow.assets.solar.SingleAxisTrackerMount(axis_tilt: float = 0.0, axis_azimuth: float = 0.0, max_angle: float | tuple = 90.0, backtrack: bool = True, gcr: float = 0.2857142857142857, cross_axis_tilt: float = 0.0, racking_model: str | None = None, module_height: float | None = None)[source]

Bases: object

axis_tilt: float = 0.0
axis_azimuth: float = 0.0
max_angle: float | tuple = 90.0
backtrack: bool = True
gcr: float = 0.2857142857142857
cross_axis_tilt: float = 0.0
racking_model: str | None = None
module_height: float | None = None
class emflow.assets.solar.PVArray(*, id: uuid.UUID = <factory>, name: str | None = None, timeseries: list[timedatamodel.timeseries.TimeSeries] = <factory>, geometry: shapely.geometry.base.BaseGeometry | None = None, extra: dict = <factory>, lat: dataclasses.InitVar[float | None] = None, lon: dataclasses.InitVar[float | None] = None, commissioning_date: datetime.date | None = None, members: list[energydatamodel.element.Element] = <factory>, tz: datetime.tzinfo | None = None, capacity: float | None = None, surface_azimuth: float | None = None, surface_tilt: float | None = None, surface_area: float | None = None, efficiency: float | None = None, module: str | None = None, module_type: str = 'glass_polymer', module_parameters: dict | pandas.Series | None = None, temperature_model_parameters: dict | pandas.Series | None = None)[source]

Bases: NodeAsset

capacity: float | None = None
surface_azimuth: float | None = None
surface_tilt: float | None = None
surface_area: float | None = None
efficiency: float | None = None
module: str | None = None
module_type: str = 'glass_polymer'
module_parameters: dict | Series | None = None
temperature_model_parameters: dict | Series | None = None
add_child(obj: Element) None

Attach a child. Override in subclasses that support children.

property centroid: Point | None

Centroid of geometry, or None if no geometry.

children() list

Child elements for tree walking. Override in subclasses with children.

commissioning_date: date | None = None
classmethod from_json(data: dict) Element

Deserialize from a JSON-compatible dict.

geometry: BaseGeometry | None = None
geometry_to_geojson(geometry)
index()

Build a dict[UUID, Element] index of the subtree rooted at self.

Use to resolve Reference objects against this tree.

lat: InitVar[float | None] = None
property latitude: float | None

Latitude, if geometry is a shapely Point; else None.

lon: InitVar[float | None] = None
property longitude: float | None

Longitude, if geometry is a shapely Point; else None.

name: str | None = None
to_dataframe()
to_geojson(exclude_none: bool = True)
to_json(*, exclude_fields: set | None = None) dict

Serialize to a JSON-compatible dict.

to_properties() dict

Domain-specific fields as a dict (excludes infra + children fields).

to_tree() str

Return the hierarchy rendered as an indented tree string.

Use print(element.to_tree()) to display it. In a notebook, printing the element directly (element) also renders the tree via __repr__.

tz: datetime.tzinfo | None = None
members: list[Element]
id: UUID
timeseries: list[TimeSeries]
extra: dict
class emflow.assets.solar.PVSystem(*, id: ~uuid.UUID = <factory>, name: str | None = None, timeseries: list[~timedatamodel.timeseries.TimeSeries] = <factory>, geometry: ~shapely.geometry.base.BaseGeometry | None = None, extra: dict = <factory>, lat: dataclasses.InitVar[float | None] = None, lon: dataclasses.InitVar[float | None] = None, commissioning_date: ~datetime.date | None = None, members: list[~energydatamodel.element.Element] = <factory>, tz: ~datetime.tzinfo | None = None, capacity: float | None = None, surface_azimuth: float | None = None, surface_tilt: float | None = None, albedo: float | None = None, surface_type: str | None = None, module_parameters: dict | None = None, inverter_parameters: dict | None = None, module_type: str = 'glass_polymer', racking_model: str = 'open_rack')[source]

Bases: NodeAsset

A PV system β€” an Asset that contains PVArray members.

Stored in the inherited members list. Attach arrays explicitly with pv_system.members.append(PVArray(...)) or via add_child(...) β€” no auto-creation.

capacity: float | None = None
surface_azimuth: float | None = None
surface_tilt: float | None = None
albedo: float | None = None
surface_type: str | None = None
module_parameters: dict | None = None
inverter_parameters: dict | None = None
module_type: str = 'glass_polymer'
racking_model: str = 'open_rack'
to_pvlib(**kwargs)[source]
add_child(obj: Element) None

Attach a child. Override in subclasses that support children.

property centroid: Point | None

Centroid of geometry, or None if no geometry.

children() list

Child elements for tree walking. Override in subclasses with children.

commissioning_date: date | None = None
classmethod from_json(data: dict) Element

Deserialize from a JSON-compatible dict.

geometry: BaseGeometry | None = None
geometry_to_geojson(geometry)
index()

Build a dict[UUID, Element] index of the subtree rooted at self.

Use to resolve Reference objects against this tree.

lat: InitVar[float | None] = None
property latitude: float | None

Latitude, if geometry is a shapely Point; else None.

lon: InitVar[float | None] = None
property longitude: float | None

Longitude, if geometry is a shapely Point; else None.

name: str | None = None
to_dataframe()
to_geojson(exclude_none: bool = True)
to_json(*, exclude_fields: set | None = None) dict

Serialize to a JSON-compatible dict.

to_properties() dict

Domain-specific fields as a dict (excludes infra + children fields).

to_tree() str

Return the hierarchy rendered as an indented tree string.

Use print(element.to_tree()) to display it. In a notebook, printing the element directly (element) also renders the tree via __repr__.

tz: datetime.tzinfo | None = None
members: list[Element]
id: UUID
timeseries: list[TimeSeries]
extra: dict
class emflow.assets.solar.SolarPowerArea(*, id: ~uuid.UUID = <factory>, name: str | None = None, timeseries: list[~timedatamodel.timeseries.TimeSeries] = <factory>, geometry: ~shapely.geometry.base.BaseGeometry | None = None, extra: dict = <factory>, lat: dataclasses.InitVar[float | None] = None, lon: dataclasses.InitVar[float | None] = None, commissioning_date: ~datetime.date | None = None, members: list[~energydatamodel.element.Element] = <factory>, tz: ~datetime.tzinfo | None = None, capacity: float | ~pandas.DataFrame | None = None)[source]

Bases: NodeAsset

A solar-power-potential area.

The area’s polygon lives in the inherited geometry field.

capacity: float | DataFrame | None = None
to_geojson(exclude_none: bool = True)[source]
property geojson
add_child(obj: Element) None

Attach a child. Override in subclasses that support children.

property centroid: Point | None

Centroid of geometry, or None if no geometry.

children() list

Child elements for tree walking. Override in subclasses with children.

commissioning_date: date | None = None
classmethod from_json(data: dict) Element

Deserialize from a JSON-compatible dict.

geometry: BaseGeometry | None = None
geometry_to_geojson(geometry)
index()

Build a dict[UUID, Element] index of the subtree rooted at self.

Use to resolve Reference objects against this tree.

lat: InitVar[float | None] = None
property latitude: float | None

Latitude, if geometry is a shapely Point; else None.

lon: InitVar[float | None] = None
property longitude: float | None

Longitude, if geometry is a shapely Point; else None.

name: str | None = None
to_dataframe()
to_json(*, exclude_fields: set | None = None) dict

Serialize to a JSON-compatible dict.

to_properties() dict

Domain-specific fields as a dict (excludes infra + children fields).

to_tree() str

Return the hierarchy rendered as an indented tree string.

Use print(element.to_tree()) to display it. In a notebook, printing the element directly (element) also renders the tree via __repr__.

tz: datetime.tzinfo | None = None
members: list[Element]
id: UUID
timeseries: list[TimeSeries]
extra: dict