From 9998598e7406151f3f68c8a1044124b239158c8e Mon Sep 17 00:00:00 2001 From: Daniel Thom Date: Wed, 28 Dec 2022 18:03:53 -0700 Subject: [PATCH 1/9] Support hosting capacity with pure snapshot mode The previous code only supported snapshots with load shapes. --- disco/cli/config_snapshot.py | 25 ++- disco/cli/make_summary_tables.py | 8 +- disco/pipelines/base.py | 2 + disco/pipelines/creator.py | 24 +-- .../source_tree_1/source_tree_1_model.py | 2 +- disco/storage/ingesters.py | 2 +- disco/storage/parsers.py | 21 +- tests/conftest.py | 7 + .../substations-no-load-shapes/format.toml | 1 + .../p1uhs21_1247--p1udt5257/Buscoords.dss | 75 +++++++ .../p1uhs21_1247--p1udt5257/LineCodes.dss | 18 ++ .../p1uhs21_1247--p1udt5257/Lines.dss | 118 ++++++++++ .../p1uhs21_1247--p1udt5257/LoadShapes.dss | 57 +++++ .../p1uhs21_1247--p1udt5257/Loads.dss | 58 +++++ .../p1uhs21_1247--p1udt5257/Master.dss | 16 ++ .../p1uhs21_1247--p1udt5257/PVShapes.dss | 203 ++++++++++++++++++ .../p1uhs21_1247--p1udt5257/Transformers.dss | 38 ++++ .../random/1/15/PVSystems.dss | 4 + .../random/1/5/PVSystems.dss | 3 + .../hc_pv_deployments/random/1/pv_config.json | 20 ++ .../random/2/15/PVSystems.dss | 4 + .../random/2/5/PVSystems.dss | 3 + .../hc_pv_deployments/random/2/pv_config.json | 20 ++ .../metadata/loads_sum_groups.json | 43 ++++ .../metadata/pv_systems_sum_groups.json | 20 ++ tests/integration/test_pipelines.py | 106 +++++++-- 26 files changed, 844 insertions(+), 54 deletions(-) create mode 100644 tests/data/smart-ds/substations-no-load-shapes/format.toml create mode 100755 tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/Buscoords.dss create mode 100755 tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/LineCodes.dss create mode 100755 tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/Lines.dss create mode 100755 tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/LoadShapes.dss create mode 100755 tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/Loads.dss create mode 100755 tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/Master.dss create mode 100644 tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/PVShapes.dss create mode 100755 tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/Transformers.dss create mode 100644 tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/hc_pv_deployments/random/1/15/PVSystems.dss create mode 100644 tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/hc_pv_deployments/random/1/5/PVSystems.dss create mode 100644 tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/hc_pv_deployments/random/1/pv_config.json create mode 100644 tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/hc_pv_deployments/random/2/15/PVSystems.dss create mode 100644 tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/hc_pv_deployments/random/2/5/PVSystems.dss create mode 100644 tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/hc_pv_deployments/random/2/pv_config.json create mode 100644 tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/metadata/loads_sum_groups.json create mode 100644 tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/metadata/pv_systems_sum_groups.json diff --git a/disco/cli/config_snapshot.py b/disco/cli/config_snapshot.py index 85669e7f..00f963a9 100644 --- a/disco/cli/config_snapshot.py +++ b/disco/cli/config_snapshot.py @@ -197,7 +197,7 @@ def snapshot( for i in indices_to_pop.reverse(): scenarios_config.pop(i) logger.info( - "Excluding %s scenarios because there are no pydss controllers.", CONTROL_MODE_SCENARIO + "Excluding %s scenario because there are no pydss controllers.", CONTROL_MODE_SCENARIO ) config.set_pydss_config(ConfigType.SCENARIOS, scenarios_config) @@ -241,18 +241,19 @@ def make_simulation_config( if report["name"] in ("Thermal Metrics", "Voltage Metrics"): report["store_per_element_data"] = store_per_element_data + names = [] + scenarios = [] + if not include_control_mode and not include_pf1: + logger.error("At least one of 'include_pf1' and 'include_control_mode' must be set.") + sys.exit(1) + if include_control_mode: + names.append(CONTROL_MODE_SCENARIO) + if include_pf1: + names.append(PF1_SCENARIO) + if with_loadshape: simulation_config["project"]["simulation_type"] = SimulationType.QSTS.value - names = [] - if not include_control_mode and not include_pf1: - logger.error("At least one of 'include_pf1' and 'include_control_mode' must be set.") - sys.exit(1) - if include_control_mode: - names.append(CONTROL_MODE_SCENARIO) - if include_pf1: - names.append(PF1_SCENARIO) if auto_select_time_points: - scenarios = [] for scenario_name in names: for mode in SnapshotTimePointSelectionMode: if mode == SnapshotTimePointSelectionMode.NONE: @@ -271,11 +272,13 @@ def make_simulation_config( else: exports = {} if exports_filename is None else load_data(exports_filename) simulation_config["project"]["simulation_type"] = SimulationType.SNAPSHOT.value + scenarios = [PyDssConfiguration.make_default_pydss_scenario(x) for x in names] scenarios = [ PyDssConfiguration.make_default_pydss_scenario( - "scenario", + x, exports=exports, ) + for x in names ] return simulation_config, scenarios diff --git a/disco/cli/make_summary_tables.py b/disco/cli/make_summary_tables.py index 55785d38..ca1492a4 100644 --- a/disco/cli/make_summary_tables.py +++ b/disco/cli/make_summary_tables.py @@ -236,8 +236,12 @@ def get_voltage_metrics(results: PyDssResults, job_info: JobInfo): def get_snapshot_time_points_table(results: PyDssResults, job_info: JobInfo): """Return the snapshot time points determined by each job.""" - snapshot_time_points_table = [] - data = json.loads(results.read_file(f"Exports/snapshot_time_points.json")) + try: + data = json.loads(results.read_file(f"Exports/snapshot_time_points.json")) + except KeyError: + # Time points are only available if load shapes are used. + return [] + row = {"name": job_info.name} for time_point in SNAPSHOT_TIME_POINT_MAPPING: timestamp = data.get(SNAPSHOT_TIME_POINT_MAPPING[time_point]) diff --git a/disco/pipelines/base.py b/disco/pipelines/base.py index 48501034..a9cab02c 100644 --- a/disco/pipelines/base.py +++ b/disco/pipelines/base.py @@ -266,6 +266,7 @@ def create_postprocess_auto_config_text_file(self): text_file = self.get_postprocess_auto_config_text_file() with open(text_file, "w") as f: f.write(auto_config_command) + f.write("\n") return text_file def create_postprocess_command_text_file(self): @@ -273,6 +274,7 @@ def create_postprocess_command_text_file(self): command = self.make_postprocess_command() with open(text_file, "w") as f: f.write(command) + f.write("\n") return text_file def make_prescreen_stage(self): diff --git a/disco/pipelines/creator.py b/disco/pipelines/creator.py index b9a9f7ff..9e8c8f2f 100644 --- a/disco/pipelines/creator.py +++ b/disco/pipelines/creator.py @@ -76,21 +76,17 @@ def make_postprocess_command(self): pf1 = config_params["pf1"] base_cmd = f"disco-internal compute-hosting-capacity {inputs}" plot_cmd = f"disco-internal plot {inputs}" - if with_loadshape: - scenarios = [CONTROL_MODE_SCENARIO] - if pf1: - scenarios.append(PF1_SCENARIO) - if auto_select_time_points: - for scenario in scenarios: - for mode in SnapshotTimePointSelectionMode: - if mode != SnapshotTimePointSelectionMode.NONE: - commands.append(f"{base_cmd} --scenario={scenario} --time-point={mode.value}") - else: - for scenario in scenarios: - commands.append(f"{base_cmd} --scenario={scenario}") + scenarios = [CONTROL_MODE_SCENARIO] + if pf1: + scenarios.append(PF1_SCENARIO) + if with_loadshape and auto_select_time_points: + for scenario in scenarios: + for mode in SnapshotTimePointSelectionMode: + if mode != SnapshotTimePointSelectionMode.NONE: + commands.append(f"{base_cmd} --scenario={scenario} --time-point={mode.value}") else: - commands.append(f"{base_cmd} --scenario=scenario") - scenarios = ["scenario"] + for scenario in scenarios: + commands.append(f"{base_cmd} --scenario={scenario}") # Plot for scenario in scenarios: diff --git a/disco/sources/source_tree_1/source_tree_1_model.py b/disco/sources/source_tree_1/source_tree_1_model.py index aa35daf5..7f3bb5a1 100644 --- a/disco/sources/source_tree_1/source_tree_1_model.py +++ b/disco/sources/source_tree_1/source_tree_1_model.py @@ -824,7 +824,7 @@ def get_pydss_controller_and_profiles(pv_configs): pv_config["pydss_controller"] ) pydss_controllers.add(ctrl) - pv_profiles[pv_config["name"]] = pv_config["pv_profile"] + pv_profiles[pv_config["name"]] = pv_config.get("pv_profile") if len(pydss_controllers) > 1: raise Exception( diff --git a/disco/storage/ingesters.py b/disco/storage/ingesters.py index 7132d1f3..c4450849 100644 --- a/disco/storage/ingesters.py +++ b/disco/storage/ingesters.py @@ -125,7 +125,7 @@ def ingest(self, objects): columns = self.data_class.__table__.columns.keys() data = [tuple([item[column] for column in columns]) for item in objects] self._perform_ingestion(columns=columns, data=data) - if "id" in objects[0]: + if objects and "id" in objects[0]: indexes = {self._generate_identifier(item): item["id"] for item in objects} else: indexes = [] diff --git a/disco/storage/parsers.py b/disco/storage/parsers.py index ec01f542..b2d9038c 100644 --- a/disco/storage/parsers.py +++ b/disco/storage/parsers.py @@ -174,9 +174,15 @@ def parse(self, config_file, snapshot_time_points_table): return self._parse_scenarios_from_config_file(config_file) def _parse_scenarios_from_snapshot_time_points(self, snapshot_time_points_table): - mapping = {job["name"]: job for job in self.jobs} - df = pd.read_csv(snapshot_time_points_table) - time_points = {item["name"]: item for item in df.to_dict(orient="records")} + df = None + try: + df = pd.read_csv(snapshot_time_points_table) + except pd.errors.EmptyDataError: + pass + if df is None or df.empty: + time_points = {} + else: + time_points = {item["name"]: item for item in df.to_dict(orient="records")} scenarios = [] for job in self.jobs: @@ -193,7 +199,7 @@ def _parse_scenarios_from_snapshot_time_points(self, snapshot_time_points_table) "job_id": job["id"], "simulation_type": "snapshot", "name": _scenario_name, - "start_time": tp[mode.value], + "start_time": tp.get(mode.value), "end_time": None }) return scenarios @@ -421,8 +427,11 @@ def __init__(self, report, jobs): def parse(self, output): """Parse time points data for snapshot simulation""" logger.info("Parsing data - 'snapshot_time_points'...") - df = pd.read_csv(output.snapshot_time_points_table) - data = df.to_dict(orient="records") + try: + df = pd.read_csv(output.snapshot_time_points_table) + data = df.to_dict(orient="records") + except pd.errors.EmptyDataError: + data = {} data = self._set_record_index(data) return data diff --git a/tests/conftest.py b/tests/conftest.py index 7369cdf5..7806518b 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -41,3 +41,10 @@ def smart_ds_substations(): return os.path.join( os.path.dirname(__file__), "data", "smart-ds", "substations" ) + + +@pytest.fixture +def smart_ds_substations_no_loadshapes(): + return os.path.join( + os.path.dirname(__file__), "data", "smart-ds", "substations-no-load-shapes" + ) diff --git a/tests/data/smart-ds/substations-no-load-shapes/format.toml b/tests/data/smart-ds/substations-no-load-shapes/format.toml new file mode 100644 index 00000000..58a3891f --- /dev/null +++ b/tests/data/smart-ds/substations-no-load-shapes/format.toml @@ -0,0 +1 @@ +type = "SourceTree1Model" diff --git a/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/Buscoords.dss b/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/Buscoords.dss new file mode 100755 index 00000000..eec1fd3d --- /dev/null +++ b/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/Buscoords.dss @@ -0,0 +1,75 @@ +p1udm16432 636391.0 3373903.0 +p1udm31921 636334.925 3373890.525 +p1udm40050 636331.415 3373884.675 +p1udt2569 636296.634325 3373735.4514315 +p1udt2569lv 636292.0541 3373734.40681 +p1udt4186 636157.96071 3373564.57017 +p1udt4186lv 636154.2346825 3373567.4315155 +p1udt4688 636379.345774 3373900.685675 +p1udt4688lv 636378.654226 3373905.314325 +p1udt5257 636261.2346825 3373483.4315155 +p1udt5257lv 636256.80464 3373484.998295 +p1udt8738 636317.345774 3373849.685675 +p1udt8738lv 636316.654226 3373854.314325 +p1udt9514 636348.345774 3373894.685675 +p1udt9514lv 636347.654226 3373899.314325 +p1udt9880 636640.654226 3373864.314325 +p1udt9880lv 636641.345774 3373859.685675 +p1udt11629 636474.345774 3373888.685675 +p1udt11629lv 636473.654226 3373893.314325 +p1udt12324 636323.345774 3373867.685675 +p1udt12324lv 636322.654226 3373872.314325 +p1udt14166 636457.345774 3373891.685675 +p1udt14166lv 636456.654226 3373896.314325 +p1udt17537 636422.345774 3373896.685675 +p1udt17537lv 636421.654226 3373901.314325 +p1udt18129 636286.654226 3373660.314325 +p1udt18129lv 636287.345774 3373655.685675 +p1udt19673 636395.80464 3373514.998295 +p1udt19673lv 636400.2346825 3373513.4315155 +p1udt21477 636301.328625 3373735.347191 +p1udt21477lv 636305.98295 3373734.7945675 +p1udt21744 636281.654226 3373621.314325 +p1udt21744lv 636282.345774 3373616.685675 +p1udt24034 636424.345774 3373658.685675 +p1udt24034lv 636423.654226 3373663.314325 +p1udt24044 636266.99145965 3373522.01314495 +p1udt24044lv 636269.059915 3373526.743765 +p1udt24356 636358.80464 3373436.998295 +p1udt24356lv 636363.2346825 3373435.4315155 +p1udt24768 636410.96071 3373570.57017 +p1udt24768lv 636407.2346825 3373573.4315155 +p1ulv2723 636242.0 3373751.0 +p1ulv4595 636149.80464 3373568.998295 +p1ulv5237 636380.0 3373963.0 +p1ulv5951 636212.0 3373493.0 +p1ulv10887 636283.0 3373848.0 +p1ulv12152 636320.0 3373952.0 +p1ulv12765 636666.0 3373909.0 +p1ulv15856 636480.345774 3373937.685675 +p1ulv17169 636219.0 3373922.0 +p1ulv19767 636660.0 3373901.0 +p1ulv21045 636453.0 3373884.0 +p1ulv24237 636327.0 3373957.0 +p1ulv29261 636235.0 3373951.0 +p1ulv29904 636422.0 3373929.0 +p1ulv31790 636196.0 3373672.0 +p1ulv36321 636278.0 3373895.0 +p1ulv37000 636403.96071 3373510.57017 +p1ulv44471 636343.0 3373731.0 +p1ulv45758 636229.0 3373623.0 +p1ulv53232 636363.0 3373858.0 +p1ulv57547 636447.0 3373635.0 +p1ulv57596 636181.0 3373534.0 +p1ulv59420 636366.96071 3373432.57017 +p1ulv61813 636402.80464 3373574.998295 +p1ulv61814 636397.0 3373967.0 +p1ulv62436 636212.0 3373756.0 +p1ulv63094 636402.0 3373688.0 +p1ulv64357 636256.0 3373924.0 +p1ulv64358 636371.0 3373985.0 +p1udt24044-p1udt4186x 636264.97616 3373517.25721 +p1udt19673-p1udt24044x 636262.24122 3373524.031835 +p1udt21744-p1udt24044x 636271.73122 3373519.95406 +p1udt24356-p1udt5257x 636264.96071 3373480.57017 +p1udt5257-p1uhs21_1247x 636287.329925 3373377.642027 diff --git a/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/LineCodes.dss b/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/LineCodes.dss new file mode 100755 index 00000000..1018f3f4 --- /dev/null +++ b/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/LineCodes.dss @@ -0,0 +1,18 @@ +New Linecode.1P_OH_AL_4/0_Zuzara_0_416_0_2_2_2_2_2 units=km nphases=2 Faultrate=0.1 Rmatrix=(0.4728 0.20209999999999997 | 0.20209999999999997 0.4728 ) Xmatrix=(0.21353333333333335 0.12473333333333335 | 0.12473333333333335 0.21353333333333335 ) Cmatrix=(41.3578 -20.447400000000002 | -20.447400000000002 41.3578 ) normamps=115.0 + +New Linecode.1P_OH_AL_4_Periwinkle_0_416_0_2_2_2_2_2 units=km nphases=2 Faultrate=0.1 Rmatrix=(1.7609666666666666 0.3959666666666668 | 0.3959666666666668 1.7609666666666666 ) Xmatrix=(0.6698333333333334 0.5686333333333333 | 0.5686333333333333 0.6698333333333334 ) Cmatrix=(36.92503333333334 -17.558966666666667 | -17.558966666666667 36.92503333333334 ) normamps=115.0 + +New Linecode.1P_OH_AL_2/0_Rucina_0_416_0_2_2_2_2_2 units=km nphases=2 Faultrate=0.1 Rmatrix=(0.7166333333333332 0.28753333333333336 | 0.28753333333333336 0.7166333333333332 ) Xmatrix=(0.28883333333333333 0.1932333333333333 | 0.1932333333333333 0.28883333333333333 ) Cmatrix=(39.3595 -19.342100000000002 | -19.342100000000002 39.3595 ) normamps=115.0 + +New Linecode.1P_OH_AL_ACSR_#2_Sparrow_12_47_0_1_1_1_1_1 units=km nphases=1 Faultrate=0.1 Rmatrix=(1.0412 ) Xmatrix=(0.7627 ) Cmatrix=(7.69673 ) normamps=165.0 + +New Linecode.3P_UG_AL_350kcmil_15_0_416_0_3_3_3_3_3 units=km nphases=3 Faultrate=0.1 Rmatrix=(0.3388667 0.1744667 0.1744667 | 0.1744667 0.3388667 0.1744667 | 0.1744667 0.1744667 0.3388667 ) Xmatrix=(0.5126 0.2912 0.2912 | 0.2912 0.5126 0.2912 | 0.2912 0.2912 0.5126 ) Cmatrix=(164.365 -81.63499999999999 -81.63499999999999 | -81.63499999999999 164.365 -81.63499999999999 | -81.63499999999999 -81.63499999999999 164.365 ) normamps=370.0 + +New Linecode.3P_OH_AL_ACSR_4/0_Penguin_12_47_0_3_3_3_3_3 units=km nphases=3 Faultrate=0.1 Rmatrix=(0.3635667 0.09006667 0.09006667 | 0.09006667 0.3635667 0.09006667 | 0.09006667 0.09006667 0.3635667 ) Xmatrix=(0.6385333 0.2202333 0.2202333 | 0.2202333 0.6385333 0.2202333 | 0.2202333 0.2202333 0.6385333 ) Cmatrix=(7.448267 -3.1846329999999994 -3.1846329999999994 | -3.1846329999999994 7.448267 -3.1846329999999994 | -3.1846329999999994 -3.1846329999999994 7.448267 ) normamps=325.0 + +New Linecode.fuse_1_1_1_1_1 units=km nphases=1 Faultrate=0.1 Rmatrix=(0.001 ) Xmatrix=(0.001 ) Cmatrix=(3.4 ) normamps=325.0 + +New Linecode.fuse_1_6_1_1_1_1 units=km nphases=1 Faultrate=0.1 Rmatrix=(0.001 ) Xmatrix=(0.001 ) Cmatrix=(3.4 ) normamps=165.0 + +New Linecode.fuse_1_6_1_4_1_1_1 units=km nphases=1 Faultrate=0.1 Rmatrix=(0.001 ) Xmatrix=(0.001 ) Cmatrix=(3.4 ) normamps=115.0 + diff --git a/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/Lines.dss b/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/Lines.dss new file mode 100755 index 00000000..b2eeda8f --- /dev/null +++ b/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/Lines.dss @@ -0,0 +1,118 @@ +New Line.l(r:p1udt2569lv-p1ulv2723) Units=km Length=0.0592285 bus1=p1udt2569lv.1.2 bus2=p1ulv2723.1.2 switch=n enabled=y phases=2 Linecode=1P_OH_AL_4/0_Zuzara_0_416_0_2_2_2_2_2 + +New Line.l(r:p1udt2569lv-p1ulv62436) Units=km Length=0.0896316 bus1=p1udt2569lv.1.2 bus2=p1ulv62436.1.2 switch=n enabled=y phases=2 Linecode=1P_OH_AL_4/0_Zuzara_0_416_0_2_2_2_2_2 + +New Line.l(r:p1udt4186lv-p1ulv4595) Units=km Length=0.001 bus1=p1udt4186lv.1.2 bus2=p1ulv4595.1.2 switch=n enabled=y phases=2 Linecode=1P_OH_AL_4_Periwinkle_0_416_0_2_2_2_2_2 + +New Line.l(r:p1udt4688lv-p1ulv5237) Units=km Length=0.05955 bus1=p1udt4688lv.1.2 bus2=p1ulv5237.1.2 switch=n enabled=y phases=2 Linecode=1P_OH_AL_4/0_Zuzara_0_416_0_2_2_2_2_2 + +New Line.l(r:p1udt4688lv-p1ulv64358) Units=km Length=0.0822948 bus1=p1udt4688lv.1.2 bus2=p1ulv64358.1.2 switch=n enabled=y phases=2 Linecode=1P_OH_AL_4/0_Zuzara_0_416_0_2_2_2_2_2 + +New Line.l(r:p1udm16432-p1ulv61814) Units=km Length=0.0643863 bus1=p1udm16432.1.2 bus2=p1ulv61814.1.2 switch=n enabled=y phases=2 Linecode=1P_OH_AL_4/0_Zuzara_0_416_0_2_2_2_2_2 + +New Line.l(r:p1udm16432-p1udt4688lv) Units=km Length=0.0127133 bus1=p1udt4688lv.1.2 bus2=p1udm16432.1.2 switch=n enabled=y phases=2 Linecode=1P_OH_AL_2/0_Rucina_0_416_0_2_2_2_2_2 + +New Line.l(r:p1udt5257lv-p1ulv5951) Units=km Length=0.0495724 bus1=p1udt5257lv.1.2 bus2=p1ulv5951.1.2 switch=n enabled=y phases=2 Linecode=1P_OH_AL_4/0_Zuzara_0_416_0_2_2_2_2_2 + +New Line.l(r:p1udt8738lv-p1ulv10887) Units=km Length=0.0339478 bus1=p1udt8738lv.1.2 bus2=p1ulv10887.1.2 switch=n enabled=y phases=2 Linecode=1P_OH_AL_4/0_Zuzara_0_416_0_2_2_2_2_2 + +New Line.l(r:p1udt9514lv-p1ulv12152) Units=km Length=0.0615159 bus1=p1udt9514lv.1.2 bus2=p1ulv12152.1.2 switch=n enabled=y phases=2 Linecode=1P_OH_AL_4/0_Zuzara_0_416_0_2_2_2_2_2 + +New Line.l(r:p1udt9514lv-p1ulv24237) Units=km Length=0.0631614 bus1=p1udt9514lv.1.2 bus2=p1ulv24237.1.2 switch=n enabled=y phases=2 Linecode=1P_OH_AL_4/0_Zuzara_0_416_0_2_2_2_2_2 + +New Line.l(r:p1udm31921-p1ulv53232) Units=km Length=0.0411191 bus1=p1udm31921.1.2 bus2=p1ulv53232.1.2 switch=n enabled=y phases=2 Linecode=1P_OH_AL_4/0_Zuzara_0_416_0_2_2_2_2_2 + +New Line.l(r:p1udm31921-p1udt9514lv) Units=km Length=0.0197298 bus1=p1udt9514lv.1.2 bus2=p1udm31921.1.2 switch=n enabled=y phases=2 Linecode=1P_OH_AL_2/0_Rucina_0_416_0_2_2_2_2_2 + +New Line.l(r:p1udt9880lv-p1ulv12765) Units=km Length=0.0529993 bus1=p1udt9880lv.1.2 bus2=p1ulv12765.1.2 switch=n enabled=y phases=2 Linecode=1P_OH_AL_4/0_Zuzara_0_416_0_2_2_2_2_2 + +New Line.l(r:p1udt9880lv-p1ulv19767) Units=km Length=0.0432225 bus1=p1udt9880lv.1.2 bus2=p1ulv19767.1.2 switch=n enabled=y phases=2 Linecode=1P_OH_AL_4/0_Zuzara_0_416_0_2_2_2_2_2 + +New Line.l(r:p1udt11629lv-p1ulv15856) Units=km Length=0.0490592 bus1=p1udt11629lv.1.2 bus2=p1ulv15856.1.2 switch=n enabled=y phases=2 Linecode=1P_OH_AL_4/0_Zuzara_0_416_0_2_2_2_2_2 + +New Line.l(r:p1udt12324lv-p1ulv17169) Units=km Length=0.11543100000000002 bus1=p1udt12324lv.1.2 bus2=p1ulv17169.1.2 switch=n enabled=y phases=2 Linecode=1P_OH_AL_4/0_Zuzara_0_416_0_2_2_2_2_2 + +New Line.l(r:p1udt12324lv-p1ulv36321) Units=km Length=0.051076 bus1=p1udt12324lv.1.2 bus2=p1ulv36321.1.2 switch=n enabled=y phases=2 Linecode=1P_OH_AL_4/0_Zuzara_0_416_0_2_2_2_2_2 + +New Line.l(r:p1udt12324lv-p1ulv64357) Units=km Length=0.0857224 bus1=p1udt12324lv.1.2 bus2=p1ulv64357.1.2 switch=n enabled=y phases=2 Linecode=1P_OH_AL_4/0_Zuzara_0_416_0_2_2_2_2_2 + +New Line.l(r:p1udm40050-p1ulv29261) Units=km Length=0.117343 bus1=p1udm40050.1.2 bus2=p1ulv29261.1.2 switch=n enabled=y phases=2 Linecode=1P_OH_AL_4/0_Zuzara_0_416_0_2_2_2_2_2 + +New Line.l(r:p1udm40050-p1udt12324lv) Units=km Length=0.0174065 bus1=p1udt12324lv.1.2 bus2=p1udm40050.1.2 switch=n enabled=y phases=2 Linecode=1P_OH_AL_2/0_Rucina_0_416_0_2_2_2_2_2 + +New Line.l(r:p1udt14166lv-p1ulv21045) Units=km Length=0.0107562 bus1=p1udt14166lv.1.2 bus2=p1ulv21045.1.2 switch=n enabled=y phases=2 Linecode=1P_OH_AL_2/0_Rucina_0_416_0_2_2_2_2_2 + +New Line.l(r:p1udt17537lv-p1ulv29904) Units=km Length=0.0300779 bus1=p1udt17537lv.1.2 bus2=p1ulv29904.1.2 switch=n enabled=y phases=2 Linecode=1P_OH_AL_4/0_Zuzara_0_416_0_2_2_2_2_2 + +New Line.l(r:p1udt18129lv-p1ulv31790) Units=km Length=0.0925765 bus1=p1udt18129lv.1.2 bus2=p1ulv31790.1.2 switch=n enabled=y phases=2 Linecode=1P_OH_AL_4/0_Zuzara_0_416_0_2_2_2_2_2 + +New Line.l(r:p1udt19673lv-p1ulv37000) Units=km Length=0.001 bus1=p1udt19673lv.1.2 bus2=p1ulv37000.1.2 switch=n enabled=y phases=2 Linecode=1P_OH_AL_4_Periwinkle_0_416_0_2_2_2_2_2 + +New Line.l(r:p1udt21477lv-p1ulv44471) Units=km Length=0.0436962 bus1=p1udt21477lv.1.2 bus2=p1ulv44471.1.2 switch=n enabled=y phases=2 Linecode=1P_OH_AL_4/0_Zuzara_0_416_0_2_2_2_2_2 + +New Line.l(r:p1udt21744lv-p1ulv45758) Units=km Length=0.052307000000000006 bus1=p1udt21744lv.1.2 bus2=p1ulv45758.1.2 switch=n enabled=y phases=2 Linecode=1P_OH_AL_4/0_Zuzara_0_416_0_2_2_2_2_2 + +New Line.l(r:p1udt24034lv-p1ulv57547) Units=km Length=0.0348037 bus1=p1udt24034lv.1.2 bus2=p1ulv57547.1.2 switch=n enabled=y phases=2 Linecode=1P_OH_AL_4/0_Zuzara_0_416_0_2_2_2_2_2 + +New Line.l(r:p1udt24034lv-p1ulv63094) Units=km Length=0.0348037 bus1=p1udt24034lv.1.2 bus2=p1ulv63094.1.2 switch=n enabled=y phases=2 Linecode=1P_OH_AL_4/0_Zuzara_0_416_0_2_2_2_2_2 + +New Line.l(r:p1udt24356lv-p1ulv59420) Units=km Length=0.001 bus1=p1udt24356lv.1.2 bus2=p1ulv59420.1.2 switch=n enabled=y phases=2 Linecode=1P_OH_AL_4_Periwinkle_0_416_0_2_2_2_2_2 + +New Line.l(r:p1udt24768lv-p1ulv61813) Units=km Length=0.001 bus1=p1udt24768lv.1.2 bus2=p1ulv61813.1.2 switch=n enabled=y phases=2 Linecode=1P_OH_AL_4_Periwinkle_0_416_0_2_2_2_2_2 + +New Line.l(r:p1udt24044-p1udt4186) Units=km Length=0.138652 bus1=p1udt24044-p1udt4186x.1 bus2=p1udt4186.1 switch=n enabled=y phases=1 Linecode=1P_OH_AL_ACSR_#2_Sparrow_12_47_0_1_1_1_1_1 + +New Line.l(r:p1udt24034-p1udt24768) Units=km Length=0.08972820000000001 bus1=p1udt24768.3 bus2=p1udt24034.3 switch=n enabled=y phases=1 Linecode=1P_OH_AL_ACSR_#2_Sparrow_12_47_0_1_1_1_1_1 + +New Line.l(r:p1udt19673-p1udt24768) Units=km Length=0.0603056 bus1=p1udt19673.3 bus2=p1udt24768.3 switch=n enabled=y phases=1 Linecode=1P_OH_AL_ACSR_#2_Sparrow_12_47_0_1_1_1_1_1 + +New Line.l(r:p1udt19673-p1udt24044) Units=km Length=0.152945 bus1=p1udt19673-p1udt24044x.3 bus2=p1udt19673.3 switch=n enabled=y phases=1 Linecode=1P_OH_AL_ACSR_#2_Sparrow_12_47_0_1_1_1_1_1 + +New Line.l(r:p1udt11629-p1udt9880) Units=km Length=0.170085 bus1=p1udt11629.2 bus2=p1udt9880.2 switch=n enabled=y phases=1 Linecode=1P_OH_AL_ACSR_#2_Sparrow_12_47_0_1_1_1_1_1 + +New Line.l(r:p1udt11629-p1udt14166) Units=km Length=0.0176972 bus1=p1udt14166.2 bus2=p1udt11629.2 switch=n enabled=y phases=1 Linecode=1P_OH_AL_ACSR_#2_Sparrow_12_47_0_1_1_1_1_1 + +New Line.l(r:p1udt14166-p1udt17537) Units=km Length=0.035384500000000006 bus1=p1udt17537.2 bus2=p1udt14166.2 switch=n enabled=y phases=1 Linecode=1P_OH_AL_ACSR_#2_Sparrow_12_47_0_1_1_1_1_1 + +New Line.l(r:p1udt17537-p1udt4688) Units=km Length=0.0431254 bus1=p1udt4688.2 bus2=p1udt17537.2 switch=n enabled=y phases=1 Linecode=1P_OH_AL_ACSR_#2_Sparrow_12_47_0_1_1_1_1_1 + +New Line.l(r:p1udt4688-p1udt9514) Units=km Length=0.0319947 bus1=p1udt9514.2 bus2=p1udt4688.2 switch=n enabled=y phases=1 Linecode=1P_OH_AL_ACSR_#2_Sparrow_12_47_0_1_1_1_1_1 + +New Line.l(r:p1udt12324-p1udt9514) Units=km Length=0.0371363 bus1=p1udt12324.2 bus2=p1udt9514.2 switch=n enabled=y phases=1 Linecode=1P_OH_AL_ACSR_#2_Sparrow_12_47_0_1_1_1_1_1 + +New Line.l(r:p1udt12324-p1udt8738) Units=km Length=0.019177400000000004 bus1=p1udt8738.2 bus2=p1udt12324.2 switch=n enabled=y phases=1 Linecode=1P_OH_AL_ACSR_#2_Sparrow_12_47_0_1_1_1_1_1 + +New Line.l(r:p1udt2569-p1udt8738) Units=km Length=0.117916 bus1=p1udt2569.2 bus2=p1udt8738.2 switch=n enabled=y phases=1 Linecode=1P_OH_AL_ACSR_#2_Sparrow_12_47_0_1_1_1_1_1 + +New Line.l(r:p1udt21477-p1udt2569) Units=km Length=0.001 bus1=p1udt2569.2 bus2=p1udt21477.2 switch=n enabled=y phases=1 Linecode=1P_OH_AL_ACSR_#2_Sparrow_12_47_0_1_1_1_1_1 + +New Line.l(r:p1udt18129-p1udt2569) Units=km Length=0.0786206 bus1=p1udt18129.2 bus2=p1udt2569.2 switch=n enabled=y phases=1 Linecode=1P_OH_AL_ACSR_#2_Sparrow_12_47_0_1_1_1_1_1 + +New Line.l(r:p1udt18129-p1udt21744) Units=km Length=0.0393053 bus1=p1udt21744.2 bus2=p1udt18129.2 switch=n enabled=y phases=1 Linecode=1P_OH_AL_ACSR_#2_Sparrow_12_47_0_1_1_1_1_1 + +New Line.l(r:p1udt21744-p1udt24044) Units=km Length=0.0982633 bus1=p1udt21744-p1udt24044x.2 bus2=p1udt21744.2 switch=n enabled=y phases=1 Linecode=1P_OH_AL_ACSR_#2_Sparrow_12_47_0_1_1_1_1_1 + +New Line.l(r:p1udt24356-p1udt5257) Units=km Length=0.147973 bus1=p1udt24356-p1udt5257x.1 bus2=p1udt24356.1 switch=n enabled=y phases=1 Linecode=1P_OH_AL_ACSR_#2_Sparrow_12_47_0_1_1_1_1_1 + +New Line.l(r:p1udt24044lv-p1ulv57596) Units=km Length=0.0868307 bus1=p1udt24044lv.1.2.3 bus2=p1ulv57596.1.2.3 switch=n enabled=y phases=3 Linecode=3P_UG_AL_350kcmil_15_0_416_0_3_3_3_3_3 + +New Line.l(r:p1udt24044-p1udt5257) Units=km Length=0.03930380000000001 bus1=p1udt5257.1.2.3 bus2=p1udt24044.1.2.3 switch=n enabled=y phases=3 Linecode=3P_OH_AL_ACSR_4/0_Penguin_12_47_0_3_3_3_3_3 + +New Line.l(r:p1udt5257-p1uhs21_1247) Units=km Length=0.0982732 bus1=p1udt5257-p1uhs21_1247x.1.2.3 bus2=p1udt5257.1.2.3 switch=n enabled=y phases=3 Linecode=3P_OH_AL_ACSR_4/0_Penguin_12_47_0_3_3_3_3_3 + +New Line.fuse(r:p1udt24356-p1udt5257)p1u_266507 Units=km Length=0.001 bus1=p1udt5257.1 bus2=p1udt24356-p1udt5257x.1 switch=n enabled=y phases=1 Linecode=fuse_1_1_1_1_1 + +New Fuse.Fuse_fuse(r:p1udt24356-p1udt5257)p1u_266507 monitoredobj=Line.fuse(r:p1udt24356-p1udt5257)p1u_266507 enabled=y ratedcurrent=100.0 + +New Line.fuse(r:p1udt24044-p1udt4186)p1u_268367 Units=km Length=0.001 bus1=p1udt24044.1 bus2=p1udt24044-p1udt4186x.1 switch=n enabled=y phases=1 Linecode=fuse_1_6_1_1_1_1 + +New Fuse.Fuse_fuse(r:p1udt24044-p1udt4186)p1u_268367 monitoredobj=Line.fuse(r:p1udt24044-p1udt4186)p1u_268367 enabled=y ratedcurrent=100.0 + +New Line.fuse(r:p1udt19673-p1udt24044)p1u_268368 Units=km Length=0.001 bus1=p1udt24044.3 bus2=p1udt19673-p1udt24044x.3 switch=n enabled=y phases=1 Linecode=fuse_1_6_1_1_1_1 + +New Fuse.Fuse_fuse(r:p1udt19673-p1udt24044)p1u_268368 monitoredobj=Line.fuse(r:p1udt19673-p1udt24044)p1u_268368 enabled=y ratedcurrent=100.0 + +New Line.fuse(r:p1udt21744-p1udt24044)p1u_268369 Units=km Length=0.001 bus1=p1udt24044.2 bus2=p1udt21744-p1udt24044x.2 switch=n enabled=y phases=1 Linecode=fuse_1_6_1_4_1_1_1 + +New Fuse.Fuse_fuse(r:p1udt21744-p1udt24044)p1u_268369 monitoredobj=Line.fuse(r:p1udt21744-p1udt24044)p1u_268369 enabled=y ratedcurrent=100.0 + diff --git a/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/LoadShapes.dss b/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/LoadShapes.dss new file mode 100755 index 00000000..c77ba0dd --- /dev/null +++ b/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/LoadShapes.dss @@ -0,0 +1,57 @@ +New Loadshape.res_kw_44719_pu npts=96 interval=0.25 mult = (file=../../../profiles/res_kw_44719_pu.csv) qmult = (file=../../../profiles/res_kvar_44719_pu.csv) + +New Loadshape.res_kw_22918_pu npts=96 interval=0.25 mult = (file=../../../profiles/res_kw_22918_pu.csv) qmult = (file=../../../profiles/res_kvar_22918_pu.csv) + +New Loadshape.res_kw_17185_pu npts=96 interval=0.25 mult = (file=../../../profiles/res_kw_17185_pu.csv) qmult = (file=../../../profiles/res_kvar_17185_pu.csv) + +New Loadshape.res_kw_39923_pu npts=96 interval=0.25 mult = (file=../../../profiles/res_kw_39923_pu.csv) qmult = (file=../../../profiles/res_kvar_39923_pu.csv) + +New Loadshape.res_kw_12427_pu npts=96 interval=0.25 mult = (file=../../../profiles/res_kw_12427_pu.csv) qmult = (file=../../../profiles/res_kvar_12427_pu.csv) + +New Loadshape.res_kw_1234_pu npts=96 interval=0.25 mult = (file=../../../profiles/res_kw_1234_pu.csv) qmult = (file=../../../profiles/res_kvar_1234_pu.csv) + +New Loadshape.res_kw_16409_pu npts=96 interval=0.25 mult = (file=../../../profiles/res_kw_16409_pu.csv) qmult = (file=../../../profiles/res_kvar_16409_pu.csv) + +New Loadshape.res_kw_9863_pu npts=96 interval=0.25 mult = (file=../../../profiles/res_kw_9863_pu.csv) qmult = (file=../../../profiles/res_kvar_9863_pu.csv) + +New Loadshape.res_kw_26438_pu npts=96 interval=0.25 mult = (file=../../../profiles/res_kw_26438_pu.csv) qmult = (file=../../../profiles/res_kvar_26438_pu.csv) + +New Loadshape.res_kw_1409_pu npts=96 interval=0.25 mult = (file=../../../profiles/res_kw_1409_pu.csv) qmult = (file=../../../profiles/res_kvar_1409_pu.csv) + +New Loadshape.res_kw_4772_pu npts=96 interval=0.25 mult = (file=../../../profiles/res_kw_4772_pu.csv) qmult = (file=../../../profiles/res_kvar_4772_pu.csv) + +New Loadshape.res_kw_40179_pu npts=96 interval=0.25 mult = (file=../../../profiles/res_kw_40179_pu.csv) qmult = (file=../../../profiles/res_kvar_40179_pu.csv) + +New Loadshape.res_kw_20573_pu npts=96 interval=0.25 mult = (file=../../../profiles/res_kw_20573_pu.csv) qmult = (file=../../../profiles/res_kvar_20573_pu.csv) + +New Loadshape.res_kw_37287_pu npts=96 interval=0.25 mult = (file=../../../profiles/res_kw_37287_pu.csv) qmult = (file=../../../profiles/res_kvar_37287_pu.csv) + +New Loadshape.res_kw_21365_pu npts=96 interval=0.25 mult = (file=../../../profiles/res_kw_21365_pu.csv) qmult = (file=../../../profiles/res_kvar_21365_pu.csv) + +New Loadshape.res_kw_20177_pu npts=96 interval=0.25 mult = (file=../../../profiles/res_kw_20177_pu.csv) qmult = (file=../../../profiles/res_kvar_20177_pu.csv) + +New Loadshape.res_kw_42564_pu npts=96 interval=0.25 mult = (file=../../../profiles/res_kw_42564_pu.csv) qmult = (file=../../../profiles/res_kvar_42564_pu.csv) + +New Loadshape.res_kw_35128_pu npts=96 interval=0.25 mult = (file=../../../profiles/res_kw_35128_pu.csv) qmult = (file=../../../profiles/res_kvar_35128_pu.csv) + +New Loadshape.res_kw_21451_pu npts=96 interval=0.25 mult = (file=../../../profiles/res_kw_21451_pu.csv) qmult = (file=../../../profiles/res_kvar_21451_pu.csv) + +New Loadshape.res_kw_13887_pu npts=96 interval=0.25 mult = (file=../../../profiles/res_kw_13887_pu.csv) qmult = (file=../../../profiles/res_kvar_13887_pu.csv) + +New Loadshape.res_kw_29673_pu npts=96 interval=0.25 mult = (file=../../../profiles/res_kw_29673_pu.csv) qmult = (file=../../../profiles/res_kvar_29673_pu.csv) + +New Loadshape.res_kw_29794_pu npts=96 interval=0.25 mult = (file=../../../profiles/res_kw_29794_pu.csv) qmult = (file=../../../profiles/res_kvar_29794_pu.csv) + +New Loadshape.res_kw_8579_pu npts=96 interval=0.25 mult = (file=../../../profiles/res_kw_8579_pu.csv) qmult = (file=../../../profiles/res_kvar_8579_pu.csv) + +New Loadshape.res_kw_17316_pu npts=96 interval=0.25 mult = (file=../../../profiles/res_kw_17316_pu.csv) qmult = (file=../../../profiles/res_kvar_17316_pu.csv) + +New Loadshape.res_kw_8275_pu npts=96 interval=0.25 mult = (file=../../../profiles/res_kw_8275_pu.csv) qmult = (file=../../../profiles/res_kvar_8275_pu.csv) + +New Loadshape.res_kw_40187_pu npts=96 interval=0.25 mult = (file=../../../profiles/res_kw_40187_pu.csv) qmult = (file=../../../profiles/res_kvar_40187_pu.csv) + +New Loadshape.com_kw_41835_pu npts=96 interval=0.25 mult = (file=../../../profiles/com_kw_41835_pu.csv) qmult = (file=../../../profiles/com_kvar_41835_pu.csv) + +New Loadshape.com_kw_42147_pu npts=96 interval=0.25 mult = (file=../../../profiles/com_kw_42147_pu.csv) qmult = (file=../../../profiles/com_kvar_42147_pu.csv) + +New Loadshape.com_kw_42140_pu npts=96 interval=0.25 mult = (file=../../../profiles/com_kw_42140_pu.csv) qmult = (file=../../../profiles/com_kvar_42140_pu.csv) diff --git a/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/Loads.dss b/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/Loads.dss new file mode 100755 index 00000000..cc01012f --- /dev/null +++ b/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/Loads.dss @@ -0,0 +1,58 @@ +New Load.load_p1ulv2723 conn=wye bus1=p1ulv2723.1.2 kV=0.2080002494301389 Vminpu=0.8 Vmaxpu=1.2 model=1 kW=13.467821518650487 kvar=0.9391752903421586 Phases=2 + +New Load.load_p1ulv4595 conn=wye bus1=p1ulv4595.1.2 kV=0.2080002494301389 Vminpu=0.8 Vmaxpu=1.2 model=1 kW=12.251768944444654 kvar=3.6185353921655667 Phases=2 + +New Load.load_p1ulv5237 conn=wye bus1=p1ulv5237.1.2 kV=0.2080002494301389 Vminpu=0.8 Vmaxpu=1.2 model=1 kW=8.884606476732344 kvar=1.9214554583646266 Phases=2 + +New Load.load_p1ulv5951 conn=wye bus1=p1ulv5951.1.2 kV=0.2080002494301389 Vminpu=0.8 Vmaxpu=1.2 model=1 kW=18.38832596989728 kvar=5.417343170196764 Phases=2 + +New Load.load_p1ulv10887 conn=wye bus1=p1ulv10887.1.2 kV=0.2080002494301389 Vminpu=0.8 Vmaxpu=1.2 model=1 kW=10.529277928662513 kvar=3.6317441323234827 Phases=2 + +New Load.load_p1ulv12152 conn=wye bus1=p1ulv12152.1.2 kV=0.2080002494301389 Vminpu=0.8 Vmaxpu=1.2 model=1 kW=20.435999665519756 kvar=1.8235516771785953 Phases=2 + +New Load.load_p1ulv12765 conn=wye bus1=p1ulv12765.1.2 kV=0.2080002494301389 Vminpu=0.8 Vmaxpu=1.2 model=1 kW=13.20787215722825 kvar=3.5750137627755834 Phases=2 + +New Load.load_p1ulv15856 conn=wye bus1=p1ulv15856.1.2 kV=0.2080002494301389 Vminpu=0.8 Vmaxpu=1.2 model=1 kW=23.17445985689405 kvar=2.569234655328263 Phases=2 + +New Load.load_p1ulv17169 conn=wye bus1=p1ulv17169.1.2 kV=0.2080002494301389 Vminpu=0.8 Vmaxpu=1.2 model=1 kW=9.225681516639328 kvar=1.940143839766792 Phases=2 + +New Load.load_p1ulv19767 conn=wye bus1=p1ulv19767.1.2 kV=0.2080002494301389 Vminpu=0.8 Vmaxpu=1.2 model=1 kW=20.237336194355567 kvar=1.1470867575872257 Phases=2 + +New Load.load_p1ulv21045 conn=wye bus1=p1ulv21045.1.2 kV=0.2080002494301389 Vminpu=0.8 Vmaxpu=1.2 model=1 kW=15.651894895554294 kvar=3.5316462498998695 Phases=2 + +New Load.load_p1ulv24237 conn=wye bus1=p1ulv24237.1.2 kV=0.2080002494301389 Vminpu=0.8 Vmaxpu=1.2 model=1 kW=11.763316176747665 kvar=3.3805500947984166 Phases=2 + +New Load.load_p1ulv29261 conn=wye bus1=p1ulv29261.1.2 kV=0.2080002494301389 Vminpu=0.8 Vmaxpu=1.2 model=1 kW=9.830014702394275 kvar=3.457823795310053 Phases=2 + +New Load.load_p1ulv29904 conn=wye bus1=p1ulv29904.1.2 kV=0.2080002494301389 Vminpu=0.8 Vmaxpu=1.2 model=1 kW=18.39067028680235 kvar=2.6418743232299144 Phases=2 + +New Load.load_p1ulv31790 conn=wye bus1=p1ulv31790.1.2 kV=0.2080002494301389 Vminpu=0.8 Vmaxpu=1.2 model=1 kW=15.530213880687148 kvar=7.488898712450357 Phases=2 + +New Load.load_p1ulv36321 conn=wye bus1=p1ulv36321.1.2 kV=0.2080002494301389 Vminpu=0.8 Vmaxpu=1.2 model=1 kW=5.847584836157187 kvar=1.4902933794246929 Phases=2 + +New Load.load_p1ulv37000 conn=wye bus1=p1ulv37000.1.2 kV=0.2080002494301389 Vminpu=0.8 Vmaxpu=1.2 model=1 kW=13.913528864458659 kvar=2.6638791889255256 Phases=2 + +New Load.load_p1ulv44471 conn=wye bus1=p1ulv44471.1.2 kV=0.2080002494301389 Vminpu=0.8 Vmaxpu=1.2 model=1 kW=13.103761685633108 kvar=4.012432844877971 Phases=2 + +New Load.load_p1ulv45758 conn=wye bus1=p1ulv45758.1.2 kV=0.2080002494301389 Vminpu=0.8 Vmaxpu=1.2 model=1 kW=19.243926494237837 kvar=2.2749117167008617 Phases=2 + +New Load.load_p1ulv53232 conn=wye bus1=p1ulv53232.1.2 kV=0.2080002494301389 Vminpu=0.8 Vmaxpu=1.2 model=1 kW=16.593086378966188 kvar=1.9350266416465607 Phases=2 + +New Load.load_p1ulv57547 conn=wye bus1=p1ulv57547.1.2 kV=0.2080002494301389 Vminpu=0.8 Vmaxpu=1.2 model=1 kW=11.326508044282805 kvar=1.6276518966933733 Phases=2 + +New Load.load_p1ulv57596 conn=wye bus1=p1ulv57596.1.2.3 kV=0.48 Vminpu=0.8 Vmaxpu=1.2 model=1 kW=42.19106208658335 kvar=12.324876217632175 Phases=3 + +New Load.load_p1ulv59420 conn=wye bus1=p1ulv59420.1.2 kV=0.2080002494301389 Vminpu=0.8 Vmaxpu=1.2 model=1 kW=13.716833087752544 kvar=3.58828316987593 Phases=2 + +New Load.load_p1ulv61813 conn=wye bus1=p1ulv61813.1.2 kV=0.2080002494301389 Vminpu=0.8 Vmaxpu=1.2 model=1 kW=10.654448891277351 kvar=2.0353370403570255 Phases= + +New Load.load_p1ulv61814 conn=wye bus1=p1ulv61814.1.2 kV=0.2080002494301389 Vminpu=0.8 Vmaxpu=1.2 model=1 kW=7.414861219331723 kvar=2.4153123717953755 Phases=2 + +New Load.load_p1ulv62436 conn=wye bus1=p1ulv62436.1.2 kV=0.2080002494301389 Vminpu=0.8 Vmaxpu=1.2 model=1 kW=10.997100837660996 kvar=3.0575522861605706 Phases=2 + +New Load.load_p1ulv63094 conn=wye bus1=p1ulv63094.1.2 kV=0.2080002494301389 Vminpu=0.8 Vmaxpu=1.2 model=1 kW=10.524712855851984 kvar=3.144544536860524 Phases=2 + +New Load.load_p1ulv64357 conn=wye bus1=p1ulv64357.1.2 kV=0.2080002494301389 Vminpu=0.8 Vmaxpu=1.2 model=1 kW=17.35040817115374 kvar=1.2260149632737194 Phases=2 + +New Load.load_p1ulv64358 conn=wye bus1=p1ulv64358.1.2 kV=0.2080002494301389 Vminpu=0.8 Vmaxpu=1.2 model=1 kW=8.349737933703114 kvar=2.563462457804661 Phases=2 + diff --git a/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/Master.dss b/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/Master.dss new file mode 100755 index 00000000..2ce2cf59 --- /dev/null +++ b/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/Master.dss @@ -0,0 +1,16 @@ +Clear + +New Circuit.feeder_p1udt5257-p1uhs21_1247x bus1=p1udt5257-p1uhs21_1247x pu=1.03 basekV=12.47 R1=1e-05 X1=1e-05 R0=1e-05 X0=1e-05 + +Redirect LineCodes.dss +Redirect Lines.dss +Redirect Transformers.dss +Redirect Loads.dss +New EnergyMeter.m1 element=Line.l(r:p1udt5257-p1uhs21_1247) + +Set Voltagebases=[0.2080002494301389, 0.48, 7.199560000000001, 12.47] + +Calcvoltagebases + +Buscoords Buscoords.dss +BatchEdit Fuse..* enable=False diff --git a/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/PVShapes.dss b/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/PVShapes.dss new file mode 100644 index 00000000..3d288528 --- /dev/null +++ b/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/PVShapes.dss @@ -0,0 +1,203 @@ +New Loadshape.1552053_30.44_-97.63_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1552053_30.44_-97.63_2019.csv) +New Loadshape.1557038_30.40_-97.57_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1557038_30.40_-97.57_2019.csv) +New Loadshape.1542083_30.28_-97.75_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1542083_30.28_-97.75_2019.csv) +New Loadshape.1566661_30.26_-97.45_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1566661_30.26_-97.45_2019.csv) +New Loadshape.1557037_30.42_-97.57_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1557037_30.42_-97.57_2019.csv) +New Loadshape.1518806_30.26_-98.03_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1518806_30.26_-98.03_2019.csv) +New Loadshape.1569766_30.24_-97.41_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1569766_30.24_-97.41_2019.csv) +New Loadshape.1545409_30.28_-97.71_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1545409_30.28_-97.71_2019.csv) +New Loadshape.1571310_30.26_-97.39_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1571310_30.26_-97.39_2019.csv) +New Loadshape.1561945_30.32_-97.51_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1561945_30.32_-97.51_2019.csv) +New Loadshape.1535431_30.28_-97.83_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1535431_30.28_-97.83_2019.csv) +New Loadshape.1558694_30.42_-97.55_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1558694_30.42_-97.55_2019.csv) +New Loadshape.1571315_30.16_-97.39_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1571315_30.16_-97.39_2019.csv) +New Loadshape.1537096_30.24_-97.81_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1537096_30.24_-97.81_2019.csv) +New Loadshape.1557040_30.36_-97.57_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1557040_30.36_-97.57_2019.csv) +New Loadshape.1565103_30.24_-97.47_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1565103_30.24_-97.47_2019.csv) +New Loadshape.1557036_30.44_-97.57_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1557036_30.44_-97.57_2019.csv) +New Loadshape.1553717_30.42_-97.61_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1553717_30.42_-97.61_2019.csv) +New Loadshape.1566660_30.28_-97.45_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1566660_30.28_-97.45_2019.csv) +New Loadshape.1571311_30.24_-97.39_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1571311_30.24_-97.39_2019.csv) +New Loadshape.1569770_30.16_-97.41_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1569770_30.16_-97.41_2019.csv) +New Loadshape.1543749_30.22_-97.73_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1543749_30.22_-97.73_2019.csv) +New Loadshape.1508862_30.22_-98.15_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1508862_30.22_-98.15_2019.csv) +New Loadshape.1565102_30.26_-97.47_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1565102_30.26_-97.47_2019.csv) +New Loadshape.1558698_30.34_-97.55_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1558698_30.34_-97.55_2019.csv) +New Loadshape.1558693_30.44_-97.55_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1558693_30.44_-97.55_2019.csv) +New Loadshape.1535432_30.26_-97.83_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1535432_30.26_-97.83_2019.csv) +New Loadshape.1505550_30.26_-98.19_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1505550_30.26_-98.19_2019.csv) +New Loadshape.1535434_30.22_-97.83_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1535434_30.22_-97.83_2019.csv) +New Loadshape.1558708_30.14_-97.55_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1558708_30.14_-97.55_2019.csv) +New Loadshape.1560322_30.32_-97.53_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1560322_30.32_-97.53_2019.csv) +New Loadshape.1565104_30.22_-97.47_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1565104_30.22_-97.47_2019.csv) +New Loadshape.1572849_30.22_-97.37_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1572849_30.22_-97.37_2019.csv) +New Loadshape.1568223_30.20_-97.43_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1568223_30.20_-97.43_2019.csv) +New Loadshape.1542085_30.24_-97.75_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1542085_30.24_-97.75_2019.csv) +New Loadshape.1505551_30.24_-98.19_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1505551_30.24_-98.19_2019.csv) +New Loadshape.1566667_30.14_-97.45_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1566667_30.14_-97.45_2019.csv) +New Loadshape.1557039_30.38_-97.57_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1557039_30.38_-97.57_2019.csv) +New Loadshape.1557044_30.28_-97.57_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1557044_30.28_-97.57_2019.csv) +New Loadshape.1550396_30.32_-97.65_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1550396_30.32_-97.65_2019.csv) +New Loadshape.1540420_30.28_-97.77_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1540420_30.28_-97.77_2019.csv) +New Loadshape.1538757_30.28_-97.79_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1538757_30.28_-97.79_2019.csv) +New Loadshape.1569768_30.20_-97.41_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1569768_30.20_-97.41_2019.csv) +New Loadshape.1563524_30.28_-97.49_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1563524_30.28_-97.49_2019.csv) +New Loadshape.1508860_30.26_-98.15_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1508860_30.26_-98.15_2019.csv) +New Loadshape.1558707_30.16_-97.55_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1558707_30.16_-97.55_2019.csv) +New Loadshape.1543747_30.26_-97.73_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1543747_30.26_-97.73_2019.csv) +New Loadshape.1553722_30.32_-97.61_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1553722_30.32_-97.61_2019.csv) +New Loadshape.1572850_30.20_-97.37_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1572850_30.20_-97.37_2019.csv) +New Loadshape.1552059_30.32_-97.63_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1552059_30.32_-97.63_2019.csv) +New Loadshape.1561952_30.18_-97.51_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1561952_30.18_-97.51_2019.csv) +New Loadshape.1571316_30.14_-97.39_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1571316_30.14_-97.39_2019.csv) +New Loadshape.1518808_30.22_-98.03_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1518808_30.22_-98.03_2019.csv) +New Loadshape.1574384_30.26_-97.35_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1574384_30.26_-97.35_2019.csv) +New Loadshape.1561953_30.16_-97.51_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1561953_30.16_-97.51_2019.csv) +New Loadshape.1563526_30.24_-97.49_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1563526_30.24_-97.49_2019.csv) +New Loadshape.1558700_30.30_-97.55_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1558700_30.30_-97.55_2019.csv) +New Loadshape.1540423_30.22_-97.77_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1540423_30.22_-97.77_2019.csv) +New Loadshape.1572846_30.28_-97.37_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1572846_30.28_-97.37_2019.csv) +New Loadshape.1550397_30.30_-97.65_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1550397_30.30_-97.65_2019.csv) +New Loadshape.1561954_30.14_-97.51_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1561954_30.14_-97.51_2019.csv) +New Loadshape.1560318_30.40_-97.53_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1560318_30.40_-97.53_2019.csv) +New Loadshape.1566664_30.20_-97.45_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1566664_30.20_-97.45_2019.csv) +New Loadshape.1515489_30.24_-98.07_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1515489_30.24_-98.07_2019.csv) +New Loadshape.1561947_30.28_-97.51_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1561947_30.28_-97.51_2019.csv) +New Loadshape.1558696_30.38_-97.55_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1558696_30.38_-97.55_2019.csv) +New Loadshape.1552056_30.38_-97.63_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1552056_30.38_-97.63_2019.csv) +New Loadshape.1555384_30.34_-97.59_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1555384_30.34_-97.59_2019.csv) +New Loadshape.1510518_30.24_-98.13_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1510518_30.24_-98.13_2019.csv) +New Loadshape.1569764_30.28_-97.41_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1569764_30.28_-97.41_2019.csv) +New Loadshape.1557043_30.30_-97.57_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1557043_30.30_-97.57_2019.csv) +New Loadshape.1560331_30.14_-97.53_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1560331_30.14_-97.53_2019.csv) +New Loadshape.1558704_30.22_-97.55_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1558704_30.22_-97.55_2019.csv) +New Loadshape.1563531_30.14_-97.49_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1563531_30.14_-97.49_2019.csv) +New Loadshape.1571313_30.20_-97.39_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1571313_30.20_-97.39_2019.csv) +New Loadshape.1552061_30.28_-97.63_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1552061_30.28_-97.63_2019.csv) +New Loadshape.1515487_30.28_-98.07_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1515487_30.28_-98.07_2019.csv) +New Loadshape.1561946_30.30_-97.51_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1561946_30.30_-97.51_2019.csv) +New Loadshape.1565108_30.14_-97.47_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1565108_30.14_-97.47_2019.csv) +New Loadshape.1571309_30.28_-97.39_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1571309_30.28_-97.39_2019.csv) +New Loadshape.1569767_30.22_-97.41_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1569767_30.22_-97.41_2019.csv) +New Loadshape.1560316_30.44_-97.53_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1560316_30.44_-97.53_2019.csv) +New Loadshape.1574383_30.28_-97.35_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1574383_30.28_-97.35_2019.csv) +New Loadshape.1507207_30.22_-98.17_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1507207_30.22_-98.17_2019.csv) +New Loadshape.1553721_30.34_-97.61_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1553721_30.34_-97.61_2019.csv) +New Loadshape.1545411_30.24_-97.71_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1545411_30.24_-97.71_2019.csv) +New Loadshape.1553718_30.40_-97.61_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1553718_30.40_-97.61_2019.csv) +New Loadshape.1566665_30.18_-97.45_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1566665_30.18_-97.45_2019.csv) +New Loadshape.1512175_30.24_-98.11_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1512175_30.24_-98.11_2019.csv) +New Loadshape.1566663_30.22_-97.45_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1566663_30.22_-97.45_2019.csv) +New Loadshape.1558705_30.20_-97.55_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1558705_30.20_-97.55_2019.csv) +New Loadshape.1510519_30.22_-98.13_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1510519_30.22_-98.13_2019.csv) +New Loadshape.1543746_30.28_-97.73_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1543746_30.28_-97.73_2019.csv) +New Loadshape.1557042_30.32_-97.57_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1557042_30.32_-97.57_2019.csv) +New Loadshape.1563530_30.16_-97.49_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1563530_30.16_-97.49_2019.csv) +New Loadshape.1555380_30.42_-97.59_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1555380_30.42_-97.59_2019.csv) +New Loadshape.1560327_30.22_-97.53_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1560327_30.22_-97.53_2019.csv) +New Loadshape.1558701_30.28_-97.55_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1558701_30.28_-97.55_2019.csv) +New Loadshape.1572847_30.26_-97.37_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1572847_30.26_-97.37_2019.csv) +New Loadshape.1553719_30.38_-97.61_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1553719_30.38_-97.61_2019.csv) +New Loadshape.1571312_30.22_-97.39_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1571312_30.22_-97.39_2019.csv) +New Loadshape.1543748_30.24_-97.73_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1543748_30.24_-97.73_2019.csv) +New Loadshape.1547072_30.28_-97.69_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1547072_30.28_-97.69_2019.csv) +New Loadshape.1558706_30.18_-97.55_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1558706_30.18_-97.55_2019.csv) +New Loadshape.1512176_30.22_-98.11_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1512176_30.22_-98.11_2019.csv) +New Loadshape.1547074_30.24_-97.69_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1547074_30.24_-97.69_2019.csv) +New Loadshape.1563528_30.20_-97.49_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1563528_30.20_-97.49_2019.csv) +New Loadshape.1507206_30.24_-98.17_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1507206_30.24_-98.17_2019.csv) +New Loadshape.1507205_30.26_-98.17_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1507205_30.26_-98.17_2019.csv) +New Loadshape.1512173_30.28_-98.11_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1512173_30.28_-98.11_2019.csv) +New Loadshape.1517148_30.24_-98.05_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1517148_30.24_-98.05_2019.csv) +New Loadshape.1517147_30.26_-98.05_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1517147_30.26_-98.05_2019.csv) +New Loadshape.1545410_30.26_-97.71_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1545410_30.26_-97.71_2019.csv) +New Loadshape.1553723_30.30_-97.61_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1553723_30.30_-97.61_2019.csv) +New Loadshape.1561948_30.26_-97.51_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1561948_30.26_-97.51_2019.csv) +New Loadshape.1563527_30.22_-97.49_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1563527_30.22_-97.49_2019.csv) +New Loadshape.1550398_30.28_-97.65_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1550398_30.28_-97.65_2019.csv) +New Loadshape.1513830_30.28_-98.09_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1513830_30.28_-98.09_2019.csv) +New Loadshape.1555383_30.36_-97.59_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1555383_30.36_-97.59_2019.csv) +New Loadshape.1571314_30.18_-97.39_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1571314_30.18_-97.39_2019.csv) +New Loadshape.1537097_30.22_-97.81_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1537097_30.22_-97.81_2019.csv) +New Loadshape.1558697_30.36_-97.55_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1558697_30.36_-97.55_2019.csv) +New Loadshape.1552054_30.42_-97.63_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1552054_30.42_-97.63_2019.csv) +New Loadshape.1566666_30.16_-97.45_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1566666_30.16_-97.45_2019.csv) +New Loadshape.1568222_30.22_-97.43_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1568222_30.22_-97.43_2019.csv) +New Loadshape.1568221_30.24_-97.43_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1568221_30.24_-97.43_2019.csv) +New Loadshape.1574387_30.20_-97.35_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1574387_30.20_-97.35_2019.csv) +New Loadshape.1518807_30.24_-98.03_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1518807_30.24_-98.03_2019.csv) +New Loadshape.1537094_30.28_-97.81_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1537094_30.28_-97.81_2019.csv) +New Loadshape.1574385_30.24_-97.35_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1574385_30.24_-97.35_2019.csv) +New Loadshape.1552060_30.30_-97.63_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1552060_30.30_-97.63_2019.csv) +New Loadshape.1535433_30.24_-97.83_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1535433_30.24_-97.83_2019.csv) +New Loadshape.1569769_30.18_-97.41_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1569769_30.18_-97.41_2019.csv) +New Loadshape.1542086_30.22_-97.75_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1542086_30.22_-97.75_2019.csv) +New Loadshape.1507204_30.28_-98.17_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1507204_30.28_-98.17_2019.csv) +New Loadshape.1518805_30.28_-98.03_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1518805_30.28_-98.03_2019.csv) +New Loadshape.1510516_30.28_-98.13_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1510516_30.28_-98.13_2019.csv) +New Loadshape.1568224_30.18_-97.43_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1568224_30.18_-97.43_2019.csv) +New Loadshape.1545412_30.22_-97.71_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1545412_30.22_-97.71_2019.csv) +New Loadshape.1557041_30.34_-97.57_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1557041_30.34_-97.57_2019.csv) +New Loadshape.1561951_30.20_-97.51_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1561951_30.20_-97.51_2019.csv) +New Loadshape.1561949_30.24_-97.51_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1561949_30.24_-97.51_2019.csv) +New Loadshape.1560324_30.28_-97.53_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1560324_30.28_-97.53_2019.csv) +New Loadshape.1560320_30.36_-97.53_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1560320_30.36_-97.53_2019.csv) +New Loadshape.1540421_30.26_-97.77_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1540421_30.26_-97.77_2019.csv) +New Loadshape.1552055_30.40_-97.63_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1552055_30.40_-97.63_2019.csv) +New Loadshape.1555382_30.38_-97.59_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1555382_30.38_-97.59_2019.csv) +New Loadshape.1505552_30.22_-98.19_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1505552_30.22_-98.19_2019.csv) +New Loadshape.1537095_30.26_-97.81_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1537095_30.26_-97.81_2019.csv) +New Loadshape.1561950_30.22_-97.51_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1561950_30.22_-97.51_2019.csv) +New Loadshape.1508859_30.28_-98.15_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1508859_30.28_-98.15_2019.csv) +New Loadshape.1572848_30.24_-97.37_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1572848_30.24_-97.37_2019.csv) +New Loadshape.1565107_30.16_-97.47_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1565107_30.16_-97.47_2019.csv) +New Loadshape.1560323_30.30_-97.53_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1560323_30.30_-97.53_2019.csv) +New Loadshape.1555386_30.30_-97.59_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1555386_30.30_-97.59_2019.csv) +New Loadshape.1515488_30.26_-98.07_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1515488_30.26_-98.07_2019.csv) +New Loadshape.1568225_30.16_-97.43_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1568225_30.16_-97.43_2019.csv) +New Loadshape.1517149_30.22_-98.05_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1517149_30.22_-98.05_2019.csv) +New Loadshape.1508861_30.24_-98.15_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1508861_30.24_-98.15_2019.csv) +New Loadshape.1569771_30.14_-97.41_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1569771_30.14_-97.41_2019.csv) +New Loadshape.1513833_30.22_-98.09_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1513833_30.22_-98.09_2019.csv) +New Loadshape.1566662_30.24_-97.45_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1566662_30.24_-97.45_2019.csv) +New Loadshape.1538758_30.26_-97.79_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1538758_30.26_-97.79_2019.csv) +New Loadshape.1565101_30.28_-97.47_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1565101_30.28_-97.47_2019.csv) +New Loadshape.1560319_30.38_-97.53_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1560319_30.38_-97.53_2019.csv) +New Loadshape.1568226_30.14_-97.43_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1568226_30.14_-97.43_2019.csv) +New Loadshape.1555379_30.44_-97.59_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1555379_30.44_-97.59_2019.csv) +New Loadshape.1552057_30.36_-97.63_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1552057_30.36_-97.63_2019.csv) +New Loadshape.1555387_30.28_-97.59_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1555387_30.28_-97.59_2019.csv) +New Loadshape.1540422_30.24_-97.77_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1540422_30.24_-97.77_2019.csv) +New Loadshape.1553720_30.36_-97.61_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1553720_30.36_-97.61_2019.csv) +New Loadshape.1563525_30.26_-97.49_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1563525_30.26_-97.49_2019.csv) +New Loadshape.1563529_30.18_-97.49_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1563529_30.18_-97.49_2019.csv) +New Loadshape.1560317_30.42_-97.53_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1560317_30.42_-97.53_2019.csv) +New Loadshape.1552058_30.34_-97.63_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1552058_30.34_-97.63_2019.csv) +New Loadshape.1568220_30.26_-97.43_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1568220_30.26_-97.43_2019.csv) +New Loadshape.1553724_30.28_-97.61_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1553724_30.28_-97.61_2019.csv) +New Loadshape.1542084_30.26_-97.75_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1542084_30.26_-97.75_2019.csv) +New Loadshape.1560321_30.34_-97.53_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1560321_30.34_-97.53_2019.csv) +New Loadshape.1505549_30.28_-98.19_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1505549_30.28_-98.19_2019.csv) +New Loadshape.1565105_30.20_-97.47_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1565105_30.20_-97.47_2019.csv) +New Loadshape.1513831_30.26_-98.09_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1513831_30.26_-98.09_2019.csv) +New Loadshape.1513832_30.24_-98.09_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1513832_30.24_-98.09_2019.csv) +New Loadshape.1560330_30.16_-97.53_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1560330_30.16_-97.53_2019.csv) +New Loadshape.1553716_30.44_-97.61_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1553716_30.44_-97.61_2019.csv) +New Loadshape.1517146_30.28_-98.05_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1517146_30.28_-98.05_2019.csv) +New Loadshape.1547075_30.22_-97.69_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1547075_30.22_-97.69_2019.csv) +New Loadshape.1555385_30.32_-97.59_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1555385_30.32_-97.59_2019.csv) +New Loadshape.1515490_30.22_-98.07_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1515490_30.22_-98.07_2019.csv) +New Loadshape.1547073_30.26_-97.69_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1547073_30.26_-97.69_2019.csv) +New Loadshape.1538760_30.22_-97.79_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1538760_30.22_-97.79_2019.csv) +New Loadshape.1560328_30.20_-97.53_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1560328_30.20_-97.53_2019.csv) +New Loadshape.1558699_30.32_-97.55_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1558699_30.32_-97.55_2019.csv) +New Loadshape.1574386_30.22_-97.35_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1574386_30.22_-97.35_2019.csv) +New Loadshape.1568219_30.28_-97.43_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1568219_30.28_-97.43_2019.csv) +New Loadshape.1538759_30.24_-97.79_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1538759_30.24_-97.79_2019.csv) +New Loadshape.1555381_30.40_-97.59_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1555381_30.40_-97.59_2019.csv) +New Loadshape.1558695_30.40_-97.55_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1558695_30.40_-97.55_2019.csv) +New Loadshape.1510517_30.26_-98.13_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1510517_30.26_-98.13_2019.csv) +New Loadshape.1512174_30.26_-98.11_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1512174_30.26_-98.11_2019.csv) +New Loadshape.1569765_30.26_-97.41_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1569765_30.26_-97.41_2019.csv) +New Loadshape.1560329_30.18_-97.53_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1560329_30.18_-97.53_2019.csv) +New Loadshape.1565106_30.18_-97.47_2019 npts=96 interval=0.25 mult = (file=../../../pv-profiles/1565106_30.18_-97.47_2019.csv) diff --git a/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/Transformers.dss b/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/Transformers.dss new file mode 100755 index 00000000..2656f198 --- /dev/null +++ b/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/Transformers.dss @@ -0,0 +1,38 @@ +New Transformer.tr(r:p1udt2569-p1udt2569lv) phases=1 windings=3 %loadloss=0.798816 %Noloadloss=0.472 normhkva=27.5 wdg=1 conn=wye bus=p1udt2569.2 Kv=7.199560000000001 kva=25.0 EmergHKVA=37.5 %r=0.266272 wdg=2 conn=wye bus=p1udt2569lv.1.0 Kv=0.120089 kva=25.0 EmergHKVA=37.5 %r=0.532544 wdg=3 conn=wye bus=p1udt2569lv.0.2 Kv=0.120089 kva=25.0 EmergHKVA=37.5 %r=0.532544 XHL=2.4 XLT=2.4 XHT=1.6 + +New Transformer.tr(r:p1udt4186-p1udt4186lv) phases=1 windings=3 %loadloss=0.798816 %Noloadloss=0.472 normhkva=27.5 wdg=1 conn=wye bus=p1udt4186.1 Kv=7.199560000000001 kva=25.0 EmergHKVA=37.5 %r=0.266272 wdg=2 conn=wye bus=p1udt4186lv.1.0 Kv=0.120089 kva=25.0 EmergHKVA=37.5 %r=0.532544 wdg=3 conn=wye bus=p1udt4186lv.0.2 Kv=0.120089 kva=25.0 EmergHKVA=37.5 %r=0.532544 XHL=2.4 XLT=2.4 XHT=1.6 + +New Transformer.tr(r:p1udt4688-p1udt4688lv) phases=1 windings=3 %loadloss=0.798816 %Noloadloss=0.37 normhkva=55.0 wdg=1 conn=wye bus=p1udt4688.2 Kv=7.199560000000001 kva=50.0 EmergHKVA=75.0 %r=0.266272 wdg=2 conn=wye bus=p1udt4688lv.1.0 Kv=0.120089 kva=50.0 EmergHKVA=75.0 %r=0.532544 wdg=3 conn=wye bus=p1udt4688lv.0.2 Kv=0.120089 kva=50.0 EmergHKVA=75.0 %r=0.532544 XHL=2.4 XLT=2.4 XHT=1.6 + +New Transformer.tr(r:p1udt5257-p1udt5257lv) phases=1 windings=3 %loadloss=0.798816 %Noloadloss=0.37 normhkva=55.0 wdg=1 conn=wye bus=p1udt5257.3 Kv=7.199560000000001 kva=50.0 EmergHKVA=75.0 %r=0.266272 wdg=2 conn=wye bus=p1udt5257lv.1.0 Kv=0.120089 kva=50.0 EmergHKVA=75.0 %r=0.532544 wdg=3 conn=wye bus=p1udt5257lv.0.2 Kv=0.120089 kva=50.0 EmergHKVA=75.0 %r=0.532544 XHL=2.4 XLT=2.4 XHT=1.6 + +New Transformer.tr(r:p1udt8738-p1udt8738lv) phases=1 windings=3 %loadloss=0.798816 %Noloadloss=0.472 normhkva=27.5 wdg=1 conn=wye bus=p1udt8738.2 Kv=7.199560000000001 kva=25.0 EmergHKVA=37.5 %r=0.266272 wdg=2 conn=wye bus=p1udt8738lv.1.0 Kv=0.120089 kva=25.0 EmergHKVA=37.5 %r=0.532544 wdg=3 conn=wye bus=p1udt8738lv.0.2 Kv=0.120089 kva=25.0 EmergHKVA=37.5 %r=0.532544 XHL=2.4 XLT=2.4 XHT=1.6 + +New Transformer.tr(r:p1udt9514-p1udt9514lv) phases=1 windings=3 %loadloss=0.798816 %Noloadloss=0.37 normhkva=55.0 wdg=1 conn=wye bus=p1udt9514.2 Kv=7.199560000000001 kva=50.0 EmergHKVA=75.0 %r=0.266272 wdg=2 conn=wye bus=p1udt9514lv.1.0 Kv=0.120089 kva=50.0 EmergHKVA=75.0 %r=0.532544 wdg=3 conn=wye bus=p1udt9514lv.0.2 Kv=0.120089 kva=50.0 EmergHKVA=75.0 %r=0.532544 XHL=2.4 XLT=2.4 XHT=1.6 + +New Transformer.tr(r:p1udt9880-p1udt9880lv) phases=1 windings=3 %loadloss=0.798816 %Noloadloss=0.472 normhkva=27.5 wdg=1 conn=wye bus=p1udt9880.2 Kv=7.199560000000001 kva=25.0 EmergHKVA=37.5 %r=0.266272 wdg=2 conn=wye bus=p1udt9880lv.1.0 Kv=0.120089 kva=25.0 EmergHKVA=37.5 %r=0.532544 wdg=3 conn=wye bus=p1udt9880lv.0.2 Kv=0.120089 kva=25.0 EmergHKVA=37.5 %r=0.532544 XHL=2.4 XLT=2.4 XHT=1.6 + +New Transformer.tr(r:p1udt11629-p1udt11629lv) phases=1 windings=3 %loadloss=0.798816 %Noloadloss=0.472 normhkva=27.5 wdg=1 conn=wye bus=p1udt11629.2 Kv=7.199560000000001 kva=25.0 EmergHKVA=37.5 %r=0.266272 wdg=2 conn=wye bus=p1udt11629lv.1.0 Kv=0.120089 kva=25.0 EmergHKVA=37.5 %r=0.532544 wdg=3 conn=wye bus=p1udt11629lv.0.2 Kv=0.120089 kva=25.0 EmergHKVA=37.5 %r=0.532544 XHL=2.4 XLT=2.4 XHT=1.6 + +New Transformer.tr(r:p1udt12324-p1udt12324lv) phases=1 windings=3 %loadloss=0.798816 %Noloadloss=0.37 normhkva=55.0 wdg=1 conn=wye bus=p1udt12324.2 Kv=7.199560000000001 kva=50.0 EmergHKVA=75.0 %r=0.266272 wdg=2 conn=wye bus=p1udt12324lv.1.0 Kv=0.120089 kva=50.0 EmergHKVA=75.0 %r=0.532544 wdg=3 conn=wye bus=p1udt12324lv.0.2 Kv=0.120089 kva=50.0 EmergHKVA=75.0 %r=0.532544 XHL=2.4 XLT=2.4 XHT=1.6 + +New Transformer.tr(r:p1udt14166-p1udt14166lv) phases=1 windings=3 %loadloss=0.798816 %Noloadloss=0.472 normhkva=27.5 wdg=1 conn=wye bus=p1udt14166.2 Kv=7.199560000000001 kva=25.0 EmergHKVA=37.5 %r=0.266272 wdg=2 conn=wye bus=p1udt14166lv.1.0 Kv=0.120089 kva=25.0 EmergHKVA=37.5 %r=0.532544 wdg=3 conn=wye bus=p1udt14166lv.0.2 Kv=0.120089 kva=25.0 EmergHKVA=37.5 %r=0.532544 XHL=2.4 XLT=2.4 XHT=1.6 + +New Transformer.tr(r:p1udt17537-p1udt17537lv) phases=1 windings=3 %loadloss=0.798816 %Noloadloss=0.472 normhkva=27.5 wdg=1 conn=wye bus=p1udt17537.2 Kv=7.199560000000001 kva=25.0 EmergHKVA=37.5 %r=0.266272 wdg=2 conn=wye bus=p1udt17537lv.1.0 Kv=0.120089 kva=25.0 EmergHKVA=37.5 %r=0.532544 wdg=3 conn=wye bus=p1udt17537lv.0.2 Kv=0.120089 kva=25.0 EmergHKVA=37.5 %r=0.532544 XHL=2.4 XLT=2.4 XHT=1.6 + +New Transformer.tr(r:p1udt18129-p1udt18129lv) phases=1 windings=3 %loadloss=0.798816 %Noloadloss=0.472 normhkva=27.5 wdg=1 conn=wye bus=p1udt18129.2 Kv=7.199560000000001 kva=25.0 EmergHKVA=37.5 %r=0.266272 wdg=2 conn=wye bus=p1udt18129lv.1.0 Kv=0.120089 kva=25.0 EmergHKVA=37.5 %r=0.532544 wdg=3 conn=wye bus=p1udt18129lv.0.2 Kv=0.120089 kva=25.0 EmergHKVA=37.5 %r=0.532544 XHL=2.4 XLT=2.4 XHT=1.6 + +New Transformer.tr(r:p1udt19673-p1udt19673lv) phases=1 windings=3 %loadloss=0.798816 %Noloadloss=0.472 normhkva=27.5 wdg=1 conn=wye bus=p1udt19673.3 Kv=7.199560000000001 kva=25.0 EmergHKVA=37.5 %r=0.266272 wdg=2 conn=wye bus=p1udt19673lv.1.0 Kv=0.120089 kva=25.0 EmergHKVA=37.5 %r=0.532544 wdg=3 conn=wye bus=p1udt19673lv.0.2 Kv=0.120089 kva=25.0 EmergHKVA=37.5 %r=0.532544 XHL=2.4 XLT=2.4 XHT=1.6 + +New Transformer.tr(r:p1udt21477-p1udt21477lv) phases=1 windings=3 %loadloss=0.798816 %Noloadloss=0.472 normhkva=27.5 wdg=1 conn=wye bus=p1udt21477.2 Kv=7.199560000000001 kva=25.0 EmergHKVA=37.5 %r=0.266272 wdg=2 conn=wye bus=p1udt21477lv.1.0 Kv=0.120089 kva=25.0 EmergHKVA=37.5 %r=0.532544 wdg=3 conn=wye bus=p1udt21477lv.0.2 Kv=0.120089 kva=25.0 EmergHKVA=37.5 %r=0.532544 XHL=2.4 XLT=2.4 XHT=1.6 + +New Transformer.tr(r:p1udt21744-p1udt21744lv) phases=1 windings=3 %loadloss=0.798816 %Noloadloss=0.472 normhkva=27.5 wdg=1 conn=wye bus=p1udt21744.2 Kv=7.199560000000001 kva=25.0 EmergHKVA=37.5 %r=0.266272 wdg=2 conn=wye bus=p1udt21744lv.1.0 Kv=0.120089 kva=25.0 EmergHKVA=37.5 %r=0.532544 wdg=3 conn=wye bus=p1udt21744lv.0.2 Kv=0.120089 kva=25.0 EmergHKVA=37.5 %r=0.532544 XHL=2.4 XLT=2.4 XHT=1.6 + +New Transformer.tr(r:p1udt24034-p1udt24034lv) phases=1 windings=3 %loadloss=0.798816 %Noloadloss=0.472 normhkva=27.5 wdg=1 conn=wye bus=p1udt24034.3 Kv=7.199560000000001 kva=25.0 EmergHKVA=37.5 %r=0.266272 wdg=2 conn=wye bus=p1udt24034lv.1.0 Kv=0.120089 kva=25.0 EmergHKVA=37.5 %r=0.532544 wdg=3 conn=wye bus=p1udt24034lv.0.2 Kv=0.120089 kva=25.0 EmergHKVA=37.5 %r=0.532544 XHL=2.4 XLT=2.4 XHT=1.6 + +New Transformer.tr(r:p1udt24044-p1udt24044lv) phases=3 windings=2 %loadloss=1.74408 %Noloadloss=0.6 normhkva=82.5 wdg=1 conn=wye Kv=12.47 kva=75.0 EmergHKVA=112.5 %R=0.87204 bus=p1udt24044 wdg=2 conn=wye Kv=0.48 kva=75.0 EmergHKVA=112.5 %R=0.87204 bus=p1udt24044lv XHL=3.2400000000000007 + +New Transformer.tr(r:p1udt24356-p1udt24356lv) phases=1 windings=3 %loadloss=0.798816 %Noloadloss=0.472 normhkva=27.5 wdg=1 conn=wye bus=p1udt24356.1 Kv=7.199560000000001 kva=25.0 EmergHKVA=37.5 %r=0.266272 wdg=2 conn=wye bus=p1udt24356lv.1.0 Kv=0.120089 kva=25.0 EmergHKVA=37.5 %r=0.532544 wdg=3 conn=wye bus=p1udt24356lv.0.2 Kv=0.120089 kva=25.0 EmergHKVA=37.5 %r=0.532544 XHL=2.4 XLT=2.4 XHT=1.6 + +New Transformer.tr(r:p1udt24768-p1udt24768lv) phases=1 windings=3 %loadloss=0.798816 %Noloadloss=0.472 normhkva=27.5 wdg=1 conn=wye bus=p1udt24768.3 Kv=7.199560000000001 kva=25.0 EmergHKVA=37.5 %r=0.266272 wdg=2 conn=wye bus=p1udt24768lv.1.0 Kv=0.120089 kva=25.0 EmergHKVA=37.5 %r=0.532544 wdg=3 conn=wye bus=p1udt24768lv.0.2 Kv=0.120089 kva=25.0 EmergHKVA=37.5 %r=0.532544 XHL=2.4 XLT=2.4 XHT=1.6 + diff --git a/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/hc_pv_deployments/random/1/15/PVSystems.dss b/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/hc_pv_deployments/random/1/15/PVSystems.dss new file mode 100644 index 00000000..36b4ec7b --- /dev/null +++ b/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/hc_pv_deployments/random/1/15/PVSystems.dss @@ -0,0 +1,4 @@ +// PV Scenario for 63.32952323373909 kW total size, Scenario type random, Sample 1 and penetration 15% (PV to load ratio) +! =====================PV SCENARIO FILE============================== +New PVSystem.small_p1ulv31790_1_2_pv phases=1 bus1=p1ulv31790.1.2 kv=0.2402 irradiance=1 Pmpp=46.591 %Pmpp=100 kVA=46.591 conn=wye %cutin=0.1 %cutout=0.1 Vmaxpu=1.2 +New PVSystem.small_p1ulv62436_1_2_pv phases=1 bus1=p1ulv62436.1.2 kv=0.2402 irradiance=1 Pmpp=16.739 %Pmpp=100 kVA=16.739 conn=wye %cutin=0.1 %cutout=0.1 Vmaxpu=1.2 diff --git a/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/hc_pv_deployments/random/1/5/PVSystems.dss b/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/hc_pv_deployments/random/1/5/PVSystems.dss new file mode 100644 index 00000000..704f4e49 --- /dev/null +++ b/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/hc_pv_deployments/random/1/5/PVSystems.dss @@ -0,0 +1,3 @@ +// PV Scenario for 21.109841077913032 kW total size, Scenario type random, Sample 1 and penetration 5% (PV to load ratio) +! =====================PV SCENARIO FILE============================== +New PVSystem.small_p1ulv31790_1_2_pv phases=1 bus1=p1ulv31790.1.2 kv=0.2402 irradiance=1 Pmpp=21.11 %Pmpp=100 kVA=21.11 conn=wye %cutin=0.1 %cutout=0.1 Vmaxpu=1.2 diff --git a/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/hc_pv_deployments/random/1/pv_config.json b/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/hc_pv_deployments/random/1/pv_config.json new file mode 100644 index 00000000..4f508b44 --- /dev/null +++ b/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/hc_pv_deployments/random/1/pv_config.json @@ -0,0 +1,20 @@ +{ + "pv_systems": [ + { + "name": "small_p1ulv31790_1_2_pv", + "pydss_controller": { + "controller_type": "PvController", + "name": "volt_var_ieee_1547_2018_catB" + }, + "customer_type": "residential" + }, + { + "name": "small_p1ulv62436_1_2_pv", + "pydss_controller": { + "controller_type": "PvController", + "name": "volt_var_ieee_1547_2018_catB" + }, + "customer_type": "residential" + } + ] +} diff --git a/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/hc_pv_deployments/random/2/15/PVSystems.dss b/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/hc_pv_deployments/random/2/15/PVSystems.dss new file mode 100644 index 00000000..90b1ab76 --- /dev/null +++ b/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/hc_pv_deployments/random/2/15/PVSystems.dss @@ -0,0 +1,4 @@ +// PV Scenario for 63.32952323373909 kW total size, Scenario type random, Sample 2 and penetration 15% (PV to load ratio) +! =====================PV SCENARIO FILE============================== +New PVSystem.small_p1ulv53232_1_2_pv phases=1 bus1=p1ulv53232.1.2 kv=0.2402 irradiance=1 Pmpp=49.779 %Pmpp=100 kVA=49.779 conn=wye %cutin=0.1 %cutout=0.1 Vmaxpu=1.2 +New PVSystem.small_p1ulv57596_1_2_3_pv phases=3 bus1=p1ulv57596.1.2.3 kv=0.48 irradiance=1 Pmpp=13.55 %Pmpp=100 kVA=13.55 conn=delta %cutin=0.1 %cutout=0.1 Vmaxpu=1.2 diff --git a/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/hc_pv_deployments/random/2/5/PVSystems.dss b/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/hc_pv_deployments/random/2/5/PVSystems.dss new file mode 100644 index 00000000..1bb5a612 --- /dev/null +++ b/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/hc_pv_deployments/random/2/5/PVSystems.dss @@ -0,0 +1,3 @@ +// PV Scenario for 21.109841077913032 kW total size, Scenario type random, Sample 2 and penetration 5% (PV to load ratio) +! =====================PV SCENARIO FILE============================== +New PVSystem.small_p1ulv53232_1_2_pv phases=1 bus1=p1ulv53232.1.2 kv=0.2402 irradiance=1 Pmpp=21.11 %Pmpp=100 kVA=21.11 conn=wye %cutin=0.1 %cutout=0.1 Vmaxpu=1.2 diff --git a/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/hc_pv_deployments/random/2/pv_config.json b/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/hc_pv_deployments/random/2/pv_config.json new file mode 100644 index 00000000..85d74474 --- /dev/null +++ b/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/hc_pv_deployments/random/2/pv_config.json @@ -0,0 +1,20 @@ +{ + "pv_systems": [ + { + "name": "small_p1ulv53232_1_2_pv", + "pydss_controller": { + "controller_type": "PvController", + "name": "volt_var_ieee_1547_2018_catB" + }, + "customer_type": "residential" + }, + { + "name": "small_p1ulv57596_1_2_3_pv", + "pydss_controller": { + "controller_type": "PvController", + "name": "volt_var_ieee_1547_2018_catB" + }, + "customer_type": "commercial" + } + ] +} diff --git a/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/metadata/loads_sum_groups.json b/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/metadata/loads_sum_groups.json new file mode 100644 index 00000000..f23388f8 --- /dev/null +++ b/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/metadata/loads_sum_groups.json @@ -0,0 +1,43 @@ +{ + "sum_groups": [ + { + "name": "residential", + "elements": [ + "load_p1ulv59420", + "load_p1ulv29904", + "load_p1ulv29261", + "load_p1ulv21045", + "load_p1ulv12152", + "load_p1ulv5237", + "load_p1ulv62436", + "load_p1ulv10887", + "load_p1ulv24237", + "load_p1ulv64358", + "load_p1ulv44471", + "load_p1ulv63094", + "load_p1ulv37000", + "load_p1ulv17169", + "load_p1ulv12765", + "load_p1ulv53232", + "load_p1ulv36321", + "load_p1ulv61814", + "load_p1ulv19767", + "load_p1ulv15856", + "load_p1ulv45758", + "load_p1ulv61813", + "load_p1ulv31790", + "load_p1ulv2723", + "load_p1ulv64357", + "load_p1ulv57547" + ] + }, + { + "name": "commercial", + "elements": [ + "load_p1ulv4595", + "load_p1ulv5951", + "load_p1ulv57596" + ] + } + ] +} \ No newline at end of file diff --git a/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/metadata/pv_systems_sum_groups.json b/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/metadata/pv_systems_sum_groups.json new file mode 100644 index 00000000..50123ae5 --- /dev/null +++ b/tests/data/smart-ds/substations-no-load-shapes/p1uhs21_1247/p1uhs21_1247--p1udt5257/metadata/pv_systems_sum_groups.json @@ -0,0 +1,20 @@ +{ + "sum_groups": [ + { + "name": "residential", + "elements": [ + "small_p1ulv53232_1_2_pv", + "small_p1ulv31790_1_2_pv", + "small_p1ulv59420_1_2_pv", + "small_p1ulv62436_1_2_pv" + ] + }, + { + "name": "commercial", + "elements": [ + "small_p1ulv57596_1_2_3_pv", + "small_p1ulv5951_1_2_pv" + ] + } + ] +} \ No newline at end of file diff --git a/tests/integration/test_pipelines.py b/tests/integration/test_pipelines.py index d1c53624..7354432a 100644 --- a/tests/integration/test_pipelines.py +++ b/tests/integration/test_pipelines.py @@ -47,18 +47,17 @@ CONFIG_HPC_COMMAND = ( - f"jade config hpc -a testaccount -p short -t local -w 4:00 " - f"-c {TEST_HPC_CONFIG_FILE}" + f"jade config hpc -a testaccount -p short -t local -w 4:00 " f"-c {TEST_HPC_CONFIG_FILE}" ) MAKE_PIPELINE_CONFIG_COMMAND = ( - f"disco create-pipeline config {TEST_TEMPLATE_FILE} " - F"-c {TEST_PIPELINE_CONFIG_FILE}" + f"disco create-pipeline config {TEST_TEMPLATE_FILE} " f"-c {TEST_PIPELINE_CONFIG_FILE}" ) @pytest.fixture def cleanup(): """clean up all filenames and dirs generated during tests""" + def delete_test_results(): result_files = [ TEST_TEMPLATE_FILE, @@ -76,7 +75,7 @@ def delete_test_results(): SNAPSHOT_REPORTS_FILE, TIME_SERIES_REPORTS_FILE, SCENARIO_HOSTING_CAPACITY_SUMMARY_FILE, - SCENARIO_HOSTING_CAPACITY_OVERALL_FILE + SCENARIO_HOSTING_CAPACITY_OVERALL_FILE, ] for path in result_files: if os.path.exists(path): @@ -86,7 +85,7 @@ def delete_test_results(): SNAPSHOT_MODELS_DIR, TIME_SERIES_MODELS_DIR, TEST_PIPELINE_OUTPUT, - TEST_PRECONFIGURED_MODELS + TEST_PRECONFIGURED_MODELS, ] for path in result_dirs: if os.path.exists(path): @@ -123,7 +122,9 @@ def test_source_tree_1_create_snapshot_pipeline_template(smart_ds_substations, c assert "submitter-params" in data["simulation"] -def test_source_tree_1_create_snapshot_pipeline_template__impact_analysis(smart_ds_substations, cleanup): +def test_source_tree_1_create_snapshot_pipeline_template__impact_analysis( + smart_ds_substations, cleanup +): cmd = ( f"disco create-pipeline template {smart_ds_substations} " "--task-name TestTask " @@ -169,7 +170,9 @@ def test_source_tree_1_create_snapshot_pipeline_template__prescreen(smart_ds_sub assert "prescreen" not in data -def test_source_tree_1_create_snapshot_pipeline_template__preconfigured_models(smart_ds_substations, cleanup): +def test_source_tree_1_create_snapshot_pipeline_template__preconfigured_models( + smart_ds_substations, cleanup +): cmd1 = f"disco transform-model {smart_ds_substations} snapshot -o {TEST_PRECONFIGURED_MODELS}" ret = run_command(cmd1) assert ret == 0 @@ -279,7 +282,9 @@ def test_source_tree_1_create_time_series_pipeline_template(smart_ds_substations assert "submitter-params" in data["simulation"] -def test_source_tree_1_create_time_series_pipeline_template__impact_analysis(smart_ds_substations, cleanup): +def test_source_tree_1_create_time_series_pipeline_template__impact_analysis( + smart_ds_substations, cleanup +): cmd = ( f"disco create-pipeline template {smart_ds_substations} " "--task-name TestTask " @@ -310,7 +315,9 @@ def test_source_tree_1_create_time_series_pipeline_template__impact_analysis(sma assert "submitter-params" in data["postprocess"] -def test_source_tree_1_create_time_series_pipeline_template__prescreen(smart_ds_substations, cleanup): +def test_source_tree_1_create_time_series_pipeline_template__prescreen( + smart_ds_substations, cleanup +): cmd = ( f"disco create-pipeline template {smart_ds_substations} " "--task-name TestTask " @@ -341,7 +348,9 @@ def test_source_tree_1_create_time_series_pipeline_template__prescreen(smart_ds_ assert "submitter-params" in data["simulation"] -def test_source_tree_1_create_time_series_pipeline_template__prescreen__impact_analysis(smart_ds_substations, cleanup): +def test_source_tree_1_create_time_series_pipeline_template__prescreen__impact_analysis( + smart_ds_substations, cleanup +): cmd = ( f"disco create-pipeline template {smart_ds_substations} " "--task-name TestTask " @@ -483,7 +492,9 @@ def test_source_tree_1_config_time_series_pipeline__impact_analysis(smart_ds_sub assert len(pipeline_data["stages"]) == 2 -def test_source_tree_1_config_time_series_pipeline__prescreen__impact_analysis(smart_ds_substations, cleanup): +def test_source_tree_1_config_time_series_pipeline__prescreen__impact_analysis( + smart_ds_substations, cleanup +): cmd1 = ( f"disco create-pipeline template {smart_ds_substations} " "--task-name TestTask " @@ -546,10 +557,16 @@ def test_source_tree_1_snapshot_pipeline_submit__hosting_capacity(smart_ds_subst assert os.path.exists(os.path.join(TEST_PIPELINE_OUTPUT, "output-stage1", FEEDER_HEAD_TABLE)) assert os.path.exists(os.path.join(TEST_PIPELINE_OUTPUT, "output-stage1", FEEDER_LOSSES_TABLE)) assert os.path.exists(os.path.join(TEST_PIPELINE_OUTPUT, "output-stage1", METADATA_TABLE)) - assert os.path.exists(os.path.join(TEST_PIPELINE_OUTPUT, "output-stage1", THERMAL_METRICS_TABLE)) - assert os.path.exists(os.path.join(TEST_PIPELINE_OUTPUT, "output-stage1", VOLTAGE_METRICS_TABLE)) + assert os.path.exists( + os.path.join(TEST_PIPELINE_OUTPUT, "output-stage1", THERMAL_METRICS_TABLE) + ) + assert os.path.exists( + os.path.join(TEST_PIPELINE_OUTPUT, "output-stage1", VOLTAGE_METRICS_TABLE) + ) - modes = (x.value for x in SnapshotTimePointSelectionMode if x != SnapshotTimePointSelectionMode.NONE) + modes = ( + x.value for x in SnapshotTimePointSelectionMode if x != SnapshotTimePointSelectionMode.NONE + ) for mode in modes: expected1 = SCENARIO_HOSTING_CAPACITY_OVERALL_FILE.replace(".json", f"__{mode}.json") expected2 = SCENARIO_HOSTING_CAPACITY_SUMMARY_FILE.replace(".json", f"__{mode}.json") @@ -557,7 +574,52 @@ def test_source_tree_1_snapshot_pipeline_submit__hosting_capacity(smart_ds_subst assert os.path.exists(os.path.join(TEST_PIPELINE_OUTPUT, "output-stage1", expected2)) -def test_source_tree_1_time_series_pipeline_submit__prescreen__impact_analysis(smart_ds_substations, cleanup): +def test_source_tree_1_snapshot_no_loadshapes_pipeline_submit__hosting_capacity( + smart_ds_substations_no_loadshapes, cleanup +): + cmd1 = ( + f"disco create-pipeline template {smart_ds_substations_no_loadshapes} " + "--task-name TestTask " + f"--hosting-capacity --no-with-loadshape " + f"--template-file {TEST_TEMPLATE_FILE} " + "--local" + ) + ret = run_command(cmd1) + assert ret == 0 + ret = run_command(MAKE_PIPELINE_CONFIG_COMMAND) + + cmd2 = f"jade pipeline submit {TEST_PIPELINE_CONFIG_FILE} -o {TEST_PIPELINE_OUTPUT}" + ret = run_command(cmd2) + + assert ret == 0 + assert not os.path.exists("snapshot-models") + assert os.path.exists(os.path.join(TEST_PIPELINE_OUTPUT, "snapshot-models")) + + assert os.path.exists(TEST_PIPELINE_OUTPUT) + assert os.path.exists(os.path.join(TEST_PIPELINE_OUTPUT, "output-stage1")) + assert os.path.exists(os.path.join(TEST_PIPELINE_OUTPUT, "output-stage2")) + + assert os.path.exists(os.path.join(TEST_PIPELINE_OUTPUT, "output-stage1", FEEDER_HEAD_TABLE)) + assert os.path.exists(os.path.join(TEST_PIPELINE_OUTPUT, "output-stage1", FEEDER_LOSSES_TABLE)) + assert os.path.exists(os.path.join(TEST_PIPELINE_OUTPUT, "output-stage1", METADATA_TABLE)) + assert os.path.exists( + os.path.join(TEST_PIPELINE_OUTPUT, "output-stage1", THERMAL_METRICS_TABLE) + ) + assert os.path.exists( + os.path.join(TEST_PIPELINE_OUTPUT, "output-stage1", VOLTAGE_METRICS_TABLE) + ) + + assert os.path.exists( + os.path.join(TEST_PIPELINE_OUTPUT, "output-stage1", SCENARIO_HOSTING_CAPACITY_OVERALL_FILE) + ) + assert os.path.exists( + os.path.join(TEST_PIPELINE_OUTPUT, "output-stage1", SCENARIO_HOSTING_CAPACITY_SUMMARY_FILE) + ) + + +def test_source_tree_1_time_series_pipeline_submit__prescreen__impact_analysis( + smart_ds_substations, cleanup +): cmd1 = ( f"disco create-pipeline template {smart_ds_substations} " "--task-name TestTask " @@ -589,8 +651,12 @@ def test_source_tree_1_time_series_pipeline_submit__prescreen__impact_analysis(s assert os.path.exists(os.path.join(TEST_PIPELINE_OUTPUT, "output-stage2", FEEDER_HEAD_TABLE)) assert os.path.exists(os.path.join(TEST_PIPELINE_OUTPUT, "output-stage2", FEEDER_LOSSES_TABLE)) assert os.path.exists(os.path.join(TEST_PIPELINE_OUTPUT, "output-stage2", METADATA_TABLE)) - assert os.path.exists(os.path.join(TEST_PIPELINE_OUTPUT, "output-stage2", THERMAL_METRICS_TABLE)) - assert os.path.exists(os.path.join(TEST_PIPELINE_OUTPUT, "output-stage2", VOLTAGE_METRICS_TABLE)) + assert os.path.exists( + os.path.join(TEST_PIPELINE_OUTPUT, "output-stage2", THERMAL_METRICS_TABLE) + ) + assert os.path.exists( + os.path.join(TEST_PIPELINE_OUTPUT, "output-stage2", VOLTAGE_METRICS_TABLE) + ) def test_source_tree_1_time_series_pipeline_submit__cost_benefit(smart_ds_substations, cleanup): @@ -623,4 +689,6 @@ def test_source_tree_1_time_series_pipeline_submit__cost_benefit(smart_ds_substa assert os.path.exists(os.path.join(TEST_PIPELINE_OUTPUT, "output-stage1", REG_CONTROL_TABLE)) assert os.path.exists(os.path.join(TEST_PIPELINE_OUTPUT, "output-stage1", POWERS_TABLE)) assert os.path.exists(os.path.join(TEST_PIPELINE_OUTPUT, "output-stage1", LOAD_TYPES_TABLE)) - assert os.path.exists(os.path.join(TEST_PIPELINE_OUTPUT, "output-stage1", PV_SYSTEM_TYPES_TABLE)) + assert os.path.exists( + os.path.join(TEST_PIPELINE_OUTPUT, "output-stage1", PV_SYSTEM_TYPES_TABLE) + ) From 44e2900cb1b03f3911aa652357b768882df2fd17 Mon Sep 17 00:00:00 2001 From: Daniel Thom Date: Tue, 24 Jan 2023 10:57:41 -0700 Subject: [PATCH 2/9] Fix expected number of scenarios in test --- tests/integration/test_pydss_simulation.py | 2 +- tests/integration/test_snapshot.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/integration/test_pydss_simulation.py b/tests/integration/test_pydss_simulation.py index 14e23d6d..c21da906 100644 --- a/tests/integration/test_pydss_simulation.py +++ b/tests/integration/test_pydss_simulation.py @@ -31,7 +31,7 @@ def test_pydss_simulation(cleanup): analysis = PyDssAnalysis(OUTPUT, config) result = analysis.list_results()[1] pydss_results = analysis.read_results(result.name) - assert len(pydss_results.scenarios) == 1 + assert len(pydss_results.scenarios) == 2 scenario = pydss_results.scenarios[0] lines = scenario.list_element_names("Lines", "Currents") df = scenario.get_dataframe("Lines", "Currents", lines[0]) diff --git a/tests/integration/test_snapshot.py b/tests/integration/test_snapshot.py index d8960bb1..890f3e4e 100644 --- a/tests/integration/test_snapshot.py +++ b/tests/integration/test_snapshot.py @@ -46,7 +46,7 @@ def test_snapshot_basic(cleanup): assert len(results) == 18 result = results[0] pydss_results = analysis.read_results(result.name) - assert len(pydss_results.scenarios) == 1 + assert len(pydss_results.scenarios) == 2 def test_snapshot_basic_with_loadshape_no_pf1(cleanup): From 1594548b129a48ee34ca6f4301516f57ccb14a5b Mon Sep 17 00:00:00 2001 From: Daniel Thom Date: Tue, 24 Jan 2023 10:59:50 -0700 Subject: [PATCH 3/9] Account for no-loadshape mode in pipeline snapshots --- disco/pipelines/creator.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/disco/pipelines/creator.py b/disco/pipelines/creator.py index 9e8c8f2f..5c036385 100644 --- a/disco/pipelines/creator.py +++ b/disco/pipelines/creator.py @@ -36,16 +36,22 @@ def make_model_transform_command(self): return command def make_disco_config_command(self, section): - if self.template.preconfigured: - model_inputs = self.template.inputs + # self.template reads the file fresh every time. + # TODO: change the rest of this file to not constantly re-read it. + template = self.template + if template.preconfigured: + model_inputs = template.inputs else: - model_inputs = self.template.get_model_transform_output() - options = self.template.get_config_options(section) + model_inputs = template.get_model_transform_output() + options = template.get_config_options(section) + # The code that builds the option string excludes False values but we need it here. + if not template.get_config_params(TemplateSection.SIMULATION)["with_loadshape"]: + options += " --no-with-loadshape" reports_filename = "generated_snapshot_reports.toml" - dump_data(self.template.reports, reports_filename) + dump_data(template.reports, reports_filename) exports_filename = get_default_exports_file( SimulationType.SNAPSHOT, - AnalysisType(self.template.analysis_type), + AnalysisType(template.analysis_type), ) command = ( f"disco config snapshot {model_inputs} " From 049dcaf55838d6b58d33a33fe3ae97fc9594f9e4 Mon Sep 17 00:00:00 2001 From: Daniel Thom Date: Thu, 30 Mar 2023 15:06:34 -0600 Subject: [PATCH 4/9] Add volt-watt controller --- disco/pydss/config/pv_controllers.toml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/disco/pydss/config/pv_controllers.toml b/disco/pydss/config/pv_controllers.toml index 3db7ff8d..2beabd6b 100644 --- a/disco/pydss/config/pv_controllers.toml +++ b/disco/pydss/config/pv_controllers.toml @@ -50,3 +50,16 @@ percent_p_cutout = 10 Efficiency = 100 Priority = "Var" DampCoef = 0.8 + +[volt_watt] +Control1 = "VW" +Control2 = "None" +Control3 = "None" +DampCoef = 0.8 +PFlim = 0.9 +PminVW = 20 +Priority = "Watt" +QlimPU = 0.44 +VWtype = "Available Power" +uMaxC = 1.1 +uMinC = 1.04 From df4cd0a98d24194f19575729a8cf8733f643bb1e Mon Sep 17 00:00:00 2001 From: Daniel Thom Date: Fri, 31 Mar 2023 07:51:56 -0600 Subject: [PATCH 5/9] Update uMinC value --- disco/pydss/config/pv_controllers.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/disco/pydss/config/pv_controllers.toml b/disco/pydss/config/pv_controllers.toml index 2beabd6b..eded3654 100644 --- a/disco/pydss/config/pv_controllers.toml +++ b/disco/pydss/config/pv_controllers.toml @@ -62,4 +62,4 @@ Priority = "Watt" QlimPU = 0.44 VWtype = "Available Power" uMaxC = 1.1 -uMinC = 1.04 +uMinC = 1.06 From 9db91f9bb7b9ce4a8c459ff6c85f49384aa1f7d0 Mon Sep 17 00:00:00 2001 From: Daniel Thom Date: Fri, 31 Mar 2023 07:52:07 -0600 Subject: [PATCH 6/9] Update installation instructions --- docs/source/installation.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/source/installation.rst b/docs/source/installation.rst index c54c2166..06f28842 100644 --- a/docs/source/installation.rst +++ b/docs/source/installation.rst @@ -13,7 +13,7 @@ Conda Installation .. code-block:: bash - $ conda create -n disco python=3.9 + $ conda create -n disco python=3.10 $ conda activate disco Optional: Install extra packages. @@ -59,7 +59,7 @@ Follow these instructions if you will be developing DISCO code and running tests .. code-block:: bash - $ git clone git@github.com:NREL/disco.git + $ git clone https://github.com/NREL/disco.git $ cd disco $ pip install -e '.[dev]' From 8b0cddcd1d32e8317d494f54dd1757df31b899ba Mon Sep 17 00:00:00 2001 From: Daniel Thom Date: Thu, 27 Apr 2023 16:32:25 -0600 Subject: [PATCH 7/9] Fix broken documentation link --- docs/source/analysis-workflows/upgrade-cost-analysis.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/analysis-workflows/upgrade-cost-analysis.rst b/docs/source/analysis-workflows/upgrade-cost-analysis.rst index 6ef48226..382e4429 100644 --- a/docs/source/analysis-workflows/upgrade-cost-analysis.rst +++ b/docs/source/analysis-workflows/upgrade-cost-analysis.rst @@ -130,7 +130,7 @@ Single Execution Mode ~~~~~~~~~~~~~~~~~~~~~ 1. Configure the simulation parameters and in an input JSON file called ``upgrades.json``. Refer to this -`file `_ +`file `_ as an example. The JSON schemas are defined in :ref:`upgrade_cost_analysis_schemas`. Each job represents one OpenDSS network and one upgrade simulation. From f946bc8e5d62817b020267832d9e81cc250440e0 Mon Sep 17 00:00:00 2001 From: wwang2 Date: Tue, 16 May 2023 21:56:08 -0600 Subject: [PATCH 8/9] fix cba curtailment --- disco/cli/cba_post_process.py | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/disco/cli/cba_post_process.py b/disco/cli/cba_post_process.py index 63ead4d3..5126142f 100644 --- a/disco/cli/cba_post_process.py +++ b/disco/cli/cba_post_process.py @@ -12,18 +12,18 @@ def add_curtailment_columns(filename, curtailment_tolerance): df["PVSystems__Curtailment__residential (kWh)"] = 0.0 columns = ["substation", "feeder", "placement", "sample", "penetration_level"] - def calc_curtailment(pf1, control_mode): + def calc_energy_curtailed(pf1, control_mode): """Calculate curtailment.""" if pf1 == 0: return 0 # We may need to consider using this tolerance in the future. - # if pf1 < curtailment_tolerance: - # return 0 + if pf1 < curtailment_tolerance: + return 0 diff = pf1 - control_mode - #if diff < 0 and abs(diff) < curtailment_tolerance: - # return 0 - return diff / pf1 + if diff < 0 and abs(diff) < curtailment_tolerance: + return 0 + return diff #/ pf1 for (substation, feeder, placement, sample, penetration_level), tdf in df.groupby(by=columns): for customer_type in ("commercial", "residential"): @@ -33,7 +33,7 @@ def calc_curtailment(pf1, control_mode): if sim_vals.empty: continue pf1 = tdf.query("scenario == 'pf1'")[power_col] - curtailment = pf1.combine(sim_vals, calc_curtailment) + curtailment = pf1.combine(sim_vals, calc_energy_curtailed) cond = lambda x: ( (x["substation"] == substation) & (x["feeder"] == feeder) @@ -52,13 +52,13 @@ def calc_curtailment(pf1, control_mode): @click.argument("output_dir") # This is disabled because we don't know the best tolerance for these customer-type # aggregations. Leaving it in the code in case we need it in the future. -# @click.option( -# "-d", "--curtailment-tolerance", -# default=0.0001, -# show_default=True, -# help="Set curtailment to 0 if the diff is less than this value.", -# ) -def cba_post_process(output_dir, curtailment_tolerance=0.0001): +@click.option( + "-d", "--curtailment-tolerance", + default=0.001, + show_default=True, + help="Set curtailment to 0 if the diff is less than this value.", +) +def cba_post_process(output_dir, curtailment_tolerance=0.001): """Perform post-processing of CBA tables.""" add_curtailment_columns(output_dir, curtailment_tolerance) From fcdfce51a5c5baad508aa7272c9d0e20427dba6b Mon Sep 17 00:00:00 2001 From: wwang2 Date: Wed, 17 May 2023 09:12:50 -0600 Subject: [PATCH 9/9] del comments --- disco/cli/cba_post_process.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/disco/cli/cba_post_process.py b/disco/cli/cba_post_process.py index 5126142f..2f89a1b2 100644 --- a/disco/cli/cba_post_process.py +++ b/disco/cli/cba_post_process.py @@ -16,14 +16,12 @@ def calc_energy_curtailed(pf1, control_mode): """Calculate curtailment.""" if pf1 == 0: return 0 - - # We may need to consider using this tolerance in the future. if pf1 < curtailment_tolerance: return 0 diff = pf1 - control_mode if diff < 0 and abs(diff) < curtailment_tolerance: return 0 - return diff #/ pf1 + return diff for (substation, feeder, placement, sample, penetration_level), tdf in df.groupby(by=columns): for customer_type in ("commercial", "residential"): @@ -50,8 +48,6 @@ def calc_energy_curtailed(pf1, control_mode): @click.command() @click.argument("output_dir") -# This is disabled because we don't know the best tolerance for these customer-type -# aggregations. Leaving it in the code in case we need it in the future. @click.option( "-d", "--curtailment-tolerance", default=0.001,