SLIDE  3.0.0
A simulator for lithium-ion battery pack degradation
Loading...
Searching...
No Matches
degradation.hpp
Go to the documentation of this file.
1/*
2 * Degradation.hpp
3 *
4 * Header file for the degradation simulations.
5 * The exact degradation procedures are defined in the Cycler.
6 * In the functions defined here, the functions from the Cycler are called various times with slightly different parameters (e.g. different temperatures, C rates, etc).
7 * As such, we can simulate the effect the different parameters have on battery degradation
8 *
9 * Copyright (c) 2019, The Chancellor, Masters and Scholars of the University
10 * of Oxford, VITO nv, and the 'Slide' Developers.
11 * See the licence file LICENCE.txt for more information.
12 */
13
14#pragma once
15
16#include "Cell.hpp"
17#include "settings/settings.hpp"
18
19#include <cmath>
20#include <iostream>
21#include <fstream>
22#include <cassert>
23#include <memory>
24//#include <thread>
25
28{
29 double Vma{ 4.2 };
30 double Vmi{ 2.7 };
31 double Tc{ 45 };
32 double Ccha{ 1 };
33 double Cdis{ 1 };
34 double SOCma{ 100 };
35 double SOCmi{ 0 };
36
37 CycleAgeingConfig(double Vma, double Vmi, double Tc, double Ccha, double Cdis, double SOCma, double SOCmi)
38 : Vma(Vma), Vmi(Vmi), Tc(Tc), Ccha(Ccha), Cdis(Cdis), SOCma(SOCma), SOCmi(SOCmi) {}
39
40 double Ti() const { return Tc + PhyConst::Kelvin; }
41 std::string get_name(const std::string &pref) const
42 {
44 return pref + "T" + std::to_string((int)Tc) + "_" + std::to_string((int)Ccha) + "C" + std::to_string((int)Cdis) + "D" + "_" + "SOC" + std::to_string((int)SOCmi) + "-" + std::to_string((int)SOCma);
45 }
46};
47
49{
50 double V{ 4.2 };
51 double Tc{ 5 };
52 double SOC{ 100 };
53
54 CalendarAgeingConfig(double V, double Tc, double SOC) : V(V), Tc(Tc), SOC(SOC) {}
55
56 double Ti() const { return Tc + PhyConst::Kelvin; }
57 std::string get_name(const std::string &pref) const
58 {
60 return pref + "Cal-T" + std::to_string((int)Tc) + "_SOC" + std::to_string((int)SOC);
61 }
62};
63
65{
66 double Vma{ 4.2 };
67 double Vmi{ 2.7 };
68 double Tc{ 45 };
69 double SOCma{ 100 };
70 double SOCmi{ 0 };
71 std::string csvName{ "Current Profile drive cycle HWFET.csv" };
72 std::string namePrefix{ "prof-HWFET" };
73
74 ProfileAgeingConfig(double Vma, double Vmi, double Tc, double SOCma, double SOCmi, std::string &csvName, std::string &namePrefix)
76
77 double Ti() const { return Tc + PhyConst::Kelvin; }
78 std::string get_name(const std::string &pref) const
79 {
81 return pref + namePrefix + "-T" + std::to_string((int)Tc) + "_" + "SOC" + std::to_string((int)SOCmi) + "-" + std::to_string((int)SOCma);
82 }
83};
84
86void Calendar_one(const struct slide::Model_SPM &M, const struct DEG_ID &degid, int cellType, int verbose,
87 double V, double Ti, int Time, int mode, int timeCycleData, int timeCheck, struct checkUpProcedure &proc, std::string name);
88void Cycle_one(const struct slide::Model_SPM &M, const struct DEG_ID &degid, int cellType, int verbose, double Vma, double Vmi,
89 double Ccha, bool CVcha, double Icutcha, double Cdis, bool CVdis, double Icutdis, double Ti, int timeCycleData, int nrCycles, int nrCap, struct checkUpProcedure &proc, std::string name);
90void Profile_one(const struct slide::Model_SPM &M, const struct DEG_ID &degid, int cellType, int verbose, std::string profName, int n, int limit,
91 double Vma, double Vmi, double Ti, int timeCycleData, int nrProfiles, int nrCap, struct checkUpProcedure &proc, std::string name);
92
94void CycleAgeing(const struct slide::Model_SPM &M, std::string pref, const struct DEG_ID &degid, int cellType, int verbose);
95void CalendarAgeing(const struct slide::Model_SPM &M, std::string pref, const struct DEG_ID &degid, int cellType, int verbose);
96void ProfileAgeing(const struct slide::Model_SPM &M, std::string pref, const struct DEG_ID &degid, int cellType, int verbose);
97
99
100void Cycle_one(const struct slide::Model_SPM &M, const struct DEG_ID &degid, int cellType, int verbose,
101 const struct CycleAgeingConfig &cycAgConfig, bool CVcha, double Icutcha, bool CVdis, double Icutdis, int timeCycleData, int nrCycles, int nrCap, struct checkUpProcedure &proc, const std::string &pref);
Cell class definition.
void CalendarAgeing(const struct slide::Model_SPM &M, std::string pref, const struct DEG_ID &degid, int cellType, int verbose)
simulate a range of calendar ageing experiments (different temperatures, SOC levels)
Definition: degradation.cpp:494
void Calendar_one(const struct slide::Model_SPM &M, const struct DEG_ID &degid, int cellType, int verbose, double V, double Ti, int Time, int mode, int timeCycleData, int timeCheck, struct checkUpProcedure &proc, std::string name)
Definition: degradation.cpp:38
void ProfileAgeing(const struct slide::Model_SPM &M, std::string pref, const struct DEG_ID &degid, int cellType, int verbose)
simulate a range of drive cycle experiments (different cycles, different temperatures,...
Definition: degradation.cpp:626
void Cycle_one(const struct slide::Model_SPM &M, const struct DEG_ID &degid, int cellType, int verbose, double Vma, double Vmi, double Ccha, bool CVcha, double Icutcha, double Cdis, bool CVdis, double Icutdis, double Ti, int timeCycleData, int nrCycles, int nrCap, struct checkUpProcedure &proc, std::string name)
Definition: degradation.cpp:137
void Profile_one(const struct slide::Model_SPM &M, const struct DEG_ID &degid, int cellType, int verbose, std::string profName, int n, int limit, double Vma, double Vmi, double Ti, int timeCycleData, int nrProfiles, int nrCap, struct checkUpProcedure &proc, std::string name)
Degradation experiments.
Definition: degradation.cpp:240
void CycleAgeing(const struct slide::Model_SPM &M, std::string pref, const struct DEG_ID &degid, int cellType, int verbose)
simulate a range of cycle ageing experiments (different temperatures, SOC windows,...
Definition: degradation.cpp:338
out V
Definition: squeeze_variables.m:16
Definition: degradation.hpp:49
double SOC
Definition: degradation.hpp:52
double Tc
Definition: degradation.hpp:51
std::string get_name(const std::string &pref) const
Definition: degradation.hpp:57
CalendarAgeingConfig(double V, double Tc, double SOC)
Definition: degradation.hpp:54
double Ti() const
Definition: degradation.hpp:56
double V
Definition: degradation.hpp:50
< Definitions of custom datatypes:
Definition: degradation.hpp:28
double SOCmi
Definition: degradation.hpp:35
std::string get_name(const std::string &pref) const
Definition: degradation.hpp:41
double Ti() const
Definition: degradation.hpp:40
double SOCma
Definition: degradation.hpp:34
double Tc
Definition: degradation.hpp:31
CycleAgeingConfig(double Vma, double Vmi, double Tc, double Ccha, double Cdis, double SOCma, double SOCmi)
Definition: degradation.hpp:37
double Ccha
Definition: degradation.hpp:32
double Vmi
Definition: degradation.hpp:30
double Cdis
Definition: degradation.hpp:33
double Vma
Definition: degradation.hpp:29
Auxiliary functions for multi-threaded simulations.
Definition: degradation.hpp:65
double Tc
Definition: degradation.hpp:68
std::string get_name(const std::string &pref) const
Definition: degradation.hpp:78
double Ti() const
Definition: degradation.hpp:77
double Vmi
Definition: degradation.hpp:67
double SOCmi
Definition: degradation.hpp:70
double Vma
Definition: degradation.hpp:66
ProfileAgeingConfig(double Vma, double Vmi, double Tc, double SOCma, double SOCmi, std::string &csvName, std::string &namePrefix)
Definition: degradation.hpp:74
std::string namePrefix
Definition: degradation.hpp:72
double SOCma
Definition: degradation.hpp:69
std::string csvName
Definition: degradation.hpp:71
Definition: Model_SPM.hpp:24