public void AddColumnEntry([NotNull] string name, OefcKey key, [NotNull] string locationName, [NotNull] CalcLoadTypeDto lt, StrGuid deviceGuid, [NotNull] HouseholdKey householdKey, [NotNull] string deviceCategory, [NotNull] CalcDeviceDto calcDeviceDto) { if (!ColumnCountByLoadType.ContainsKey(lt)) { ColumnCountByLoadType.Add(lt, 0); } var dstcolum = ColumnCountByLoadType[lt]; var ce = new ColumnEntry(name, dstcolum, locationName, deviceGuid, householdKey, lt, key.ToString(), deviceCategory, calcDeviceDto); if (!_columnEntriesByLoadTypeByDeviceKey.ContainsKey(lt)) { _columnEntriesByLoadTypeByDeviceKey.Add(lt, new Dictionary <OefcKey, ColumnEntry>()); _columnEntriesByColumn.Add(lt, new Dictionary <int, ColumnEntry>()); } if (!_columnEntriesByLoadTypeByDeviceKey[lt].ContainsKey(key)) { _columnEntriesByLoadTypeByDeviceKey[lt].Add(key, ce); _columnEntriesByColumn[lt].Add(dstcolum, ce); ColumnCountByLoadType[lt]++; _old.AddColumnEntry(ce); } }
public void AddNewStateMachine(TimeStep startTimeStep, CalcLoadTypeDto loadType, string affordanceName, string activatorName, OefcKey oefckey, [NotNull] CalcDeviceDto calcDeviceDto, [NotNull] StepValues sv) { Oefc.IsDeviceRegistered(loadType, oefckey); //OefcKey oefckey = new OefcKey(householdKey, deviceType, deviceID, locationID, loadType.ID); // this is for logging the used time profiles which gets dumped to the time profile log ProfileActivationEntry.ProfileActivationEntryKey key = new ProfileActivationEntry.ProfileActivationEntryKey(calcDeviceDto.Name, sv.Name, sv.DataSource, loadType.Name); if (!_profileEntries.ContainsKey(key)) { ProfileActivationEntry entry = new ProfileActivationEntry(calcDeviceDto.Name, sv.Name, sv.DataSource, loadType.Name, _calcParameters); _profileEntries.Add(entry.GenerateKey(), entry); } _profileEntries[key].ActivationCount++; // do the device activiation var columnNumber = Oefc.GetColumnNumber(loadType, oefckey); var dsm = new OnlineDeviceStateMachine(startTimeStep, loadType, calcDeviceDto.Name, oefckey, affordanceName, _calcParameters, sv, columnNumber); //_statemachines.Add(dsm); _stateMachinesByLoadtype[loadType].Add(dsm); // log the affordance energy use. if (_calcParameters.IsSet(CalcOption.DeviceActivations)) { double totalPowerSum = dsm.CalculateOfficialEnergyUse(); double totalEnergysum = loadType.ConversionFactor * totalPowerSum; var entry = new DeviceActivationEntry(dsm.AffordanceName, dsm.LoadType, totalEnergysum, activatorName, sv.Values.Count, startTimeStep, calcDeviceDto); // dsm.StepValues.ToArray(), _old.RegisterDeviceActivation(entry); } }
//[NotNull] public Dictionary<CalcLoadTypeDto, Dictionary<int, ColumnEntry>> ColumnEntriesByColumn => _columnEntriesByColumn; public bool IsDeviceRegistered([NotNull] CalcLoadTypeDto loadtype, OefcKey key) { if (_columnEntriesByLoadTypeByDeviceKey.ContainsKey(loadtype) && ColumnEntriesByLoadTypeByDeviceKey[loadtype].ContainsKey(key)) { return(true); } throw new LPGException("Forgotten device registration: " + key); }
//private readonly OefcKey _zek; public OnlineDeviceStateMachine([NotNull] TimeStep startTimeStep, [NotNull] CalcLoadTypeDto loadType, [NotNull] string deviceName, OefcKey deviceKey, [NotNull] string affordanceName, [NotNull] CalcParameters calcParameters, [NotNull] StepValues stepValues, int columnNumber) { //_zek = new ZeroEntryKey(deviceKey.HouseholdKey, deviceKey.ThisDeviceType,deviceKey.DeviceGuid,deviceKey.LocationGuid); _deviceName = deviceName; _calcParameters = calcParameters; OefcKey = deviceKey; LoadType = loadType; if (loadType == null) { throw new LPGException("loadtype for an osm was null"); } _startTimeStep = startTimeStep; // time profile einladen, zeitlich variieren, normalverteilt variieren und dann als stepvalues speichern //// throw new LPGException("power usage factor was 0. this is a bug. Device " + deviceName + ", Loadtype " + loadType); //} StepValues = stepValues; ColumnNumber = columnNumber; AffordanceName = affordanceName; HouseholdKey = deviceKey.HouseholdKey; }
public OefcKey RegisterDevice(CalcLoadTypeDto loadType, CalcDeviceDto devicedto) { var key = new OefcKey(devicedto, loadType.Guid); if (key.LoadtypeGuid != loadType.Guid && key.LoadtypeGuid != "-1".ToStrGuid()) { throw new LPGException("bug: loadtype id was wrong while registering a device"); } Oefc.AddColumnEntry(devicedto.Name, key, devicedto.LocationName, loadType, key.DeviceGuid, key.HouseholdKey, key.DeviceCategory, devicedto); if (!_loadTypeDict.ContainsKey(loadType)) { _loadTypeDict.Add(loadType, 1); _stateMachinesByLoadtype.Add(loadType, new List <OnlineDeviceStateMachine>()); if (_calcParameters.IsSet(CalcOption.DetailedDatFiles)) { var s = _fft.MakeFile <BinaryWriter>("OnlineDeviceEnergyUsage." + loadType.Name + ".dat", "Binary Device energy usage per device for " + loadType.Name, false, ResultFileID.OnlineDeviceActivationFiles, Constants.GeneralHouseholdKey, TargetDirectory.Temporary, _calcParameters.InternalStepsize, CalcOption.DetailedDatFiles, loadType.ConvertToLoadTypeInformation()); _binaryOutStreams.Add(loadType, s); } if (_calcParameters.IsSet(CalcOption.OverallDats)) { var binaryWriter = _fft.MakeFile <BinaryWriter>("OnlineDeviceEnergyUsage.Sums." + loadType.Name + ".dat", "Binary Device summed energy usage per device for " + loadType.Name, false, ResultFileID.OnlineSumActivationFiles, Constants.GeneralHouseholdKey, TargetDirectory.Temporary, _calcParameters.InternalStepsize, CalcOption.OverallDats, loadType.ConvertToLoadTypeInformation()); _sumBinaryOutStreams.Add(loadType, binaryWriter); } } return(key); }
public int GetColumnNumber([NotNull] CalcLoadTypeDto loadType, OefcKey deviceKey) => _columnEntriesByLoadTypeByDeviceKey[loadType][deviceKey].Column;
public SetToZeroEntry([NotNull] TimeStep startTime, [NotNull] TimeStep endTime, OefcKey key) { StartTime = startTime; EndTime = endTime; Key = key; }
public void AddZeroEntryForAutoDev(OefcKey zeKey, TimeStep starttime, int totalDuration) { var stze = new SetToZeroEntry(starttime, starttime.AddSteps(totalDuration), zeKey); _zeroEntries.Add(stze); }