SLIDE  3.0.0
A simulator for lithium-ion battery pack degradation
Loading...
Searching...
No Matches
slide_algorithms.hpp
Go to the documentation of this file.
1/*
2 * slide_algorithms.cpp
3 *
4 * Some algorithms to make easier frequently used operations:
5 *
6 * Created on: 24 Oct 2022
7 * Author(s): Jorn Reniers, Volkan Kumtepeli
8 */
9
10#pragma once
11
12#include <numeric>
13#include <functional>
14
15namespace slide {
16
17auto transform_sum(const auto &SUs, auto &function)
18{
19 using out_type = decltype(function(SUs[0]));
20 return std::transform_reduce(std::cbegin(SUs), std::cend(SUs), out_type(0), std::plus<>(), function);
21}
22
23auto transform_max(const auto &SUs, auto &function)
24{
25
26 if (SUs.empty())
27 return 0.0;
28
29 auto max = function(SUs[0]);
30
31 for (auto iter = std::cbegin(SUs) + 1; iter != std::cend(SUs); ++iter)
32 max = std::max(max, function(*iter));
33
34 return max;
35}
36
37auto transform_min(const auto &SUs, auto &function)
38{
39 if (SUs.empty())
40 return 0.0;
41
42 auto min = function(SUs[0]);
43
44 for (auto iter = std::cbegin(SUs) + 1; iter != std::cend(SUs); ++iter)
45 min = std::min(min, function(*iter));
46
47 return min;
48}
49
50auto transform_mean(const auto &SUs, auto &function)
51{
52 if (SUs.empty())
53 return 0.0;
54
55 return transform_sum(SUs, function) / SUs.size();
56}
57
58} // namespace slide
Slide namespace contains all the types, classes, and functions for the simulation framework.
Definition: Cell.hpp:27
auto transform_mean(const auto &SUs, auto &function)
Definition: slide_algorithms.hpp:50
auto transform_min(const auto &SUs, auto &function)
Definition: slide_algorithms.hpp:37
auto transform_sum(const auto &SUs, auto &function)
Definition: slide_algorithms.hpp:17
auto transform_max(const auto &SUs, auto &function)
Definition: slide_algorithms.hpp:23