/// <summary> /// Once a load is broken up between multiple models, this returns the command for initializing loads for each model /// </summary> /// <param name="newLoad"></param> /// <param name="pmult"></param> /// <param name="qmult"></param> /// <param name="loadnum"></param> /// <returns></returns> private string subLoadToDSS(EnergyConsumer newLoad, float pmult, float qmult, int loadnum) { Dictionary<PhaseShuntConnectionKind, string> conn = new Dictionary<PhaseShuntConnectionKind, string>(); conn.Add(PhaseShuntConnectionKind.D, "Delta"); conn.Add(PhaseShuntConnectionKind.Y, "Wye"); StringBuilder dssLoad = new StringBuilder("New Load"); dssLoad.AppendFormat(".{0}", newLoad.Name); dssLoad.Append(ToDSSBusFormat(newLoad.Terminal1)); dssLoad.AppendFormat(" model={0}", loadnum.ToString()); dssLoad.AppendFormat(" conn={0} ", conn[newLoad.PhaseConnection]); dssLoad.AppendFormat(" kW={0} kVar={1}", (newLoad.Pfixed * pmult).ToString(), (newLoad.Qfixed * qmult).ToString()); return dssLoad.ToString(); }
/// <summary> /// Generates an OpenDSS definition for a load /// </summary> /// <param name="newLoad"></param> /// <returns></returns> private IEnumerable<string> LoadToDSS(EnergyConsumer newLoad) { var comms = new List<string>(); if (newLoad.LoadResponse.PConstantPower != 0 || newLoad.LoadResponse.QConstantPower != 0) { comms.Add(subLoadToDSS(newLoad,newLoad.LoadResponse.PConstantPower,newLoad.LoadResponse.QConstantPower, 1)); } if (newLoad.LoadResponse.PConstantImpedance != 0 || newLoad.LoadResponse.QConstantImpedance != 0) { comms.Add(subLoadToDSS(newLoad,newLoad.LoadResponse.PConstantImpedance,newLoad.LoadResponse.QConstantImpedance,2)); } if (newLoad.LoadResponse.PConstantCurrent != 0 || newLoad.LoadResponse.QConstantCurrent != 0) { comms.Add(subLoadToDSS(newLoad, newLoad.LoadResponse.PConstantCurrent,newLoad.LoadResponse.QConstantCurrent,5)); } return comms; }