SLIDE  3.0.0
A simulator for lithium-ion battery pack degradation
Loading...
Searching...
No Matches
Cycler.hpp
Go to the documentation of this file.
1/*
2 * Cycler.hpp
3 *
4 * Created on: 19 Dec 2019
5 * Author(s): Jorn Reniers, Volkan Kumtepeli
6 */
7
8#pragma once
9
10#include "../StorageUnit.hpp"
11#include "../types/data_storage/cell_data.hpp"
12
13#include <string>
14#include <memory>
15#include <span>
16
17namespace slide {
18class Cycler
19{
20private:
21 std::string ID{ "Cycler" };
22 StorageUnit *su{ nullptr };
23
24 size_t index{ 0 };
25 bool diagnostic{ false };
26
28 Status setCurrent(double I, double vlim);
29
30public:
31 Cycler() = default;
32 Cycler(StorageUnit *sui) : su(sui) {}
33 Cycler(StorageUnit *sui, const std::string &IDi) : ID(IDi), su(sui) {}
34 Cycler(Deep_ptr<StorageUnit> &sui, const std::string &IDi) : Cycler(sui.get(), IDi) {}
35
36 Cycler &initialise(StorageUnit *sui, const std::string &IDi);
37 Cycler &initialise(Deep_ptr<StorageUnit> &sui, const std::string &IDi) { return initialise(sui.get(), IDi); }
38
39 Cycler &setDiagnostic(bool newDia);
40 double getSafetyVmin() { return su->VMIN() * 0.99; }
41 double getSafetyVmax() { return su->VMAX() * 1.01; }
42
43 Status rest(double tlim, double dt, int ndt_data, ThroughputData &th);
44 Status CC(double I, double vlim, double tlim, double dt, int ndt_data, ThroughputData &th);
45 Status CV(double Vset, double Ilim, double tlim, double dt, int ndt_data, ThroughputData &th);
46 Status CCCV(double I, double Vset, double Ilim, double dt, int ndt_data, ThroughputData &th);
47 Status CCCV_with_tlim(double I, double Vset, double Ilim, double tlim, double dt, int ndt_data, ThroughputData &th);
48
49 Status Profile(std::span<double> I_vec, double vlim, double tlim, double dt, int ndt_data, double &Ah, double &Wh);
50
51 int storeData();
52 int writeData();
53
54 double testCapacity(double &Ah, double &ttot);
55 double testCapacity()
56 {
57 double Ah{}, ttot{};
58 return testCapacity(Ah, ttot);
59 }
60
61
62 StorageUnit *getSU() { return su; }
63};
64} // namespace slide
Definition: Cycler.hpp:19
int storeData()
Definition: Cycler.cpp:48
Status rest(double tlim, double dt, int ndt_data, ThroughputData &th)
Rest the storage unit for a given amount of time, ignoring voltage limits.
Definition: Cycler.cpp:76
Status Profile(std::span< double > I_vec, double vlim, double tlim, double dt, int ndt_data, double &Ah, double &Wh)
Definition: Cycler.cpp:646
int writeData()
Definition: Cycler.cpp:40
Cycler & initialise(Deep_ptr< StorageUnit > &sui, const std::string &IDi)
Definition: Cycler.hpp:37
Cycler(Deep_ptr< StorageUnit > &sui, const std::string &IDi)
Definition: Cycler.hpp:34
Cycler()=default
Status CCCV_with_tlim(double I, double Vset, double Ilim, double tlim, double dt, int ndt_data, ThroughputData &th)
Definition: Cycler.cpp:528
double getSafetyVmax()
Definition: Cycler.hpp:41
Cycler(StorageUnit *sui, const std::string &IDi)
Definition: Cycler.hpp:33
Cycler & setDiagnostic(bool newDia)
Definition: Cycler.cpp:28
Status CV(double Vset, double Ilim, double tlim, double dt, int ndt_data, ThroughputData &th)
Definition: Cycler.cpp:412
Cycler & initialise(StorageUnit *sui, const std::string &IDi)
Definition: Cycler.cpp:21
double testCapacity()
Definition: Cycler.hpp:55
StorageUnit * getSU()
Definition: Cycler.hpp:62
Status CC(double I, double vlim, double tlim, double dt, int ndt_data, ThroughputData &th)
Apply a constant current to the connected storage unit until either a voltage or time limit is reache...
Definition: Cycler.cpp:226
double getSafetyVmin()
#TODO probably causing many calculations.
Definition: Cycler.hpp:40
Cycler(StorageUnit *sui)
Definition: Cycler.hpp:32
Definition: Deep_ptr.hpp:23
T * get() const
Get the raw pointer.
Definition: Deep_ptr.hpp:76
Definition: StorageUnit.hpp:27
virtual double VMAX() const =0
safety cut off
virtual double VMIN() const =0
safety cut off
Slide namespace contains all the types, classes, and functions for the simulation framework.
Definition: Cell.hpp:27
Status
Definition: Status.hpp:15
CCCV
Definition: simulate_ECM_modules.m:16
out I
Definition: squeeze_variables.m:14
Definition: State.hpp:24