PowerModels/PowerModelsDistribution lack of documentation for storage models

Hi! New to PM/PMD and currently trying to figure out the OPF with a storage model, unfortunately I’m getting pretty stumped by the results dictionary.

I attempted adding storage with the following:

case_file = "../PowerModelsDistribution.jl/examples/resources/lvtestcase_notrans.dss"
data_eng = PMD.parse_file(case_file, transformations=[PMD.remove_all_bounds!])
data_eng["storage"][string(e)] = Dict{String, Any}(
			"status"=>PMD.ENABLED,
			"bus"=>bus_e[e],
			"connections"=>[phase_e[e], 4],
			"configurations"=>PMD.WYE,
			"energy"=>50,
			"qs_ub"=>10,
			"qs_lb"=>-10,
			"energy_ub"=>100,
			"charge_ub"=>20,
			"discharge_ub"=>20,
			"charge_efficiency"=>0.97,
			"discharge_efficiency"=>0.95,
			"rs"=>1,
			"xs"=>1,
			"pex"=>0.1,
			"qex"=>0.1,
			"cm_ub"=>10,
			"sm_ub"=>20,
			"dispatchable"=>Dispatchable
		  )
res = solve_mc_opf(data_eng, ACPUPowerModel, Ipopt.Optimizer, setting=Dict("output"=>Dict("duals"=>true)))

However the output I’m getting from res["solution"]["storage"][string(e)] doesn’t make sense to me. I can guess that ps is the real power from the storage device, qs the reactive power but I have no idea how to parse se, sd, sc, qsc, etc. My guess was originally that se was stored energy but in that case the values (kWh) and (kW from ps) don’t align.

I would greatly appreciate any pointers towards docs that cover this if they exist.

Tacking on another topic since we’re here: any documentation on the connections? I assume it’s [phase,neutral]?

This is a question for @ccoffrin

Hi @apigott nice to hear from you!

I can only comment on PowerModels and I will leave it to @pseudocubic to comment on PowerModelsDistribution.

At a high level the storage model we implement is discussed in this report, [2004.14768] A Flexible Storage Model for Power Network Optimization

For single phase networks the details of the model are documented here, Storage Model · PowerModels

The code that generates the results from the paper is archived here, GitHub - lanl-ansi/energy-storage-example: An example of energy storage optimization using PowerModels

but this code may not have not been updated to the latest version of the packages, but should work with the versions specified in the toml files.

Thanks so much for the detailed response. I must be going blind because I missed the params and description for storage devices in PMD here.

Thanks