Learning Plan Snapshot: Chapter 4 Complete → Chapter 5 Start
Snapshot Date: 2026-05-28
Completed: Chapter 4 (Full SPM Implementation & Voltage Coupling)
Next: Chapter 5 (SPMe — Single Particle Model with Electrolyte)
Overall Progress: 5/8 weeks of content completed (Chapters 1–4)
1. Overall Learning Roadmap
| Chapter |
Topic |
Status |
| Chapter 1 |
Electrochemistry Basics & OCV |
✅ Complete |
| Chapter 2 |
Diffusion Equation (Fick’s Second Law) |
✅ Complete |
| Chapter 3 |
Butler-Volmer Kinetics |
✅ Complete |
| Chapter 4 |
Full SPM Implementation & Voltage Coupling |
✅ Complete ← Just finished |
| Chapter 5 |
SPMe Model |
⏳ Next |
| Chapter 6 |
P2D Model |
⏳ |
| Chapter 7 |
Advanced Applications |
⏳ |
2. Chapter 4 Completion Report
2.1 Knowledge Points Review
| # |
Knowledge Point |
Mastery |
| 4.1 |
step() four-step causal order (B→C→D→A) |
✅ Understood voltage is result, not cause |
| 4.2 |
Step 1 formula derivation (units + sign convention) |
✅ Complete hand derivation |
| 4.3 |
Initial concentration distribution (uniform, diffusion steady state) |
✅ Corrected “center concentrated” misconception |
| 4.4 |
Voltage coupling expansion V = U_p+η_p−U_n−η_n |
✅ Sign verification |
| 4.5 |
Write spm_my.py from skeleton (8 TODOs) |
✅ Independently completed |
| 4.6 |
Numerical verification vs model.py |
✅ V diff = 0 nV |
| 4.7 |
Discharge curve: OCV change 348mV + η 33mV |
✅ Data conclusions |
| 4.8 |
C-rate effect: η grows with current, share increases |
✅ arcsinh sub-linearity |
| 4.9 |
Fully-implicit coupling: intra-step iteration unnecessary |
✅ Self-derived conclusion |
| 4.10 |
np.full() usage |
✅ Learned |
| Formula |
Description |
| j = ±i_app/(a_s·L·F) |
Current→flux, sign determined by oxidation/reduction |
| η = BV(j, c_s_surf) |
Flux→overpotential (Chapter 3) |
| Implicit Euler diffusion |
c_old + j·dr/D boundary condition (Chapter 2) |
| V = U_p + η_p − U_n − η_n |
Voltage coupling (this chapter’s core) |
| Cross-step coupling, not intra-step |
SPM coupling nature |
2.3 Code Produced
| File |
Description |
Status |
spm_my.py |
Independent SPM implementation (with TODO annotations preserved) |
✅ 0 nV diff vs model.py |
test_spm_my.py |
Verification script |
✅ |
visualize_discharge.py |
Discharge curve visualization |
✅ |
visualize_crate.py |
C-rate comparison visualization |
✅ |
analyze_voltage.py |
Voltage breakdown analysis |
✅ |
| Figure |
Content |
Status |
spm_discharge.png |
4-subplot: discharge curve + OCV evolution + η evolution + comparison |
✅ |
crate_comparison.png |
4-subplot: multi C-rate curves + η contribution + η detail + bar chart |
✅ |
step_dataflow.png |
SPM dataflow diagram |
✅ |
2.5 Pitfalls Encountered
| # |
Pitfall |
Correct Approach |
| 1 |
Wrong parameter order in build_diffusion_matrix |
Signature is (N, D, dt, dr, r); dt is 3rd argument |
| 2 |
Mistook diffusion matrix self._A_n for current i_app |
They are different variables |
| 3 |
Added def when calling a function |
def is only for definition; call without it |
| 4 |
self.alpha → self.p.alpha |
alpha lives in the parameter object |
| 5 |
Used anode diffusion matrix for cathode |
Cathode uses self._A_p |
3. Chapter 5 Preview
3.1 What Does SPMe Add on Top of SPM?
| What SPM Has |
What SPMe Adds |
| Two spherical particles (one each for anode/cathode) |
Electrolyte concentration varies along electrode thickness |
| Solid-phase diffusion (Fick’s Second Law) |
Liquid-phase diffusion + electromigration |
| BV interface reaction |
Reaction distribution in porous electrode |
| Electrolyte concentration c_e = constant |
c_e(x) varies with position |
3.2 Preview Questions
- SPM assumes c_e = 1000 mol/m³ (constant). In a real battery, lithium ions shuttle between anode and cathode, so the electrolyte concentration must have a gradient. If c_e near the anode differs from c_e near the cathode, how does this affect η on each side?
- The diffusion equation learned in Chapter 2 was in spherical coordinates. In SPMe, electrolyte concentration varies along one dimension (x, from anode to cathode) — what does this diffusion equation look like?
- “Porous electrode” means the electrode is not a solid block but a mixture of particles + pores. Electrolyte sits in the pores — what extra resistance does this create for ion transport? (Hint: Bruggeman correction)
3.3 Reading Materials
| Reference |
Chapter |
Content |
| [Brett] |
Ch5 §5.6 |
Diffusion + migration |
| [Brett] |
Ch2 §2.8-2.9 |
Ion motion in solution |
| [Li-ion] |
Ch5 |
Electrolyte |
| [Rechargeable] |
Ch1 §1.2.2.4 |
Complete polarization loss formula |
4. Chapter 4 Learning Experience
4.1 Teaching Corrections
| Signal |
Response |
| “Teach first, code later — don’t look at model.py first” |
Corrected teaching order: concept→derivation→skeleton→fill→compare |
| “Zero coding background” |
Started from np.full() basics |
| “No teaching during validation phase” |
Added back arcsinh sub-linearity derivation and step-by-step C-rate effect analysis |
| “Summary didn’t let the user derive” |
Added back four-step Q&A derivation chain for fully-implicit coupling |
4.2 Unique Discoveries in This Chapter
- In SPM, diffusion and BV do not mutually depend within a single step — diffusion doesn’t need η, and BV doesn’t need the entire c array. Coupling is cross-step.
- This means “fully-implicit coupling” iteration at the SPM level is not only unnecessary but mathematically impossible — there is no feedback loop.
- This “non-coupling” is precisely SPM’s advantage as a simplified model — low per-step computation, fast simulation.
5. How to Start Next Session
In the conversation, say:
“Please read learning/learning_notes_05_spme/session_05_background.md and begin Session 5 study.”
The AI will automatically read the background file and launch Chapter 5 in Q&A-guided teaching mode.
Plan snapshot end · Chapter 4 → Chapter 5