Skip to content

NMC Gr Life Model Update to account for small DOD cycles#748

Merged
dguittet merged 3 commits into
patchfrom
ssc_747
Feb 7, 2022
Merged

NMC Gr Life Model Update to account for small DOD cycles#748
dguittet merged 3 commits into
patchfrom
ssc_747

Conversation

@dguittet

@dguittet dguittet commented Feb 4, 2022

Copy link
Copy Markdown
Collaborator

Pull in updates that multiplies number of cycles by the DOD. Update the tests

close #747

@dguittet dguittet added this to the 2021.12.02 Patch 1 milestone Feb 4, 2022
@dguittet dguittet requested a review from brtietz February 7, 2022 18:01
double dQLi2dt = b2 * (double)dn_cycles;
double dQLi2dt = 0;
for (auto & DOD : state->cycle->cycle_DOD_range){
dQLi2dt += pow(DOD * 1e-2, 2);

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks like a great way to translate from rainflow cycles to full equivalent cycles. Should the function in estimateCycleDamage() use the same formulation?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In lib_battery_dispatch_automatic_fom.cpp L344, the comment before calculating m_cycleCost says "Calculate assuming maximum depth of discharge (most conservative assumption)", which sounds like it is assuming an FEC count rather than rainflow. It is also more conservative.

The current estimated cycle cost is a function of the average qNeg per rainflow cycle, changing that to per FEC should increase the cost. For instance, 10% degradation over 50 rainflow cycles is smaller than 10% degradation over 10 FECs. So if we take the average per FEC instead, the cycle cost estimate will be larger.

If the three algorithms (automatic BTM, FOM and PV Smoothing though with a quick search, I don't actually see it being used after it's calculated) that use estimateCycleCost tend to go for a 80% "full" cycle per day, then the two values will be pretty similar.

I don't see a reason to switch, but curious about your perspective from how the dispatch algorithms use that value.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see your point that the cycle cost function should correlate to how the algorithms are actually charging/discharging. Here's a quick summary:

FOM economic dispatch will attempt to charge and discharge at full power (L267), so the assumed DOD would depend on the duration of the battery. In this sense, it might be over-counting the cost of cycling, since the cycle penalty is applied per-timestep rather than per cycle (it also appears to be applied to both charging and discharging - see L192 - 236).

BTM price singals dispatch definitely uses the rainflow assumption - it will explicitly modify the cycle cost value by a rainflow-like metric during dispatch planning (L603).

PV smoothing does not consider the cost of cycling. It's dispatch decisions are based on current and forecast power, no units of $ are ever presented.

So that seems match the existing convention of using rainflow cycles for the cycle number in the cost function, and it shouldn't be changed. That said, I think that comment (L344) is misleading, since DOD isn't an input parameter. The cycle-life algorithm uses average DOD, and it looks like both the NMC and LMO/LTO should work out to an average as well.

@brtietz brtietz self-requested a review February 7, 2022 20:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

NMC/Gr Lifetime Model is too aggressive with microcycles in battery profile

3 participants