SLIDE  3.0.0
A simulator for lithium-ion battery pack degradation
Loading...
Searching...
No Matches
Module_s.hpp
Go to the documentation of this file.
1/*
2 * Module_base_s.hpp
3 *
4 * series-connected base Module
5 *
6 * Created on: 9 Dec 2019
7 * Author(s): Jorn Reniers, Volkan Kumtepeli
8 */
9
10#pragma once
11
12#include "Module.hpp"
13#include "../settings/settings.hpp"
14#include "../cells/Cell.hpp"
15#include "../types/data_storage/cell_data.hpp"
16#include "../utility/utility.hpp"
17
18#include <string_view>
19#include <memory>
20
21namespace slide {
22class Module_s : public Module
23{
24public:
25 Module_s() : Module("moduleS") {}
26 Module_s(std::string_view ID_, double Ti, bool print, bool pari, int Ncells_, int coolControl, int cooltype)
27 : Module(ID_, Ti, print, pari, Ncells_, coolControl, cooltype) {}
29
31 // Since cells are in series following functions are just sum.
32 double Vmin() const override { return transform_sum(SUs, free::get_Vmin<SU_t>); }
33 double VMIN() const override { return transform_sum(SUs, free::get_VMIN<SU_t>); }
34 double Vmax() const override { return transform_sum(SUs, free::get_Vmax<SU_t>); }
35 double VMAX() const override { return transform_sum(SUs, free::get_VMAX<SU_t>); }
37 double I() const override { return (SUs.empty() ? 0 : SUs[0]->I()); }
38 double Cap() const override { return transform_min(SUs, free::get_Cap<SU_t>); }
39
40
41 double getOCV() override;
42 double getRtot() override;
43 double V() override;
44
45 Status setCurrent(double Inew, bool checkV = true, bool print = true) override;
46 void timeStep_CC(double dt, int steps = 1) override;
47
48 Module_s *copy() override { return new Module_s(*this); }
49};
50} // namespace slide
Definition: Module_s.hpp:23
Module_s * copy() override
copy this SU to a new object
Definition: Module_s.hpp:46
double getRtot() override
Definition: Module_s.cpp:38
double I() const override
the current is the same in all cells, so we can use first value. Return zero if SUs empty.
Definition: Module_s.hpp:35
Status setCurrent(double Inew, bool checkV=true, bool print=true) override
set a module current
Definition: Module_s.cpp:77
double V() override
module voltage (sum of cells), print is an optional argument
Definition: Module_s.cpp:53
Module_s()
note this constructor should never be used. It can't determine which coolsystem to use
Definition: Module_s.hpp:25
double Cap() const override
module capacity is the capacity of the smallest cell
Definition: Module_s.hpp:36
double VMIN() const override
SUM all SUs' VMIN.
Definition: Module_s.hpp:31
double Vmax() const override
SUM all SUs' Vmax.
Definition: Module_s.hpp:32
void timeStep_CC(double dt, int steps=1) override
take a number of time steps
Definition: Module_s.cpp:120
double VMAX() const override
SUM all SUs' VMAX.
Definition: Module_s.hpp:33
double Vmin() const override
SUM all SUs' Vmin.
Definition: Module_s.hpp:30
Module_s(std::string_view ID_, double Ti, bool print, bool pari, int Ncells_, int coolControl, int cooltype)
Module_s(std::string_view IDi, bool pari, int Ncells, std::unique_ptr<CoolSystem> &&cool_); #TODO.
Definition: Module_s.hpp:26
double getOCV() override
module voltage (sum of cells), print is an optional argument
Definition: Module_s.cpp:26
Definition: Module.hpp:34
SUs_t SUs
Definition: Module.hpp:44
Slide namespace contains all the types, classes, and functions for the simulation framework.
Definition: Cell.hpp:27
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
Status
Definition: Status.hpp:15