Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion examples/no_study.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,5 @@
dss_tools.model.add_line_in_vsource(add_meter=True)
dss.text("solve")
dss_tools.dss_view.voltage_profile()

#teste
print("here")
37 changes: 37 additions & 0 deletions examples/vtcd_study_exemple.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# -*- coding: utf-8 -*-
# @Author : Raphael Maccari
# @Email : raphaelmaccari@gmail.com
# @File : vtcd_study_exemple.py
# @Software: PyCharm


import os
import pathlib
import py_dss_tools

script_path = os.path.dirname(os.path.abspath(__file__))

dss_file = pathlib.Path(script_path).joinpath("feeders", "123Bus", "IEEE123Master.dss")

study = py_dss_tools.CreateStudy.vtcd_study(name="VTCD Case 1", dss_file=str(dss_file))
study.dss.text("New EnergyMeter.Feeder Line.L115 1")
study.dss.text(f"Buscoords Buscoords.dat")
study.dss.text("batchedit regcontrol..* enabled=No")
study.dss.text("batchedit load..* enabled=No")

# study.results.sag_3phsc_df_pu("95")
# study.view.vtcd_sag_circuit()

# study.results.sag_swell_1phsc_df_pu("95")
# study.view.vtcd_sag_swell_circuit()
#
# study.results.bus_vulnerability_sag_map_sc3ph("52", dss_file)
# study.view.vtcd_vulnerability_circuit_sc3ph()
#
study.results.bus_vulnerability_sag_swell_map_sc1ph("52", dss_file)
study.view.vtcd_vulnerability_circuit_sc1ph()

print("here")



9 changes: 9 additions & 0 deletions src/py_dss_tools/api/Creation.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
from py_dss_tools.studies.StudyPowerFlow import StudyPowerFlow
from py_dss_tools.studies.StudyTemporal import StudyTemporal
from py_dss_tools.studies.StudyFault import StudyFault
from py_dss_tools.studies.StudyVTCD import StudyVTCD

from typing import Optional

