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);
            }
        }
Esempio n. 2
0
        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;
        }
Esempio n. 5
0
        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;
Esempio n. 7
0
 public SetToZeroEntry([NotNull] TimeStep startTime, [NotNull] TimeStep endTime, OefcKey key)
 {
     StartTime = startTime;
     EndTime   = endTime;
     Key       = key;
 }
Esempio n. 8
0
        public void AddZeroEntryForAutoDev(OefcKey zeKey, TimeStep starttime, int totalDuration)
        {
            var stze = new SetToZeroEntry(starttime, starttime.AddSteps(totalDuration), zeKey);

            _zeroEntries.Add(stze);
        }