{
  "node": {
    "id": "term:coulomb-counting",
    "type": "Term",
    "label": "Coulomb counting",
    "properties": {
      "id": "coulomb-counting",
      "name": "Coulomb counting",
      "aka": [
        "ampere-hour counting"
      ],
      "section": "topic-state",
      "definition": "Estimating state of charge by integrating the measured current over time. Simple and fast, but sensor offset accumulates, so it is corrected against the OCV–SOC curve at rest or fused with it in a Kalman filter.",
      "formula": "SOC(t) = SOC₀ − ∫ I dt / Q",
      "related": [
        "state-of-charge",
        "ocv-soc-curve",
        "kalman-filter",
        "current-sensor"
      ],
      "example": {
        "title": "Integrate a discharge step",
        "text": "Starting at 80% SOC with a 5 Ah available capacity, an ideal 2 A discharge for 30 min removes 1 Ah and lowers SOC to 60%. This example takes discharge current as positive and ignores efficiency and sensor error."
      },
      "url": "https://lemonergy.com/learn/glossary/coulomb-counting/",
      "mentions": [
        "open-circuit-voltage"
      ]
    }
  },
  "edges": [
    {
      "id": "edge:usedIn/term:coulomb-counting/workflow:ocv-charge-balance",
      "source": "term:coulomb-counting",
      "target": "workflow:ocv-charge-balance",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:coulomb-counting/workflow:native-battery-charge-counter",
      "source": "term:coulomb-counting",
      "target": "workflow:native-battery-charge-counter",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:coulomb-counting/workflow:native-battery-variable-charge-counter",
      "source": "term:coulomb-counting",
      "target": "workflow:native-battery-variable-charge-counter",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:coulomb-counting/workflow:native-battery-energy-counter",
      "source": "term:coulomb-counting",
      "target": "workflow:native-battery-energy-counter",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:coulomb-counting/workflow:native-battery-variable-energy-counter",
      "source": "term:coulomb-counting",
      "target": "workflow:native-battery-variable-energy-counter",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:coulomb-counting/workflow:native-battery-capacity-fit",
      "source": "term:coulomb-counting",
      "target": "workflow:native-battery-capacity-fit",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:coulomb-counting/workflow:native-battery-weighted-capacity-fit",
      "source": "term:coulomb-counting",
      "target": "workflow:native-battery-weighted-capacity-fit",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:belongsTo/term:coulomb-counting/topic:topic-state",
      "source": "term:coulomb-counting",
      "target": "topic:topic-state",
      "type": "belongsTo",
      "properties": {
        "sourceFile": "terms.json"
      }
    },
    {
      "id": "edge:relatedTo/term:coulomb-counting/term:state-of-charge",
      "source": "term:coulomb-counting",
      "target": "term:state-of-charge",
      "type": "relatedTo",
      "properties": {
        "sourceFile": "terms.json",
        "meaning": "Related context; not a causal claim"
      }
    },
    {
      "id": "edge:relatedTo/term:coulomb-counting/term:ocv-soc-curve",
      "source": "term:coulomb-counting",
      "target": "term:ocv-soc-curve",
      "type": "relatedTo",
      "properties": {
        "sourceFile": "terms.json",
        "meaning": "Related context; not a causal claim"
      }
    },
    {
      "id": "edge:relatedTo/term:coulomb-counting/term:kalman-filter",
      "source": "term:coulomb-counting",
      "target": "term:kalman-filter",
      "type": "relatedTo",
      "properties": {
        "sourceFile": "terms.json",
        "meaning": "Related context; not a causal claim"
      }
    },
    {
      "id": "edge:relatedTo/term:coulomb-counting/term:current-sensor",
      "source": "term:coulomb-counting",
      "target": "term:current-sensor",
      "type": "relatedTo",
      "properties": {
        "sourceFile": "terms.json",
        "meaning": "Related context; not a causal claim"
      }
    },
    {
      "id": "edge:mentions/coulomb-counting/open-circuit-voltage",
      "source": "term:coulomb-counting",
      "target": "term:open-circuit-voltage",
      "type": "mentions",
      "properties": {
        "sourceFile": "terms.json",
        "method": "build_glossary.mention_index + mentions",
        "field": "definition",
        "meaning": "Text mention; not a causal claim"
      }
    },
    {
      "id": "edge:illustratedBy/term:coulomb-counting/visual:soc",
      "source": "term:coulomb-counting",
      "target": "visual:soc",
      "type": "illustratedBy",
      "properties": {
        "sourceFile": "visual-pages.json"
      }
    },
    {
      "id": "edge:cites/term:coulomb-counting/reference:plett-modeling",
      "source": "term:coulomb-counting",
      "target": "reference:plett-modeling",
      "type": "cites",
      "properties": {
        "sourceFile": "wiki-references.json",
        "scope": "direct technical reference"
      }
    }
  ],
  "neighbors": [
    {
      "id": "workflow:ocv-charge-balance",
      "type": "Workflow",
      "label": "Connect SOC and voltage",
      "properties": {
        "id": "ocv-charge-balance",
        "title": "Connect SOC and voltage",
        "kind": "studio",
        "summary": "The battery integrates charge and combines OCV with resistance.",
        "steps": [
          "Inspect capacity, initial SOC and OCV endpoints.",
          "Compare OCV with terminal voltage."
        ],
        "example": "OCV endpoints of 300 and 420 V give 360 V at 50% SOC. Charging at 10 A through 0.08 Ω adds 0.8 V.",
        "observe": "At unity coulombic efficiency, 10 A for 1 h adds ten percentage points to 100 Ah.",
        "limits": "Internal model SOC is not an estimate of an unknown physical battery. OCV is linear and resistance fixed.",
        "url": "https://design.lemonergy.com/cosim.html?example=charging-home",
        "label": "Open the Studio example",
        "evidence": [
          "js/charging-control.js",
          "js/charging-scenarios.js",
          "docs/CHARGING_BLOCKS_SPEC.md"
        ]
      }
    },
    {
      "id": "workflow:native-battery-charge-counter",
      "type": "Workflow",
      "label": "Charge counter worked example",
      "properties": {
        "id": "native-battery-charge-counter",
        "title": "Charge counter worked example",
        "kind": "studio",
        "summary": "Integrates signed throughput. Changing capacity preserves fraction and reports revaluation separately.",
        "steps": [
          "Review the block inputs, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare the output channels with the numerical checks; change one input and run again."
        ],
        "example": "Use the defaults below with Signed battery current = 2 A, Reset = 0 true / false. At 0 s, State of charge is 0.8 1 (fraction). Additional checks are listed below.",
        "observe": "Inspect the outputs and numerical checks on the block reference page.",
        "limits": "Current or power bias accumulates. Fraction clipping is reported as a boundary amount; it does not make the connected plant respect that boundary. Energy variants need capacity in joules. The example verifies numerical behavior for synthetic parameters. Cell characterization and validation for an intended use are separate tasks.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-battery-charge-counter",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-battery-variable-charge-counter",
      "type": "Workflow",
      "label": "Charge counter with capacity input worked example",
      "properties": {
        "id": "native-battery-variable-charge-counter",
        "title": "Charge counter with capacity input worked example",
        "kind": "studio",
        "summary": "Integrates signed throughput. Changing capacity preserves fraction and reports revaluation separately.",
        "steps": [
          "Review the block inputs, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare the output channels with the numerical checks; change one input and run again."
        ],
        "example": "Use the defaults below with Signed battery current = 2 A, Reset = 0 true / false, Charge capacity (Ah) = 2 Ah. At 0 s, State of charge is 0.8 1 (fraction). Additional checks are listed below.",
        "observe": "Inspect the outputs and numerical checks on the block reference page.",
        "limits": "Current or power bias accumulates. Fraction clipping is reported as a boundary amount; it does not make the connected plant respect that boundary. Energy variants need capacity in joules. The example verifies numerical behavior for synthetic parameters. Cell characterization and validation for an intended use are separate tasks.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-battery-variable-charge-counter",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-battery-energy-counter",
      "type": "Workflow",
      "label": "Energy counter worked example",
      "properties": {
        "id": "native-battery-energy-counter",
        "title": "Energy counter worked example",
        "kind": "studio",
        "summary": "Integrates signed throughput. Changing capacity preserves fraction and reports revaluation separately.",
        "steps": [
          "Review the block inputs, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare the output channels with the numerical checks; change one input and run again."
        ],
        "example": "Use the defaults below with Signed battery power = 2 W, Reset = 0 true / false. At 0 s, State of energy is 0.8 1 (fraction). Additional checks are listed below.",
        "observe": "Inspect the outputs and numerical checks on the block reference page.",
        "limits": "Current or power bias accumulates. Fraction clipping is reported as a boundary amount; it does not make the connected plant respect that boundary. Energy variants need capacity in joules. The example verifies numerical behavior for synthetic parameters. Cell characterization and validation for an intended use are separate tasks.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-battery-energy-counter",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-battery-variable-energy-counter",
      "type": "Workflow",
      "label": "Energy counter with capacity input worked example",
      "properties": {
        "id": "native-battery-variable-energy-counter",
        "title": "Energy counter with capacity input worked example",
        "kind": "studio",
        "summary": "Integrates signed throughput. Changing capacity preserves fraction and reports revaluation separately.",
        "steps": [
          "Review the block inputs, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare the output channels with the numerical checks; change one input and run again."
        ],
        "example": "Use the defaults below with Signed battery power = 2 W, Reset = 0 true / false, Energy capacity (J) = 7200 J. At 0 s, State of energy is 0.8 1 (fraction). Additional checks are listed below.",
        "observe": "Inspect the outputs and numerical checks on the block reference page.",
        "limits": "Current or power bias accumulates. Fraction clipping is reported as a boundary amount; it does not make the connected plant respect that boundary. Energy variants need capacity in joules. The example verifies numerical behavior for synthetic parameters. Cell characterization and validation for an intended use are separate tasks.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-battery-variable-energy-counter",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-battery-capacity-fit",
      "type": "Workflow",
      "label": "Capacity fit worked example",
      "properties": {
        "id": "native-battery-capacity-fit",
        "title": "Capacity fit worked example",
        "kind": "studio",
        "summary": "Fits charge capacity through the origin from aligned SOC-change and integrated-charge windows.",
        "steps": [
          "Review the block inputs, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare the output channels with the numerical checks; change one input and run again."
        ],
        "example": "Use the defaults below with SOC decrease per window = [0.1, 0.2, 0.3] 1 (fraction), Removed charge per window (Ah) = [0.2, 0.4, 0.6] Ah. At 0 s, Fitted capacity (Ah) is 2 Ah. Additional checks are listed below.",
        "observe": "Inspect the outputs and numerical checks on the block reference page.",
        "limits": "SOC and integrated charge must describe the same windows. Biased SOC or current measurements bias the fit; this operation does not collect or qualify those measurements. The example verifies numerical behavior for synthetic parameters. Cell characterization and validation for an intended use are separate tasks.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-battery-capacity-fit",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-battery-weighted-capacity-fit",
      "type": "Workflow",
      "label": "Weighted capacity fit worked example",
      "properties": {
        "id": "native-battery-weighted-capacity-fit",
        "title": "Weighted capacity fit worked example",
        "kind": "studio",
        "summary": "Fits charge capacity through the origin from aligned SOC-change and integrated-charge windows.",
        "steps": [
          "Review the block inputs, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare the output channels with the numerical checks; change one input and run again."
        ],
        "example": "Use the defaults below with SOC decrease per window = [0.1, 0.2, 0.3] 1 (fraction), Removed charge per window (Ah) = [0.2, 0.4, 0.9] Ah, Window weights = [1, 1, 0] 1. At 0 s, Fitted capacity (Ah) is 2 Ah. Additional checks are listed below.",
        "observe": "Inspect the outputs and numerical checks on the block reference page.",
        "limits": "SOC and integrated charge must describe the same windows. Biased SOC or current measurements bias the fit; this operation does not collect or qualify those measurements. The example verifies numerical behavior for synthetic parameters. Cell characterization and validation for an intended use are separate tasks.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-battery-weighted-capacity-fit",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "topic:topic-state",
      "type": "Topic",
      "label": "State estimation",
      "properties": {
        "id": "topic-state",
        "name": "State estimation",
        "lede": "The quantities a battery management system estimates but cannot measure directly.",
        "context": "Distinguish internal states from noisy measurement estimates.",
        "example": "Current-sensor bias accumulates in coulomb counting. Exact model SOC does not establish real estimator accuracy.",
        "lesson_url": "https://lemonergy.com/learn/fundamentals/capacity-and-c-rate/",
        "lesson_label": "Open charge balance"
      }
    },
    {
      "id": "term:state-of-charge",
      "type": "Term",
      "label": "State of charge",
      "properties": {
        "id": "state-of-charge",
        "name": "State of charge",
        "abbr": "SOC",
        "section": "topic-state",
        "definition": "How full a cell is, as a fraction of its available capacity. State of charge, like temperature, affects how fast a stored cell ages.",
        "unit": "%",
        "related": [
          "depth-of-discharge",
          "ocv-soc-curve",
          "coulomb-counting",
          "state-of-health",
          "bms"
        ],
        "lesson": "fundamentals/battery-aging/#storage-soc",
        "example": {
          "title": "Interpret a charge inventory",
          "text": "If available capacity is 5 Ah and 3 Ah remains by the chosen estimator, SOC is 60%. A different estimate of available capacity changes this percentage, so compare SOC values only with the capacity convention recorded."
        },
        "url": "https://lemonergy.com/learn/glossary/state-of-charge/",
        "mentions": [
          "usable-capacity"
        ]
      }
    },
    {
      "id": "term:ocv-soc-curve",
      "type": "Term",
      "label": "OCV–SOC curve",
      "properties": {
        "id": "ocv-soc-curve",
        "name": "OCV–SOC curve",
        "section": "topic-state",
        "definition": "The characteristic relation between a cell’s open-circuit voltage and its state of charge, measured once at low current and stored in the BMS. A steep curve, as for NMC, makes SOC easy to read from voltage; LFP’s flat curve does not.",
        "related": [
          "open-circuit-voltage",
          "state-of-charge",
          "coulomb-counting",
          "lfp",
          "voltage-plateau",
          "ocv-test"
        ],
        "url": "https://lemonergy.com/learn/glossary/ocv-soc-curve/",
        "mentions": [
          "bms"
        ]
      }
    },
    {
      "id": "term:kalman-filter",
      "type": "Term",
      "label": "Kalman filter",
      "properties": {
        "id": "kalman-filter",
        "name": "Kalman filter",
        "section": "topic-state",
        "definition": "A recursive estimator that blends a model prediction with noisy measurements according to how much each is trusted. In a BMS an extended Kalman filter combines coulomb counting with a voltage model to track SOC and sometimes resistance.",
        "related": [
          "coulomb-counting",
          "equivalent-circuit-model",
          "state-of-charge",
          "bms",
          "fuzzy-logic",
          "data-driven-soc-estimation"
        ],
        "url": "https://lemonergy.com/learn/glossary/kalman-filter/",
        "mentions": [
          "coulomb"
        ]
      }
    },
    {
      "id": "term:current-sensor",
      "type": "Term",
      "label": "Current sensor",
      "properties": {
        "id": "current-sensor",
        "name": "Current sensor",
        "aka": [
          "shunt",
          "Hall sensor"
        ],
        "section": "topic-pack",
        "definition": "The device that measures pack current for coulomb counting and protection: a precision shunt resistor read by an amplifier, or a Hall-effect sensor around the cable. Offset error in this sensor is what makes SOC drift between OCV corrections.",
        "related": [
          "coulomb-counting",
          "bms",
          "battery-disconnect-unit",
          "state-of-charge"
        ],
        "url": "https://lemonergy.com/learn/glossary/current-sensor/",
        "mentions": [
          "coulomb",
          "open-circuit-voltage"
        ]
      }
    },
    {
      "id": "term:open-circuit-voltage",
      "type": "Term",
      "label": "Open-circuit voltage",
      "properties": {
        "id": "open-circuit-voltage",
        "name": "Open-circuit voltage",
        "abbr": "OCV",
        "section": "topic-state",
        "definition": "The voltage across a cell’s terminals when no current flows and the cell has rested long enough for the voltage to settle. It depends on state of charge and temperature, and a cell whose open-circuit voltage falls unusually fast in storage may have an internal short.",
        "unit": "V",
        "related": [
          "ocv-soc-curve",
          "relaxation",
          "voltage-hysteresis",
          "k-value",
          "internal-short-circuit"
        ],
        "lesson": "fundamentals/cell-production/#finishing",
        "url": "https://lemonergy.com/learn/glossary/open-circuit-voltage/",
        "mentions": [
          "state-of-charge"
        ]
      }
    },
    {
      "id": "visual:soc",
      "type": "Visual",
      "label": "Charge balance and state of charge",
      "properties": {
        "title": "Charge balance and state of charge",
        "summary": "SOC rises with accumulated charge; depth of discharge falls by the same amount.",
        "readout": "From 20% SOC, ideal full charge takes 48 min. Integration stops at 100%.",
        "formula": "SOC = SOC₀ + ∫ I_charge dt / Q; DOD = 1 − SOC",
        "note": "Current is positive into the cell. Constant capacity and 100% charge efficiency; no CC-CV taper.",
        "software": {
          "status": "studio",
          "label": "Charge balance in Studio",
          "body": "Battery state advances by integrating current over each time step. This illustration assumes fixed capacity and 100% charge efficiency; it does not implement an estimator or correct sensor drift.",
          "href": "https://design.lemonergy.com/cosim.html?example=charging-home"
        },
        "html": "<figure class=\"visual-figure\"><figcaption>Complementary charge fractions</figcaption><svg class=\"visual-chart\" viewBox=\"0 0 360 330\" role=\"img\" aria-labelledby=\"static-soc-0-title static-soc-0-desc\"><title id=\"static-soc-0-title\">Complementary charge fractions</title><desc id=\"static-soc-0-desc\">Time (h) versus Capacity fraction (%). SOC; DOD. Interpretation follows the graphs.</desc><path d=\"M74,238h268\" stroke=\"currentColor\" opacity=\".13\"/><text x=\"64\" y=\"242\" text-anchor=\"end\" font-size=\"13\" fill=\"currentColor\">0</text><text x=\"74\" y=\"265\" text-anchor=\"middle\" font-size=\"13\" fill=\"currentColor\">0</text><path d=\"M74,188.5h268\" stroke=\"currentColor\" opacity=\".13\"/><text x=\"64\" y=\"192.5\" text-anchor=\"end\" font-size=\"13\" fill=\"currentColor\">25</text><text x=\"141\" y=\"265\" text-anchor=\"middle\" font-size=\"13\" fill=\"currentColor\">1</text><path d=\"M74,139h268\" stroke=\"currentColor\" opacity=\".13\"/><text x=\"64\" y=\"143\" text-anchor=\"end\" font-size=\"13\" fill=\"currentColor\">50</text><text x=\"208\" y=\"265\" text-anchor=\"middle\" font-size=\"13\" fill=\"currentColor\">2</text><path d=\"M74,89.5h268\" stroke=\"currentColor\" opacity=\".13\"/><text x=\"64\" y=\"93.5\" text-anchor=\"end\" font-size=\"13\" fill=\"currentColor\">75</text><text x=\"275\" y=\"265\" text-anchor=\"middle\" font-size=\"13\" fill=\"currentColor\">3</text><path d=\"M74,40h268\" stroke=\"currentColor\" opacity=\".13\"/><text x=\"64\" y=\"44\" text-anchor=\"end\" font-size=\"13\" fill=\"currentColor\">100</text><text x=\"342\" y=\"265\" text-anchor=\"middle\" font-size=\"13\" fill=\"currentColor\">4</text><path d=\"M74,40v198h268\" fill=\"none\" stroke=\"currentColor\" opacity=\".3\"/><polyline fill=\"none\" stroke=\"#2459a8\" stroke-width=\"2.8\" points=\"74.00,198.40 74.54,196.82 75.07,195.23 75.61,193.65 76.14,192.06 76.68,190.48 77.22,188.90 77.75,187.31 78.29,185.73 78.82,184.14 79.36,182.56 79.90,180.98 80.43,179.39 80.97,177.81 81.50,176.22 82.04,174.64 82.58,173.06 83.11,171.47 83.65,169.89 84.18,168.30 84.72,166.72 85.26,165.14 85.79,163.55 86.33,161.97 86.86,160.38 87.40,158.80 87.94,157.22 88.47,155.63 89.01,154.05 89.54,152.46 90.08,150.88 90.62,149.30 91.15,147.71 91.69,146.13 92.22,144.54 92.76,142.96 93.30,141.38 93.83,139.79 94.37,138.21 94.90,136.62 95.44,135.04 95.98,133.46 96.51,131.87 97.05,130.29 97.58,128.70 98.12,127.12 98.66,125.54 99.19,123.95 99.73,122.37 100.26,120.78 100.80,119.20 101.34,117.62 101.87,116.03 102.41,114.45 102.94,112.86 103.48,111.28 104.02,109.70 104.55,108.11 105.09,106.53 105.62,104.94 106.16,103.36 106.70,101.78 107.23,100.19 107.77,98.61 108.30,97.02 108.84,95.44 109.38,93.86 109.91,92.27 110.45,90.69 110.98,89.10 111.52,87.52 112.06,85.94 112.59,84.35 113.13,82.77 113.66,81.18 114.20,79.60 114.74,78.02 115.27,76.43 115.81,74.85 116.34,73.26 116.88,71.68 117.42,70.10 117.95,68.51 118.49,66.93 119.02,65.34 119.56,63.76 120.10,62.18 120.63,60.59 121.17,59.01 121.70,57.42 122.24,55.84 122.78,54.26 123.31,52.67 123.85,51.09 124.38,49.50 124.92,47.92 125.46,46.34 125.99,44.75 126.53,43.17 127.06,41.58 127.60,40.00\"/><polyline fill=\"none\" stroke=\"#a45b2b\" stroke-width=\"2.8\" stroke-dasharray=\"7 4\" points=\"74.00,79.60 74.54,81.18 75.07,82.77 75.61,84.35 76.14,85.94 76.68,87.52 77.22,89.10 77.75,90.69 78.29,92.27 78.82,93.86 79.36,95.44 79.90,97.02 80.43,98.61 80.97,100.19 81.50,101.78 82.04,103.36 82.58,104.94 83.11,106.53 83.65,108.11 84.18,109.70 84.72,111.28 85.26,112.86 85.79,114.45 86.33,116.03 86.86,117.62 87.40,119.20 87.94,120.78 88.47,122.37 89.01,123.95 89.54,125.54 90.08,127.12 90.62,128.70 91.15,130.29 91.69,131.87 92.22,133.46 92.76,135.04 93.30,136.62 93.83,138.21 94.37,139.79 94.90,141.38 95.44,142.96 95.98,144.54 96.51,146.13 97.05,147.71 97.58,149.30 98.12,150.88 98.66,152.46 99.19,154.05 99.73,155.63 100.26,157.22 100.80,158.80 101.34,160.38 101.87,161.97 102.41,163.55 102.94,165.14 103.48,166.72 104.02,168.30 104.55,169.89 105.09,171.47 105.62,173.06 106.16,174.64 106.70,176.22 107.23,177.81 107.77,179.39 108.30,180.98 108.84,182.56 109.38,184.14 109.91,185.73 110.45,187.31 110.98,188.90 111.52,190.48 112.06,192.06 112.59,193.65 113.13,195.23 113.66,196.82 114.20,198.40 114.74,199.98 115.27,201.57 115.81,203.15 116.34,204.74 116.88,206.32 117.42,207.90 117.95,209.49 118.49,211.07 119.02,212.66 119.56,214.24 120.10,215.82 120.63,217.41 121.17,218.99 121.70,220.58 122.24,222.16 122.78,223.74 123.31,225.33 123.85,226.91 124.38,228.50 124.92,230.08 125.46,231.66 125.99,233.25 126.53,234.83 127.06,236.42 127.60,238.00\"/><text transform=\"translate(208 303)\" text-anchor=\"middle\" font-size=\"14\" fill=\"currentColor\"><tspan x=\"0\" dy=\"0\">Time (h)</tspan></text><text transform=\"translate(20 139) rotate(-90)\" text-anchor=\"middle\" font-size=\"14\" fill=\"currentColor\"><tspan x=\"0\" dy=\"0\">Capacity fraction (%)</tspan></text></svg><div class=\"visual-legend\"><span><i style=\"background:#2459a8\"></i>SOC</span><span><i style=\"background:#a45b2b\"></i>DOD (dashed)</span></div></figure>"
      }
    },
    {
      "id": "reference:plett-modeling",
      "type": "Reference",
      "label": "Extended Kalman filtering for battery management systems of LiPB-based HEV battery packs: Part 2. Modeling and identification",
      "properties": {
        "title": "Extended Kalman filtering for battery management systems of LiPB-based HEV battery packs: Part 2. Modeling and identification",
        "publisher": "Journal of Power Sources",
        "url": "https://doi.org/10.1016/j.jpowsour.2004.02.032",
        "type": "Research article",
        "scope": "Battery charge balance, open-circuit voltage, ohmic loss, polarization dynamics and model identification; parameters require cell-specific data.",
        "year": 2004,
        "authors": [
          "Gregory L. Plett"
        ],
        "accessed": "2026-10-27"
      }
    }
  ]
}
