Skip to content

Commit

Permalink
Merge pull request #221 from NREL/ampacity_emergency-bugfix
Browse files Browse the repository at this point in the history
Fix emergency ampacity bug
  • Loading branch information
NicolasGensollen authored Oct 25, 2018
2 parents 10fdee6 + f51b4e4 commit 6804253
Show file tree
Hide file tree
Showing 6 changed files with 164 additions and 130 deletions.
146 changes: 87 additions & 59 deletions ditto/readers/cyme/read.py
Original file line number Diff line number Diff line change
Expand Up @@ -1367,7 +1367,7 @@ def configure_wire(

# Set the emergency ampacity of the wire
try:
api_wire.ampacity_emergency = float(conductor_data["withstandrating"])
api_wire.emergency_ampacity = float(conductor_data["withstandrating"])
except:
pass

Expand Down Expand Up @@ -1496,7 +1496,10 @@ def parse_sections(self, model):
or line[:11].lower() == "substation="
or line[:15].lower() == "generalnetwork="
):
if line[:7].lower() == "feeder=" or line[:15].lower() == "generalnetwork=":
if (
line[:7].lower() == "feeder="
or line[:15].lower() == "generalnetwork="
):
self.network_type = "feeder"
if line[:11].lower() == "substation=":
self.network_type = "substation"
Expand Down Expand Up @@ -3896,7 +3899,13 @@ def parse_capacitors(self, model):
"fixedkvara" in settings
and "fixedkvarb" in settings
and "fixedkvarc" in settings
and max(float(settings["fixedkvara"]), max(float(settings["fixedkvarb"]), float(settings["fixedkvarc"]))) > 0
and max(
float(settings["fixedkvara"]),
max(
float(settings["fixedkvarb"]), float(settings["fixedkvarc"])
),
)
> 0
):
try:
if p == "A":
Expand All @@ -3917,7 +3926,14 @@ def parse_capacitors(self, model):
"switchedkvara" in settings
and "switchedkvarb" in settings
and "switchedkvarc" in settings
and max(float(settings["switchedkvara"]), max(float(settings["switchedkvarb"]), float(settings["switchedkvarc"]))) > 0
and max(
float(settings["switchedkvara"]),
max(
float(settings["switchedkvarb"]),
float(settings["switchedkvarc"]),
),
)
> 0
):
try:
if p == "A":
Expand All @@ -3934,7 +3950,7 @@ def parse_capacitors(self, model):
) # Ditto in var
except:
pass

elif capacitor_data is not None:
try:
api_phaseCapacitor.var = (
Expand Down Expand Up @@ -5423,22 +5439,22 @@ def parse_dg(self, model):
}

mapp_bess = {
"id":0,
"ratedstorageenergy":1,
"maxchargingpower":2,
"maxdischargingpower":3,
"chargeefficiency":4,
"dischargeefficiency":5
"id": 0,
"ratedstorageenergy": 1,
"maxchargingpower": 2,
"maxdischargingpower": 3,
"chargeefficiency": 4,
"dischargeefficiency": 5,
}

mapp_bess_settings = {
"sectionid":0,
"devicenumber":2,
"equipmentid":6,
"phase":7,
"maximumsoc":10,
"minimumsoc":11,
"initialsoc":16,
"sectionid": 0,
"devicenumber": 2,
"equipmentid": 6,
"phase": 7,
"maximumsoc": 10,
"minimumsoc": 11,
"initialsoc": 16,
}

mapp_long_term_dynamics = {
Expand Down Expand Up @@ -5545,13 +5561,20 @@ def parse_dg(self, model):
self.parser_helper(
line,
["bess_settings"],
["sectionid", "devicenumber", "equipmentid", "phase","maximumsoc", "minimumsoc", "initialsoc"],
[
"sectionid",
"devicenumber",
"equipmentid",
"phase",
"maximumsoc",
"minimumsoc",
"initialsoc",
],
mapp_bess_settings,
{"type": "bess_settings"},
)
)


#########################################
# #
# LONG TERM DYNAMICS CURVE EXT #
Expand Down Expand Up @@ -5583,7 +5606,13 @@ def parse_dg(self, model):
self.parser_helper(
line,
["dggenerationmodel"],
["devicenumber", "devicetype", "activegeneration", "powerfactor","loadmodelname"],
[
"devicenumber",
"devicetype",
"activegeneration",
"powerfactor",
"loadmodelname",
],
mapp_dg_generation_model,
{"type": "dg_generation_model"},
)
Expand All @@ -5609,11 +5638,20 @@ def parse_dg(self, model):
#
self.bess.update(
self.parser_helper(
line, ["bess"], ["id", "ratedstorageenergy", "maxchargingpower", "maxdischargingpower", "chargeefficiency", "dischargeefficiency"], mapp_bess
line,
["bess"],
[
"id",
"ratedstorageenergy",
"maxchargingpower",
"maxdischargingpower",
"chargeefficiency",
"dischargeefficiency",
],
mapp_bess,
)
)


