From d52e62d8213dfceb87c123e0c50b6cc65f198987 Mon Sep 17 00:00:00 2001 From: Thomas Date: Tue, 26 Mar 2024 11:57:07 -0400 Subject: [PATCH] Adds support for dss circuits without declared buses in dssToOmd. --- omf/solvers/opendss/dssConvert.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/omf/solvers/opendss/dssConvert.py b/omf/solvers/opendss/dssConvert.py index d93d7440b..a3e99405d 100644 --- a/omf/solvers/opendss/dssConvert.py +++ b/omf/solvers/opendss/dssConvert.py @@ -552,17 +552,18 @@ def dssToOmd(dssFilePath, omdFilePath, RADIUS=0.0002, write_out=True): parent_name = ob['parent'] # Only do child movement if RADIUS > 0. if RADIUS > 0: - # get location of parent object. - parent_loc = name_map[parent_name] - parent_ob = evil_glm[parent_loc] - parent_lat = parent_ob.get('latitude', None) - parent_lon = parent_ob.get('longitude', None) - # place randomly on circle around parent. - angle = random.random()*3.14159265*2; - x = math.cos(angle)*RADIUS; - y = math.sin(angle)*RADIUS; - ob['latitude'] = str(float(parent_lat) + x) - ob['longitude'] = str(float(parent_lon) + y) + if name_map.get(parent_name): # Dss files without explicity set bus coords will break on this function without this line. + # get location of parent object. + parent_loc = name_map[parent_name] + parent_ob = evil_glm[parent_loc] + parent_lat = parent_ob.get('latitude', None) + parent_lon = parent_ob.get('longitude', None) + # place randomly on circle around parent. + angle = random.random()*3.14159265*2; + x = math.cos(angle)*RADIUS; + y = math.sin(angle)*RADIUS; + ob['latitude'] = str(float(parent_lat) + x) + ob['longitude'] = str(float(parent_lon) + y) if write_out: evilToOmd(evil_glm, omdFilePath) return evil_glm