Skip to content

Commit

Permalink
added ability to run custom simulation
Browse files Browse the repository at this point in the history
  • Loading branch information
EC2 Default User committed Feb 28, 2024
1 parent b6e0f62 commit 4cf5d73
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 3 deletions.
9 changes: 8 additions & 1 deletion emerge/cli/get_observers.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
'substation_power': system_metrics.TimeseriesTotalPower,
'total_pvpower': system_metrics.TimeseriesTotalPVPower,
'total_powerloss': system_metrics.TimeseriesTotalLoss,
'node_timeseries_voltage': node_voltage_stats.NodeVoltageTimeSeries,
'node_voltage_stats': node_voltage_stats.NodeVoltageStats,
'node_voltage_bins': node_voltage_stats.NodeVoltageBins,
'line_loading_stats': line_loading_stats.LineLoadingStats,
Expand Down Expand Up @@ -41,7 +42,13 @@ class MetricEntry(BaseModel):

class SimulationMetrics(BaseModel):
"""Interface for defining simulation metrics."""

node_timeseries_voltage: Annotated[
MetricEntry,
Field(
MetricEntry(file_name="node_voltage_timeseries.csv"),
description="Statistics for node time series voltages.",
),
]

node_voltage_stats: Annotated[
MetricEntry,
Expand Down
5 changes: 3 additions & 2 deletions emerge/cli/single_model_custom_metrics.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,10 @@ def compute_single_model_timeseries_metrics(config: SingleModelSimulationInput):
start_time=datetime(2023,1,1,0,0,0),
end_time=datetime(2023,1,1,23,0,0),
profile_start_time=datetime(2023,1,1,0,0,0),
export_path="/home/ec2-user/panynj/exports/feb_9_test",
export_path="/home/ec2-user/panynj/exports/feb_12_test",
master_dss_file="/home/ec2-user/panynj/opendss_models/lga_east_end_substation/new_master.dss"
)
compute_single_model_timeseries_metrics(
config
)
)

17 changes: 17 additions & 0 deletions emerge/metrics/node_voltage_stats.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,23 @@ def get_voltage_df(dss_instance:dss):
dss_instance
))

class NodeVoltageTimeSeries(observer.MetricObserver):
def __init__(self):
self.metrics = {

}
def compute(self, dss_instance:dss) -> None:
df = powerflow_results.get_voltage_dataframe(dss_instance)
if not self.metrics:
self.metrics = {busname: [] for busname in df.index}
for key, value in df.to_dict()["voltage(pu)"].items():
self.metrics[key].append(value)

def get_metric(self) -> Dict:
return self.metrics



class NodeVoltageStats(observer.MetricObserver):
""" Class for computing node voltage statistical metrics. """

Expand Down

0 comments on commit 4cf5d73

Please sign in to comment.