api_photovoltaics = {}
api_bessi = {}
for sectionID, settings in self.photovoltaic_settings.items():
Expand Down Expand Up @@ -5648,19 +5686,14 @@ def parse_dg(self, model):
except:
pass


for sectionID, settings in self.bess_settings.items():
try:
api_bess = Storage(model)
except:
raise ValueError(
"Unable to instanciate bess {id}".format(id=sectionID)
)
raise ValueError("Unable to instanciate bess {id}".format(id=sectionID))
try:
api_bess.name = "BESS_" + settings["devicenumber"].lower()
api_bess.feeder_name = self.section_feeder_mapping[
sectionID.lower()
]
api_bess.feeder_name = self.section_feeder_mapping[sectionID.lower()]
api_bessi[settings["devicenumber"].lower()] = api_bess
except:
raise ValueError(
Expand All @@ -5671,7 +5704,7 @@ def parse_dg(self, model):
if "phase" in settings:
phases = self.phase_mapping(settings["phase"])
else:
phases = ['A','B','C']
phases = ["A", "B", "C"]

for phase in phases:
phase_storage = PhaseStorage(model)
Expand All @@ -5680,9 +5713,6 @@ def parse_dg(self, model):

api_bess.phase_storages = phase_storages




if "equipmentid" in settings:
dev_num = settings["equipmentid"]
else:
Expand All @@ -5701,39 +5731,36 @@ def parse_dg(self, model):
pass

try:
api_bess.dischargeefficiency = float(bess_data["dischargeefficiency"])
api_bess.dischargeefficiency = float(
bess_data["dischargeefficiency"]
)
except:
pass

try:
charging = float("inf")
discharging = float("inf")
discharging = float("inf")
if "maxchargingpower" in bess_data:
charging = float(bess_data["maxchargingpower"])
if "maxdischargingpower" in bess_data:
discharging = float(bess_data["maxdischargingpower"])
power = min(charging,discharging)*1000
power = min(charging, discharging) * 1000
if power < float("inf"):
average_power = power/float(len(phase_storages))
average_power = power / float(len(phase_storages))
for ps in phase_storages:
ps.p = average_power
except:
pass




try:
api_bess.reserve = float(
settings["maximumsoc"]
)
api_bess.reserve = float(settings["maximumsoc"])
except:
pass

try:
api_bess.stored_kWh = float(
settings["initialsoc"]
)*api_bess.rated_kWh/100.0
api_bess.stored_kWh = (
float(settings["initialsoc"]) * api_bess.rated_kWh / 100.0
)
except:
pass

Expand All @@ -5744,26 +5771,27 @@ def parse_dg(self, model):
except:
pass





for deviceID, settings in self.dg_generation.items():
deviceID = deviceID.strip(
"*"
).lower() # TODO: Deal with multiple configurations for the same location
api_photovoltaic = api_photovoltaics[deviceID]

# Use the default setting if available
if "loadmodelname" in settings and settings["loadmodelname"].lower() == "default":
if (
"loadmodelname" in settings
and settings["loadmodelname"].lower() == "default"
):
try:
api_photovoltaic.active_rating = (
float(settings["activegeneration"]) * 1000
)
except:
pass
try:
api_photovoltaic.power_factor = float(settings["powerfactor"]) / 100.0
api_photovoltaic.power_factor = (
float(settings["powerfactor"]) / 100.0
)
except:
pass

Expand Down Expand Up @@ -5804,9 +5832,7 @@ def parse_dg(self, model):
elif deviceID in api_bessi:
api_bess = api_bessi[deviceID]
try:
api_bess.rated_power = (
float(settings["activepowerrating"]) * 1000
)
api_bess.rated_power = float(settings["activepowerrating"]) * 1000
except:
pass
try:
Expand Down Expand Up @@ -5846,9 +5872,11 @@ def parse_dg(self, model):
api_photovoltaic.control_type = "powerfactor"
except:
pass

try:
api_photovoltaic.var_injection = float(settings["fixedvarinjection"])
api_photovoltaic.var_injection = float(
settings["fixedvarinjection"]
)
except:
pass
try:
Expand All @@ -5864,7 +5892,7 @@ def parse_dg(self, model):
api_photovoltaic.watt_powerfactor_curve = curve
except:
pass

try:
pf = float(settings["powerfactor"]) / 100.0
api_photovoltaic.power_factor = pf
Expand Down
Loading

0 comments on commit 6804253

Please sign in to comment.