SLIDE  3.0.0
A simulator for lithium-ion battery pack degradation
Loading...
Searching...
No Matches
array_util.hpp
Go to the documentation of this file.
1/*
2 * array_util.cpp
3 *
4 * Array operations to make summing/subtracting arrays easier.
5 *
6 * Created on: 04 Jan 2023
7 * Author(s): Jorn Reniers, Volkan Kumtepeli
8 */
9
10
11#pragma once
12
13#include <array>
14#include <cmath>
15
16namespace slide {
17
18template <typename T, size_t N>
19auto arrSum(const std::array<T, N> &a1, const std::array<T, N> &a2, double b1, double b2)
20{
21 std::array<T, N> c;
22
23 for (size_t i = 0; i < N; i++)
24 c[i] = b1 * a1[i] + b2 * a2[i];
25
26 return c;
27}
28
29template <typename T, size_t N>
30auto operator+=(std::array<T, N> &c, const std::array<T, N> &b)
31{
32 for (size_t i = 0; i < N; i++)
33 c[i] += b[i];
34
35 return c;
36}
37
38template <typename T, size_t N>
39auto operator+(const std::array<T, N> &a, const std::array<T, N> &b)
40{
41 auto c = a;
42 c += b;
43 return c;
44}
45
46template <typename T, size_t N>
47auto operator-=(std::array<T, N> &c, const std::array<T, N> &b)
48{
49 for (size_t i = 0; i < N; i++)
50 c[i] -= b[i];
51
52 return c;
53}
54
55template <typename T, size_t N>
56auto operator-(const std::array<T, N> &a, const std::array<T, N> &b)
57{
58 auto c = a;
59 c -= b;
60 return c;
61}
62} // namespace slide
Slide namespace contains all the types, classes, and functions for the simulation framework.
Definition: Cell.hpp:27
auto arrSum(const std::array< T, N > &a1, const std::array< T, N > &a2, double b1, double b2)
Definition: array_util.hpp:19
auto operator+=(std::array< T, N > &c, const std::array< T, N > &b)
Definition: array_util.hpp:30
auto operator+(const std::array< T, N > &a, const std::array< T, N > &b)
Definition: array_util.hpp:39
auto operator-=(std::array< T, N > &c, const std::array< T, N > &b)
Definition: array_util.hpp:47
auto operator-(const std::array< T, N > &a, const std::array< T, N > &b)
Definition: array_util.hpp:56