protected override void Plot(Chart chart, Project project, Parameters parameters, string trace) { var cycles = ProjectDataRepository.GetCycles(project.Id, trace); var allPoints = ProjectDataRepository.GetPoints(project.Id, trace); var multiplier = GetCapacityMultiplier(project, parameters); foreach (var cycle in FilterCycles(cycles, parameters)) { if (parameters.IsChargeEnabled) { List <Point> points = Plot( allPoints, cycle, p => multiplier * p.Capacity, p => p.Voltage, parameters, p => p.CycleStep == CycleStep.ChargeCC || p.CycleStep == CycleStep.ChargeCV).ToList(); AddSeries(chart, project, parameters, points, Title.Charge, cycle.Index); } if (parameters.IsDischargeEnabled) { List <Point> points = Plot( allPoints, cycle, p => multiplier * p.Capacity, p => p.Voltage, parameters, p => p.CycleStep == CycleStep.Discharge).ToList(); AddSeries(chart, project, parameters, points, Title.Discharge, cycle.Index); } } }
protected override void Plot(Chart chart, Project project, Parameters parameters, string trace) { var stateOfCharge = (StateOfCharge)Context.Data; var allChargePoints = ProjectDataRepository.GetPoints(project.Id, trace) .Where(point => point.Voltage.HasValue && point.Current.HasValue && point.Current.Value > 0 && point.Capacity.HasValue && point.Capacity.Value != 0 && (point.Voltage >= stateOfCharge.ChargeFrom && point.Voltage <= stateOfCharge.ChargeTo) && (parameters.CustomCycleFilter == null || parameters.CustomCycleFilter.RangesItems.Count == 0 || parameters.CustomCycleFilter.RangesItems.Contains(point.CycleIndex))) .ToList(); if (allChargePoints.Count > 0) { var cycles = ProjectDataRepository.GetCycles(project.Id, trace).Where(c => allChargePoints.Any(p => p.CycleIndex == c.Index)).ToList(); GetChartBySOC(chart, project, parameters, cycles, stateOfCharge, allChargePoints); } var allDischargePoints = ProjectDataRepository.GetPoints(project.Id, trace) .Where(point => point.Voltage.HasValue && point.Current.HasValue && point.Current.Value < 0 && point.Capacity.HasValue && point.Capacity.Value != 0 && (point.Voltage >= stateOfCharge.ChargeFrom && point.Voltage <= stateOfCharge.ChargeTo) && (parameters.CustomCycleFilter == null || parameters.CustomCycleFilter.RangesItems.Count == 0 || parameters.CustomCycleFilter.RangesItems.Contains(point.CycleIndex))) .ToList(); if (allDischargePoints.Count > 0) { var cycles = ProjectDataRepository.GetCycles(project.Id, trace).Where(c => allDischargePoints.Any(p => p.CycleIndex == c.Index)).ToList(); GetChartBySODC(chart, project, parameters, cycles, stateOfCharge, allDischargePoints); } }
protected override void Plot(Chart chart, Project project, string trace) { var cycles = ProjectDataRepository.GetCycles(project.Id, trace); var allPoints = ProjectDataRepository.GetPoints(project.Id, trace); var dataContext = GetDataNormalizedContext(project, MultiplierType.Capacity); foreach (var cycle in FilterCycles(cycles, ChartSettings)) { if (ChartSettings.IsChargeEnabled) { List <Point> points = Plot( allPoints, cycle, p => dataContext.Apply(p.Capacity), p => p.Voltage, ChartSettings, p => p.CycleStep == CycleStep.ChargeCC || p.CycleStep == CycleStep.ChargeCV).ToList(); AddSeries(chart, project, ChartSettings, points, Title.Charge, cycle.Index); } if (ChartSettings.IsDischargeEnabled) { List <Point> points = Plot( allPoints, cycle, p => dataContext.Apply(p.Capacity), p => p.Voltage, ChartSettings, p => p.CycleStep == CycleStep.Discharge).ToList(); AddSeries(chart, project, ChartSettings, points, Title.Discharge, cycle.Index); } } }
protected override void Plot(Chart chart, Project project, string trace) { var cycles = ProjectDataRepository.GetCycles(project.Id, trace); var points = Plot(cycles, c => c.MidVoltage, c => c.StatisticMetaData?.MidVoltageStdDev); AddSeries(chart, project, ChartSettings, points, Title.MidVoltage); }
protected void Plot(Chart chart, int projectId, string trace) { var project = ProjectDataRepository.GetProject(projectId, trace); chart.Projects.Add(project); Plot(chart, project, trace); }
protected override void Plot(Chart chart, Project project, string trace) { var cycles = ProjectDataRepository.GetCycles(project.Id, trace); var allPoints = ProjectDataRepository.GetPoints(project.Id, trace); var dataContext = GetDataNormalizedContext(project, MultiplierType.Current); var points = FilterCycles(cycles, ChartSettings) .SelectMany(c => Plot(allPoints, c, p => p.Voltage, p => dataContext.Apply(p.Current), ChartSettings)) .ToList(); AddSeries(chart, project, ChartSettings, points, Title.CyclicVoltammetry); }
protected override void Plot(Chart chart, Project project, Parameters parameters, string trace) { var cycles = ProjectDataRepository.GetCycles(project.Id, trace); var allPoints = ProjectDataRepository.GetPoints(project.Id, trace); var multiplier = GetCurrentMultiplier(project, parameters); var points = FilterCycles(cycles, parameters) .SelectMany(c => Plot(allPoints, c, p => p.Voltage, p => multiplier * p.Current, parameters)) .ToList(); AddSeries(chart, project, parameters, points, Title.CyclicVoltammetry); }
protected override void Plot(Chart chart, Project project, string trace) { var cycles = ProjectDataRepository.GetCycles(project.Id, trace); if (ChartSettings.IsChargeEnabled) { var points = Plot(cycles, c => c.EndVoltage, c => c.StatisticMetaData?.EndVoltageStdDev); AddSeries(chart, project, ChartSettings, points, Title.Charge); } if (ChartSettings.IsDischargeEnabled) { var points = Plot(cycles, c => c.DischargeEndVoltage, c => c.StatisticMetaData?.DischargeEndVoltageStdDev); AddSeries(chart, project, ChartSettings, points, Title.Discharge); } }
protected override void Plot(Chart chart, Project project, Parameters parameters, string trace) { var cycles = ProjectDataRepository.GetCycles(project.Id, trace); if (parameters.IsChargeEnabled) { var points = Plot(cycles, parameters, c => c.ChargeCapacityRetention, cycle => cycle.StatisticMetaData.ChargeCapacityRetentionStdDev); AddSeries(chart, project, parameters, points, Title.Charge); } if (parameters.IsDischargeEnabled) { var points = Plot(cycles, parameters, c => c.DischargeCapacityRetention, cycle => cycle.StatisticMetaData.DischargeCapacityRetentionStdDev); AddSeries(chart, project, parameters, points, Title.Discharge); } }
protected override void Plot(Chart chart, Project project, string trace) { var cycles = ProjectDataRepository.GetCycles(project.Id, trace); var points = Plot(cycles, c => { if (project.IsAveragePlot) { return(c.StatisticMetaData?.CoulombicEfficiencyAverage); } return(c.ChargeCapacity != null && Math.Abs(c.ChargeCapacity.Value) > 0.000000001 ? 100.0f * (c.DischargeCapacity / c.ChargeCapacity) : 0); }, c => c.StatisticMetaData?.CoulombicEfficiencyStdDev); AddSeries(chart, project, ChartSettings, points, Title.CoulombicEfficiency); }
protected override void Plot(Chart chart, Project project, Parameters parameters, string trace) { var cycles = ProjectDataRepository.GetCycles(project.Id, trace); var multiplier = GetPowerMultiplier(project, parameters); if (parameters.IsChargeEnabled) { var points = Plot(cycles, parameters, c => multiplier * c.Power, cycle => multiplier * cycle.StatisticMetaData.PowerStdDev); AddSeries(chart, project, parameters, points, Title.Charge); } if (parameters.IsDischargeEnabled) { var points = Plot(cycles, parameters, c => multiplier * c.DischargePower, cycle => multiplier * cycle.StatisticMetaData.DischargePowerStdDev); AddSeries(chart, project, parameters, points, Title.Discharge); } }
protected override void Plot(Chart chart, Project project, string trace) { var cycles = ProjectDataRepository.GetCycles(project.Id, trace); var dataContext = GetDataNormalizedContext(project, MultiplierType.Energy); if (ChartSettings.IsChargeEnabled) { var points = Plot(cycles, c => dataContext.Apply(c.ChargeEnergy), cycle => dataContext.Apply(cycle.StatisticMetaData?.ChargeEnergyStdDev)); AddSeries(chart, project, ChartSettings, points, Title.Charge); } if (ChartSettings.IsDischargeEnabled) { var points = Plot(cycles, c => dataContext.Apply(c.DischargeEnergy), cycle => dataContext.Apply(cycle.StatisticMetaData?.DischargeEnergyStdDev)); AddSeries(chart, project, ChartSettings, points, Title.Discharge); } }
private int?CalcForcedEveryNthCycle(bool projectsSumCyclesGreaterThanMax, int[] projects, PlotParameters parameters, string trace) { if (!projectsSumCyclesGreaterThanMax || IsCalcEveryNthCycleForcedDisabled) { return(null); } var maxCycles = parameters?.MaxCycles ?? 0; if (maxCycles <= 0) { return(null); } var maxCyclesPerProject = Math.Max(maxCycles / projects.Length - 1, 1); var forcedEveryNthCycle = projects.Max(pid => { int cycles = ProjectDataRepository.GetCycles(pid, trace).Count; if (parameters != null && string.IsNullOrEmpty(parameters.CustomCycleFilter)) { int fromCycle = Math.Max(parameters.FromCycle ?? 1, 1); int toCycle = Math.Min(parameters.ToCycle ?? cycles, cycles); cycles = toCycle - fromCycle + 1; int result = cycles / maxCyclesPerProject; if (cycles % maxCyclesPerProject != 0) { result += 1; } return(result); } else { if (parameters != null) { var rangeFilter = new IndexRangeFilter(parameters.CustomCycleFilter).RangesItems; cycles = rangeFilter.Count; } int result = cycles / maxCyclesPerProject; if (cycles % maxCyclesPerProject != 0) { result += 1; } return(result); } }); if (forcedEveryNthCycle < 2) { return(null); } if (parameters?.EveryNthCycle != null && parameters.EveryNthCycle.Value >= forcedEveryNthCycle) { return(null); } return(forcedEveryNthCycle); }
public ProjectManagementService() { IProjectRepository repository = new ProjectDataRepository(); _service = new ProjectService(repository); }