Example #1
0
        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);
                }
            }
        }
Example #2
0
        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);
                }
            }
        }
Example #4
0
        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);
        }
Example #5
0
        protected void Plot(Chart chart, int projectId, string trace)
        {
            var project = ProjectDataRepository.GetProject(projectId, trace);

            chart.Projects.Add(project);

            Plot(chart, project, trace);
        }
Example #6
0
        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);
        }
Example #7
0
        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);
        }
Example #8
0
        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);
        }
Example #11
0
        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);
            }
        }
Example #12
0
        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);
            }
        }
Example #13
0
        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);
        }