public void FinalSaveToDatabase() { if (_actionEntries.Count > 0 && _calcParameters.Options.Contains(CalcOption.ActionEntries)) { _idl.SaveList(_actionEntries.ConvertAll(x => (IHouseholdKey)x)); _actionEntries.Clear(); } if (_affordanceActivationEntries.Count > 0 && _calcParameters.Options.Contains(CalcOption.DeviceActivations)) { _idl.SaveList(_affordanceActivationEntries.ConvertAll(x => (IHouseholdKey)x)); _affordanceActivationEntries.Clear(); } if (_columnEntries.Count > 0) { _idl.Save(_columnEntries); _columnEntries.Clear(); } if (_locationEntries.Count > 0 && _calcParameters.Options.Contains(CalcOption.LocationsEntries)) { _idl.SaveList(_locationEntries.ConvertAll(x => (IHouseholdKey)x)); _locationEntries.Clear(); } if (_transportationStatuses.Count > 0) { _idl.SaveList(_transportationStatuses.ConvertAll(x => (IHouseholdKey)x)); _transportationStatuses.Clear(); } if (_transportationEvents.Count > 0) { _idl.SaveList(_transportationEvents.ConvertAll(x => (IHouseholdKey)x)); _transportationEvents.Clear(); } if (_personStatus.Count > 0) { _idl.SaveList(_personStatus.ConvertAll(x => (IHouseholdKey)x)); _personStatus.Clear(); } if (_transportationDeviceState.Count > 0) { _idl.SaveList(_transportationDeviceState.ConvertAll(x => (IHouseholdKey)x)); _transportationDeviceState.Clear(); } if (_chargingStationStates.Count > 0) { _idl.SaveList(_chargingStationStates.ConvertAll(x => (IHouseholdKey)x)); _chargingStationStates.Clear(); } if (_variableEntries.Count > 0) { _idl.SaveList(_variableEntries.ConvertAll(x => (IHouseholdKey)x)); _variableEntries.Clear(); } }
/* * private void WriteHeader([JetBrains.Annotations.NotNull] FileFactoryAndTracker fft, [JetBrains.Annotations.NotNull] HouseholdKey householdKey) * { * StreamWriter sw; * if (householdKey == Constants.TotalsKey) { * sw = fft.MakeFile<StreamWriter>("TotalsPerLoadtype.csv", "Totals per load type", true, * ResultFileID.Totals, Constants.TotalsKey, TargetDirectory.Reports, * _calcParameters.InternalStepsize); * } * else { * sw = fft.MakeFile<StreamWriter>("TotalsPerLoadtype." + householdKey + ".csv", * "Totals per load type for " + householdKey, true, ResultFileID.TotalsPerHousehold, * householdKey, TargetDirectory.Reports, _calcParameters.InternalStepsize); * } * _files.Add(householdKey, sw); * sw.WriteLine("Load type" + _calcParameters.CSVCharacter + "Sum" + * _calcParameters.CSVCharacter + "Units" + * _calcParameters.CSVCharacter + "Readable" + * _calcParameters.CSVCharacter + "Units" + * _calcParameters.CSVCharacter + "Per Day" + * _calcParameters.CSVCharacter + "Units" + * _calcParameters.CSVCharacter + "Minimum Values" + * _calcParameters.CSVCharacter + "Minmum Value Unit" + * _calcParameters.CSVCharacter + "Maximum Values" + * _calcParameters.CSVCharacter + "Maximum Value Unit" + * _calcParameters.CSVCharacter + "Per Person" + * _calcParameters.CSVCharacter + "Unit" + * _calcParameters.CSVCharacter + "Per Person and Day" + * _calcParameters.CSVCharacter + "Unit"); * }*/ /* * private void WriteToGeneralFile(double sum, [JetBrains.Annotations.NotNull] CalcLoadTypeDto dstLoadType, double min, double max, int numberOfPersons) * { * var s = dstLoadType.Name + _calcParameters.CSVCharacter; * s += sum + _calcParameters.CSVCharacter; * s += dstLoadType.UnitOfPower + "*" + _calcParameters.InternalStepsize.TotalSeconds + * " seconds" + _calcParameters.CSVCharacter; * s += sum * dstLoadType.ConversionFactor + _calcParameters.CSVCharacter + * dstLoadType.UnitOfSum; * var totaldays = * (_calcParameters.OfficialEndTime - _calcParameters.OfficialStartTime) * .TotalDays; * s += _calcParameters.CSVCharacter + sum * dstLoadType.ConversionFactor / totaldays + * _calcParameters.CSVCharacter + dstLoadType.UnitOfSum; * s += _calcParameters.CSVCharacter + min + _calcParameters.CSVCharacter + * dstLoadType.UnitOfPower; * s += _calcParameters.CSVCharacter + max + _calcParameters.CSVCharacter + * dstLoadType.UnitOfPower; * s += _calcParameters.CSVCharacter + sum * dstLoadType.ConversionFactor / numberOfPersons + * _calcParameters.CSVCharacter + dstLoadType.UnitOfSum; * s += _calcParameters.CSVCharacter + * sum * dstLoadType.ConversionFactor / numberOfPersons / totaldays + * _calcParameters.CSVCharacter + dstLoadType.UnitOfSum; * _fft.GetResultFileEntry(ResultFileID.Totals, null, Constants.TotalsKey, null, null).StreamWriter? * .WriteLine(s); * _fft.GetResultFileEntry(ResultFileID.Totals, null, Constants.TotalsKey, null, null).StreamWriter? * .Flush(); * }*/ protected override void PerformActualStep(IStepParameters parameters) { LoadtypeStepParameters p = (LoadtypeStepParameters)parameters; var totaldays = (Repository.CalcParameters.OfficialEndTime - Repository.CalcParameters.OfficialStartTime).TotalDays; Dictionary <CalcLoadTypeDto, double> totalsPerLoadType = new Dictionary <CalcLoadTypeDto, double>(); //CalculateTotal(energyFileRows, loadType, totalsPerLoadType, Repository.GetPersons(householdKey).Count); var efc = Repository.ReadEnergyFileColumns(Constants.GeneralHouseholdKey); RunIndividualHouseholds(p.LoadType, p.EnergyFileRows, efc, totalsPerLoadType); List <TotalsPerLoadtypeEntry> totals = new List <TotalsPerLoadtypeEntry>(); foreach (HouseholdKeyEntry entry in Repository.HouseholdKeys) { if (entry.KeyType == HouseholdKeyType.General) { continue; } HouseholdKey key = entry.HHKey; int personscount = 0; if (entry.KeyType == HouseholdKeyType.Household) { personscount = Repository.GetPersons(key).Count; } foreach (KeyValuePair <CalcLoadTypeDto, double> pair in totalsPerLoadType) { totals.Add(new TotalsPerLoadtypeEntry(key, pair.Key, pair.Value, personscount, totaldays)); } } _inputDataLogger.SaveList(totals.ConvertAll(x => (IHouseholdKey)x)); }
private void MakeSumsForJson([NotNull] CalcLoadTypeDto dstLoadType, [NotNull][ItemNotNull] List <OnlineEnergyFileRow> energyFileRows, [NotNull] EnergyFileColumns efc, [NotNull] HouseholdKey key) { var calcParameters = Repository.CalcParameters; var dsc = new DateStampCreator(calcParameters); if (!efc.ColumnEntriesByColumn.ContainsKey(dstLoadType)) { return; } var cols = efc.ColumnEntriesByColumn[dstLoadType]; var tdp = new Dictionary <int, TotalsPerDeviceEntry>(); foreach (var pair in cols) { var tpde = new TotalsPerDeviceEntry(key, pair.Value.CalcDeviceDto, dstLoadType); tdp.Add(pair.Key, tpde); } foreach (var row in energyFileRows) { if (!row.Timestep.DisplayThisStep) { continue; } var month = dsc.MakeDateFromTimeStep(row.Timestep).Month; foreach (var pair in cols) { // ReSharper disable once CompareOfFloatsByEqualityOperator if (row.EnergyEntries[pair.Key] == 0) { continue; } tdp[pair.Key].AddConsumptionValue(month, row.EnergyEntries[pair.Key]); } } foreach (var value in tdp.Values) { value.Value *= value.Loadtype.ConversionFactor; value.NegativeValues *= value.Loadtype.ConversionFactor; value.PositiveValues *= value.Loadtype.ConversionFactor; } _inputDataLogger.SaveList(tdp.Values.ToList().ConvertAll(x => (IHouseholdKey)x)); }
protected override void PerformActualStep(IStepParameters parameters) { var calcParameters = _repository.CalcParameters; HouseholdStepParameters hhp = (HouseholdStepParameters)parameters; var entry = hhp.Key; if (entry.KeyType != HouseholdKeyType.Household) { return; } var householdKey = entry.HHKey; _calculationProfiler.StartPart(Utili.GetCurrentMethodAndClass()); Logger.Info("Starting to complete list of actions for each person at each time step for statistical analysis..."); var displayNegativeTime = calcParameters.ShowSettlingPeriodTime; var activitiesPerPerson = ReadActivities(householdKey); //var fileIdx = 0; if (activitiesPerPerson.Count == 0) { throw new LPGException("There were no activities for any person in the household " + householdKey.Key); } List <SingleTimestepActionEntry> allSteps = new List <SingleTimestepActionEntry>(); foreach (var personActivities in activitiesPerPerson) { Logger.Info("Starting to generate the carpet plot for " + personActivities.Key.Name + "..."); var times = MakeTimeArray(displayNegativeTime, personActivities.Value); allSteps.AddRange(times); } _inputDataLogger.SaveList(allSteps.ConvertAll(x => (IHouseholdKey)x)); _calculationProfiler.StopPart(Utili.GetCurrentMethodAndClass()); }