SLIDE  3.0.0
A simulator for lithium-ion battery pack degradation
Loading...
Searching...
No Matches
procedure_util.hpp
Go to the documentation of this file.
1/*
2 * procedure_util.hpp
3 *
4 * Created on: 08 Mar 2023
5 * Author(s): Jorn Reniers, Volkan Kumtepeli
6 */
7
8#pragma once
9
10#include "../system/Battery.hpp"
11
12namespace slide {
13inline void visit_SUs(StorageUnit *su, auto &&fn)
14{
17 if (auto c = dynamic_cast<Cell *>(su))
18 fn(c); // It is cell, no submodules so apply function.
19 else if (auto b = dynamic_cast<Battery *>(su)) {
20 fn(b); // It is battery apply then call sub ones.
21 visit_SUs(b->getCells(), fn);
22 } else if (auto m = dynamic_cast<Module *>(su)) {
24 fn(m);
25 for (auto &su_ptr : m->getSUs())
26 visit_SUs(su_ptr.get(), fn);
27 }
28}
29} // namespace slide
Definition: Battery.hpp:23
Abstract Class representing a single battery cell.
Definition: Cell.hpp:33
Definition: Module.hpp:34
Definition: StorageUnit.hpp:27
Slide namespace contains all the types, classes, and functions for the simulation framework.
Definition: Cell.hpp:27
void visit_SUs(StorageUnit *su, auto &&fn)
Definition: procedure_util.hpp:13