418 lines
17 KiB
Markdown
418 lines
17 KiB
Markdown
Below is a **paper blueprint** that matches COMAP’s required elements (continuous-time model, TTE, sensitivity, uncertainty, recommendations, validation) and is **logically aligned** with your mechanistic narrative + CPL/ODE structure and your simulation/robustness→sensitivity→UQ workflow .
|
||
|
||
---
|
||
|
||
## 0) One-page Summary Sheet (executive-style)
|
||
|
||
### Logical progression
|
||
|
||
1. What you built (continuous-time dynamical model + CPL closure).
|
||
2. What you predicted (baseline TTE + scenario deltas + uncertainty bands).
|
||
3. What drives rapid drain (ranked drivers + mechanism).
|
||
4. What users/OS should do (actionable recommendations, prioritized).
|
||
|
||
### Must include (data/evidence)
|
||
|
||
* **Headline baseline TTE**: 4.60 h (z0=1.0), plus 10/50/90% or CI summary.
|
||
* **Biggest drain drivers** with quantified impact: e.g., Poor signal −1.82 h; Cold −1.45 h; show ranking table.
|
||
* **Global sensitivity ranking** (total-order Sobol ST): k_L, k_C, κ, … with values.
|
||
* **UQ statement**: mean/std/CI + survival curve milestone (e.g., S(t)=1 until ~4.25h, then drop).
|
||
* One sentence on **validation**: step-halving passes + feasibility handling (Δ≥0).
|
||
|
||
---
|
||
|
||
## 1) Introduction and problem framing
|
||
|
||
### Logical progression
|
||
|
||
1. Define “unpredictable battery life” as **deterministic dynamics under varying inputs**, not randomness.
|
||
2. State deliverables required by COMAP: SOC(t), TTE under scenarios, sensitivity, recommendations.
|
||
3. Preview your modeling philosophy: **explicit continuous-time** + interpretable mechanisms (screen/CPU/network/temp/aging).
|
||
|
||
### Must include (arguments/evidence)
|
||
|
||
* A short “causal chain” narrative: inputs → power → current → states → voltage → TTE (you already have this).
|
||
* Clear statement that the model is **continuous-time ODE + algebraic closure**, not curve fitting/black box.
|
||
* Define key terms: SOC, TTE, drivers of drain (align with problem glossary).
|
||
|
||
---
|
||
|
||
## 2) Model overview: states, inputs, outputs, and assumptions
|
||
|
||
### Logical progression
|
||
|
||
1. Present the system as state-space: **x(t), u(t), outputs**.
|
||
2. Explain *why* each state exists (memory/physics): polarization, thermal, radio-tail, SOH.
|
||
3. List assumptions from strongest to weakest (and what they buy you).
|
||
|
||
### Must include (specific content)
|
||
|
||
* **Table: variables with units and bounds**
|
||
|
||
* States: z, v_p, T_b, S, w
|
||
* Inputs: L, C, N, Ψ, T_a
|
||
* Outputs: V_term(t), SOC(t), TTE
|
||
* **Assumptions (must be explicit):**
|
||
|
||
* Smartphone ≈ constant-power-load at short timescale (CPL).
|
||
* 1st-order Thevenin ECM adequate for transient voltage memory.
|
||
* Lumped thermal model; SOH constant over a single discharge (but model-ready for multi-cycle).
|
||
|
||
---
|
||
|
||
## 3) Governing equations (core contribution)
|
||
|
||
### Logical progression (recommended subsection order)
|
||
|
||
3.1 **Power mapping** (usage → demand): P_tot(L,C,N,Ψ,w).
|
||
3.2 **Electro-thermal-aging constitutive laws**: V_oc(z), R0(T_b,S), Q_eff(T_b,S).
|
||
3.3 **CPL closure**: solve current algebraically each instant.
|
||
3.4 **ODE system**: dz/dt, dv_p/dt, dT_b/dt, dw/dt (+ optional dS/dt).
|
||
3.5 **Guards/constraints**: z_min, Q_eff_floor, clamping, feasibility Δ≥0.
|
||
|
||
### Must include (equations + interpretive evidence)
|
||
|
||
* **Explicit equations** (as you already froze):
|
||
|
||
* P_scr, P_cpu, P_net (include Ψ penalty + radio tail term).
|
||
* V_term = V_oc − v_p − I R0 and ODEs for z, v_p, T_b, w.
|
||
* CPL quadratic and chosen root + discriminant Δ.
|
||
|
||
* **Physical interpretation paragraph per block**
|
||
|
||
* Why weak signal increases power (Ψ^{−κ} factor).
|
||
* Why cold reduces deliverable power (R0↑, Q_eff↓).
|
||
* Why CPL creates “end-of-discharge acceleration” (feedback loop).
|
||
|
||
* **Non-negotiable rigor items**
|
||
|
||
* Define z_eff = max(z, z_min) to avoid 1/z singularity (show where it enters).
|
||
* Define Q_eff floor and clamping rules.
|
||
* State feasibility: if Δ<0, requested power exceeds deliverable → shutdown/collapse mechanism.
|
||
|
||
---
|
||
|
||
## 4) Time-to-empty (TTE) definition and event logic
|
||
|
||
### Logical progression
|
||
|
||
1. Define termination events **mathematically**: gV, gz, gΔ.
|
||
2. Explain why multiple termination modes exist (voltage cutoff vs SOC exhaustion vs deliverability collapse).
|
||
3. Define numerical event location (interpolation) and tie-breaking.
|
||
|
||
### Must include (data/evidence)
|
||
|
||
* **Event function definitions**:
|
||
|
||
* gV(t)=V_term−V_cut, gz(t)=z, gΔ(t)=Δ
|
||
* Terminate at earliest crossing (min t*).
|
||
* **Interpolation formula** for t* between samples (include exact linear formula).
|
||
* **Unit-consistent TTE**: TTE = t* − t0.
|
||
* **Worked micro-example** (1–2 sentences) illustrating interpolation (optional but strengthens clarity).
|
||
|
||
This directly satisfies “compute/approximate TTE under various initial charges and scenarios.”
|
||
|
||
---
|
||
|
||
## 5) Parameterization and data support (credibility section)
|
||
|
||
### Logical progression
|
||
|
||
1. Split parameters into **(i) physical battery**, **(ii) phone power mapping**, **(iii) thermal**, **(iv) radio tail**.
|
||
2. State how each group can be obtained:
|
||
|
||
* literature/specs, simple experiments, or plausibility constraints.
|
||
3. Include a “plausibility check” pipeline (energy, ranges, signs).
|
||
|
||
### Must include (specific evidence)
|
||
|
||
* **Full parameter table** with units + baseline values (your BASELINE_CONFIG_v1).
|
||
* **Justification strategy** (even if you used synthetic values):
|
||
|
||
* Which parameters are “tuned” vs “known.”
|
||
* Show at least one sanity anchor: nominal energy ≈ 14.8 Wh for 4 Ah @ 3.7 V (you used this as an energy check).
|
||
* **Validation constraints**:
|
||
|
||
* P_tot in plausible W-range; V_term stays finite; Δ≥0 except at collapse; SOC monotone when I≥0.
|
||
|
||
---
|
||
|
||
## 6) Numerical method and reproducibility
|
||
|
||
### Logical progression
|
||
|
||
1. Present solver choice: RK4 with nested CPL solve “inside stages.”
|
||
2. Show the algorithm pipeline and what is recorded each step (trajectory columns).
|
||
3. State robustness checks: step-halving + event-location stability.
|
||
|
||
### Must include (data/evidence)
|
||
|
||
* **Algorithm box** (pseudo-code is fine):
|
||
|
||
* compute P_tot → constitutive → Δ → I → RHS → RK4 step → clamp → event check.
|
||
* **Step-halving table** (you already have): z_diff_inf and relative TTE error, all passing.
|
||
* **Event bracket report** (previous/curr g values + interpolated t*), proving event detection is stable.
|
||
* **Reproducibility controls**: dt, t_max, seed, scenario definition.
|
||
|
||
---
|
||
|
||
## 7) Baseline results: SOC curves and TTE vs initial charge
|
||
|
||
### Logical progression
|
||
|
||
1. Present baseline scenario definition (6 segments + smooth transitions).
|
||
2. Show trajectory plots (SOC, I/P_tot, T_b, Δ).
|
||
3. Summarize TTE across z0 options; connect to mechanism.
|
||
|
||
### Must include (data/evidence)
|
||
|
||
* **TTE table** for z0={1,0.75,0.5,0.25}: TTE_hours, reason, avg power, max current, max temperature.
|
||
* **Figures (minimum set):**
|
||
|
||
1. z(t)
|
||
2. I(t) and P_tot(t)
|
||
3. T_b(t)
|
||
4. Δ(t)
|
||
* **Energy plausibility check**: integrate P_tot over [0,t*] and compare to nominal battery energy.
|
||
|
||
---
|
||
|
||
## 8) Scenario analysis: “drivers of rapid drain”
|
||
|
||
### Logical progression
|
||
|
||
1. Define controlled scenario set (one-factor ablations + stress tests).
|
||
2. Compare ΔTTE relative to baseline; rank drivers.
|
||
3. For top drivers, show “mechanistic signature” metrics (why it happened in your model).
|
||
|
||
### Must include (data/evidence)
|
||
|
||
* **Scenario matrix table** (S0–S7) with TTE and ΔTTE.
|
||
* **Driver ranking** list (largest reductions first).
|
||
* **Mechanistic signatures for top 2–3 drain cases**:
|
||
|
||
* avg(P_tot), max(I), min(Δ), avg(R0), avg(Q_eff).
|
||
* **Mechanistic explanation paragraphs**:
|
||
|
||
* Poor signal: Ψ penalty increases P_net → Δ decreases → higher I → faster SOC decline.
|
||
* Cold: Arrhenius R0↑ + Q_eff↓ → earlier V_cut termination (switching reason matters).
|
||
|
||
This directly answers COMAP’s “identify drivers; which conditions reduce battery life most; which change little.”
|
||
|
||
---
|
||
|
||
## 9) Sensitivity analysis (assumptions + parameters)
|
||
|
||
### Logical progression
|
||
|
||
1. Distinguish **local** (one-at-a-time) from **global** sensitivity.
|
||
2. Use Sobol/Saltelli for global ranking of TTE drivers.
|
||
3. Interpret what high ST means operationally (what the OS/user can influence).
|
||
|
||
### Must include (data/evidence)
|
||
|
||
* **Sobol results table**: S_i and ST_i for exactly the selected parameters (k_L, k_C, κ, …).
|
||
* **Sampling details**: N_base, seed, ranges (±20%), failure count = 0.
|
||
* **Interpretation**: e.g., k_L dominating suggests brightness policy is powerful; κ indicates signal-quality management is critical.
|
||
|
||
This fulfills “examine how predictions vary with assumptions/parameters/usage fluctuations.”
|
||
|
||
---
|
||
|
||
## 10) Uncertainty quantification (usage variability) + survival curve
|
||
|
||
### Logical progression
|
||
|
||
1. Define the uncertainty source: **stochastic usage paths** around baseline.
|
||
2. Explain OU perturbations and why they are appropriate (mean-reverting behavior).
|
||
3. Convert Monte Carlo TTE samples into decision-friendly outputs (CI, percentiles, survival curve).
|
||
|
||
### Must include (data/evidence)
|
||
|
||
* **UQ summary**: mean/std/p10/p50/p90 and CI95 for mean.
|
||
* **Survival curve table/plot**: S(t)=P(TTE>t) on fixed grid.
|
||
* **Reproducibility**: M, seed, θ, σ, dt.
|
||
* **Discussion**: what uncertainty means for “unpredictability” (bounded variability, not arbitrary).
|
||
|
||
---
|
||
|
||
## 11) Recommendations (user + operating system)
|
||
|
||
### Logical progression
|
||
|
||
1. Convert scenario + sensitivity findings into ranked interventions.
|
||
2. Provide user-facing recommendations (actions) and OS-facing (policies).
|
||
3. Tie each recommendation to a model mechanism and quantified benefit.
|
||
|
||
### Must include (data/evidence)
|
||
|
||
* **Ranked recommendation table**:
|
||
|
||
* Action, mechanism, expected ΔTTE (hours/%), tradeoff.
|
||
* Examples you can justify directly from your tables:
|
||
|
||
* Improve signal conditions / switch network modes in poor signal (largest loss case).
|
||
* Reduce brightness and CPU load (largest gains in ablations; aligns with Sobol ranking).
|
||
* Cold-weather mitigation: thermal management / conservative power mode to avoid V_cut early.
|
||
* Explicitly connect to COMAP’s recommendation prompt.
|
||
|
||
---
|
||
|
||
## 12) Model validation, limitations, and extensions
|
||
|
||
### Logical progression
|
||
|
||
1. Validation checks you performed (numerical + physical).
|
||
2. Where the model performs well vs poorly (conditions).
|
||
3. Extensions that preserve continuous-time, mechanistic nature.
|
||
|
||
### Must include (data/evidence)
|
||
|
||
* **Validation evidence**
|
||
|
||
* Dimensional consistency checklist (units).
|
||
* Monotonicity dz/dt ≤ 0 for I ≥ 0.
|
||
* Step-halving pass + event stability report.
|
||
* **Limitations**
|
||
|
||
* Parameter realism (if synthetic) and what data would tighten it.
|
||
* Single-node thermal; simplified CPU/network power mapping; SOH dynamics negligible in single discharge.
|
||
* **Extensions**
|
||
|
||
* Multi-cycle SOH (SEI-inspired) already proposed in your model narrative as an upgrade path.
|
||
* Multi-node thermal / OS control loops / adaptive power caps (still continuous-time).
|
||
|
||
---
|
||
|
||
## 13) References + AI Use Report
|
||
|
||
### Must include
|
||
|
||
* Proper citations for any literature/specs used for parameters and for OCV/ECM modeling (your BibTeX draft is a good start).
|
||
* COMAP-required **AI Use Report** appended (doesn’t count toward 25 pages).
|
||
|
||
---
|
||
|
||
### If you want a “no-miss” checklist
|
||
|
||
I can turn the above into a **page-by-page outline** (25-page cap aware) with:
|
||
|
||
* exact figure placements,
|
||
* exact table placements,
|
||
* and paragraph-level “claim → evidence → implication” bullets for each subsection.
|
||
|
||
{
|
||
"model_name": "MODEL_SPEC",
|
||
"version": "1.0",
|
||
"status": "frozen",
|
||
"states": [
|
||
{ "name": "z", "unit": "dimensionless", "bounds": [0, 1], "description": "State of Charge" },
|
||
{ "name": "v_p", "unit": "V", "bounds": [null, null], "description": "Polarization voltage" },
|
||
{ "name": "T_b", "unit": "K", "bounds": [0, null], "description": "Battery temperature" },
|
||
{ "name": "S", "unit": "dimensionless", "bounds": [0, 1], "description": "State of Health" },
|
||
{ "name": "w", "unit": "dimensionless", "bounds": [0, 1], "description": "Radio tail activation level" }
|
||
],
|
||
"inputs": [
|
||
{ "name": "L", "unit": "dimensionless", "bounds": [0, 1], "description": "Screen brightness" },
|
||
{ "name": "C", "unit": "dimensionless", "bounds": [0, 1], "description": "Processor load" },
|
||
{ "name": "N", "unit": "dimensionless", "bounds": [0, 1], "description": "Network activity" },
|
||
{ "name": "Ψ", "unit": "dimensionless", "bounds": [0, 1], "description": "Signal quality" },
|
||
{ "name": "T_a", "unit": "K", "bounds": [null, null], "description": "Ambient temperature" }
|
||
],
|
||
"parameters": [
|
||
{ "name": "P_bg", "unit": "W", "description": "Background power" },
|
||
{ "name": "P_scr0", "unit": "W", "description": "Screen baseline power" },
|
||
{ "name": "k_L", "unit": "W", "description": "Screen scaling coefficient" },
|
||
{ "name": "gamma", "unit": "dimensionless", "description": "Screen power exponent" },
|
||
{ "name": "P_cpu0", "unit": "W", "description": "CPU baseline power" },
|
||
{ "name": "k_C", "unit": "W", "description": "CPU scaling coefficient" },
|
||
{ "name": "eta", "unit": "dimensionless", "description": "CPU power exponent" },
|
||
{ "name": "P_net0", "unit": "W", "description": "Network baseline power" },
|
||
{ "name": "k_N", "unit": "W", "description": "Network scaling coefficient" },
|
||
{ "name": "epsilon", "unit": "dimensionless", "description": "Signal guard constant" },
|
||
{ "name": "kappa", "unit": "dimensionless", "description": "Signal penalty exponent" },
|
||
{ "name": "k_tail", "unit": "W", "description": "Radio tail power coefficient" },
|
||
{ "name": "tau_up", "unit": "s", "description": "Radio activation time constant" },
|
||
{ "name": "tau_down", "unit": "s", "description": "Radio decay time constant" },
|
||
{ "name": "C1", "unit": "F", "description": "Polarization capacitance" },
|
||
{ "name": "R1", "unit": "Ohm", "description": "Polarization resistance" },
|
||
{ "name": "hA", "unit": "W/K", "description": "Convective heat transfer coefficient" },
|
||
{ "name": "C_th", "unit": "J/K", "description": "Thermal capacitance" },
|
||
{ "name": "E0", "unit": "V", "description": "Standard potential" },
|
||
{ "name": "K", "unit": "V", "description": "Polarization constant" },
|
||
{ "name": "A", "unit": "V", "description": "Exponential zone amplitude" },
|
||
{ "name": "B", "unit": "dimensionless", "description": "Exponential zone time constant" },
|
||
{ "name": "R_ref", "unit": "Ohm", "description": "Reference internal resistance" },
|
||
{ "name": "E_a", "unit": "J/mol", "description": "Activation energy" },
|
||
{ "name": "R_g", "unit": "J/(mol*K)", "description": "Gas constant" },
|
||
{ "name": "T_ref", "unit": "K", "description": "Reference temperature" },
|
||
{ "name": "eta_R", "unit": "dimensionless", "description": "Aging resistance factor" },
|
||
{ "name": "Q_nom", "unit": "Ah", "description": "Nominal capacity" },
|
||
{ "name": "alpha_Q", "unit": "1/K", "description": "Temperature capacity coefficient" },
|
||
{ "name": "V_cut", "unit": "V", "description": "Cutoff voltage" },
|
||
{ "name": "z_min", "unit": "dimensionless", "description": "SOC singularity guard" },
|
||
{ "name": "Q_eff_floor", "unit": "Ah", "description": "Minimum capacity floor" }
|
||
],
|
||
"equations": [
|
||
"P_scr = P_scr0 + k_L * L^gamma",
|
||
"P_cpu = P_cpu0 + k_C * C^eta",
|
||
"P_net = P_net0 + k_N * N / (Ψ + epsilon)^kappa + k_tail * w",
|
||
"P_tot = P_bg + P_scr + P_cpu + P_net",
|
||
"z_eff = max(z, z_min)",
|
||
"V_oc = E0 - K * (1/z_eff - 1) + A * exp(-B * (1 - z))",
|
||
"R0 = R_ref * exp((E_a / R_g) * (1/T_b - 1/T_ref)) * (1 + eta_R * (1 - S))",
|
||
"Q_eff = max(Q_nom * S * (1 - alpha_Q * (T_ref - T_b)), Q_eff_floor)",
|
||
"Delta = (V_oc - v_p)^2 - 4 * R0 * P_tot",
|
||
"I = (V_oc - v_p - sqrt(Delta)) / (2 * R0)",
|
||
"V_term = V_oc - v_p - I * R0",
|
||
"dz/dt = -I / (3600 * Q_eff)",
|
||
"dv_p/dt = I/C1 - v_p / (R1 * C1)",
|
||
"dT_b/dt = (I^2 * R0 + I * v_p - hA * (T_b - T_a)) / C_th",
|
||
"sigma_N = min(1, N)",
|
||
"tau_N = (sigma_N >= w) ? tau_up : tau_down",
|
||
"dw/dt = (sigma_N - w) / tau_N"
|
||
],
|
||
"guards": {
|
||
"z_min": "z_eff = max(z, z_min)",
|
||
"Q_eff_floor": "Q_eff = max(Q_calc, Q_eff_floor)",
|
||
"clamp_rules": [
|
||
"z = clamp(z, 0, 1)",
|
||
"S = clamp(S, 0, 1)",
|
||
"w = clamp(w, 0, 1)"
|
||
]
|
||
},
|
||
"events": {
|
||
"gV": "V_term(t) - V_cut",
|
||
"gz": "z(t)",
|
||
"gDelta": "Delta(t)",
|
||
"termination_logic": "Terminate at t* = min(t | gV(t) <= 0 OR gz(t) <= 0 OR gDelta(t) <= 0)",
|
||
"termination_reasons": [
|
||
"V_CUTOFF",
|
||
"SOC_ZERO",
|
||
"DELTA_ZERO"
|
||
]
|
||
},
|
||
"tte_definition": {
|
||
"formula": "TTE = t* - t0",
|
||
"interpolation": "t* = t_{n-1} + (t_n - t_{n-1}) * (0 - g(t_{n-1})) / (g(t_n) - g(t_{n-1}))",
|
||
"tie_breaking": "Earliest t* across all event functions; if identical, priority: DELTA_ZERO > V_CUTOFF > SOC_ZERO"
|
||
},
|
||
"numerics": {
|
||
"method": "RK4_nested_CPL",
|
||
"dt_symbol": "dt",
|
||
"stage_recompute_current": true
|
||
},
|
||
"validation": {
|
||
"dimension_check": [
|
||
"P_tot [W]",
|
||
"V_term [V]",
|
||
"I [A]",
|
||
"dz/dt [1/s]",
|
||
"dT_b/dt [K/s]"
|
||
],
|
||
"monotonicity_check": "If I >= 0, then dz/dt must be <= 0",
|
||
"feasibility_check": "Delta must be >= 0; if Delta < 0 at any evaluation, trigger DELTA_ZERO event"
|
||
}
|
||
}
|
||
|