Expand Down Expand Up @@ -56,6 +57,14 @@ def fault_study(
sc = StudyFault(_name=name, _dss_file=dss_file, _frequency_base=frequency_base, _dll=dll)
return sc

@staticmethod
def vtcd_study(
name: str,
dss_file: str,
frequency_base: [int, float] = 60,
dll: Optional[str] = None) -> StudyVTCD:
sc = StudyVTCD(_name=name, _dss_file=dss_file, _frequency_base=frequency_base, _dll=dll)
return sc

# def update_circuit_df(sc: Scenario):
# if sc.circuit.created:
Expand Down
81 changes: 81 additions & 0 deletions src/py_dss_tools/results/VTCDSag.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
# -*- coding: utf-8 -*-
# @Author : Raphael Maccari
# @Email : raphaelmaccari@gmail.com
# @File : VTCDSag.py
# @Software: PyCharm


import pandas as pd
from py_dss_interface import DSS
from py_dss_tools.dss_tools import DSSTools


class VTCDSag:

def __init__(self, dss: DSS):
self._dss = dss
self.vmags_df = pd.DataFrame()

def sag_3phsc_df_pu(self, bus_fault,v_1=0.1,v_2=0.2,v_3=0.3,v_4=0.4,v_5=0.5,v_6=0.6,v_7=0.7,v_8=0.8,v_9=0.9,v_10=0.95) -> pd.DataFrame:
self._bus_fault = bus_fault
self._v_1 = v_1
self._v_2 = v_2
self._v_3 = v_3
self._v_4 = v_4
self._v_5 = v_5
self._v_6 = v_6
self._v_7 = v_7
self._v_8 = v_8
self._v_9 = v_9
self._v_10 = v_10
self._dss.text(f"new fault.3_ph_{self._bus_fault} phases=3 bus1={self._bus_fault} bus2={self._bus_fault}.4.4.4")
self._dss.text("solve")
vmags_df, vangs_df = DSSTools(self._dss).results.circuit_vmag_vang_dfs()
vmags_df = vmags_df.iloc[:, :-1] #Descarta a última coluna.
vmags_df['vmin'] = vmags_df.min(axis=1)

colors = []
for v_min in vmags_df['vmin']:
if v_min <= v_1:
colors.append("black")
elif v_min <= v_2:
colors.append("maroon")
elif v_min <= v_3:
colors.append("purple")
elif v_min <= v_4:
colors.append("navy")
elif v_min <= v_5:
colors.append("teal")
elif v_min <= v_6:
colors.append("blue")
elif v_min <= v_7:
colors.append("aqua")
elif v_min <= v_8:
colors.append("yellow")
elif v_min <= v_9:
colors.append("lime")
elif v_min < v_10:
colors.append("olive")
else:
colors.append("green")

vmags_df['colors'] = colors

self.vmags_df = vmags_df

return vmags_df



# sag_3phsc_df_pu(self, bus_fault, v_1=0.1, v_2=0.5, v_3=0.95)

# colors = []
# for v_min in vmags_df['vmin']:
# if v_min < v_1:
# colors.append("black")
# elif v_min < v_2:
# colors.append("red")
# elif v_min < v_3:
# colors.append("yellow")
# else:
# colors.append("green")
87 changes: 87 additions & 0 deletions src/py_dss_tools/results/VTCDSagSwell.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
# -*- coding: utf-8 -*-
# @Author : Raphael Maccari
# @Email : raphaelmaccari@gmail.com
# @File : VTCDSagSwell.py
# @Software: PyCharm


import pandas as pd
from py_dss_interface import DSS
from py_dss_tools.dss_tools import DSSTools


class VTCDSagSwell:

def __init__(self, dss: DSS):
self._dss = dss
self.vmags_df = pd.DataFrame()

def sag_swell_1phsc_df_pu(self, bus_fault,vsag_1=0.1,vsag_2=0.2,vsag_3=0.3,vsag_4=0.4,vsag_5=0.5,vsag_6=0.6,vsag_7=0.7,
vsag_8=0.8,vsag_9=0.9,vsag_10=0.95, vswell_1=1.05, vswell_2=1.06, vswell_3=1.1) -> pd.DataFrame:

self._bus_fault = bus_fault
self._vsag_1 = vsag_1
self._vsag_2 = vsag_2
self._vsag_3 = vsag_3
self._vsag_4 = vsag_4
self._vsag_5 = vsag_5
self._vsag_6 = vsag_6
self._vsag_7 = vsag_7
self._vsag_8 = vsag_8
self._vsag_9 = vsag_9
self._vsag_10 = vsag_10
self._vswell_1 = vswell_1
self._vswell_2 = vswell_2
self._vswell_3 = vswell_3
self._dss.text(f"new fault.1_ph_{self._bus_fault} phases=1 bus1={self._bus_fault}.1 bus2={self._bus_fault}.0")
self._dss.text("solve")


vmags_df, vangs_df = DSSTools(self._dss).results.circuit_vmag_vang_dfs()
vmags_df['vmin'] = vmags_df.min(axis=1) #Cria uma coluna adicional e faz o mínimo das 3 anteriores.
vmags_df['vmax'] = vmags_df.iloc[:, :-1].max(axis=1) #Cria uma coluna adicional e faz o máximo das 3 primeiras

colors_sag = []

for v_min in vmags_df['vmin']:
if v_min <= vsag_1:
colors_sag.append("black")
elif v_min <= vsag_2:
colors_sag.append("maroon")
elif v_min <= vsag_3:
colors_sag.append("purple")
elif v_min <= vsag_4:
colors_sag.append("navy")
elif v_min <= vsag_5:
colors_sag.append("teal")
elif v_min <= vsag_6:
colors_sag.append("blue")
elif v_min <= vsag_7:
colors_sag.append("aqua")
elif v_min <= vsag_8:
colors_sag.append("yellow")
elif v_min <= vsag_9:
colors_sag.append("lime")
elif v_min < vsag_10:
colors_sag.append("olive")
else:
colors_sag.append("green")

vmags_df['colors_sag'] = colors_sag

colors_swell = []
for v_max in vmags_df['vmax']:
if v_max <= vswell_1:
colors_swell.append("green")
elif v_max <= vswell_2:
colors_swell.append("yellow")
elif v_max <= vswell_3:
colors_swell.append("red")
else:
colors_swell.append("black")

vmags_df['colors_swell'] = colors_swell

self.vmags_df = vmags_df

return vmags_df
Loading