{
  "node": {
    "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"
      ]
    }
  },
  "edges": [
    {
      "id": "edge:usedIn/term:ocv-soc-curve/workflow:ocv-charge-balance",
      "source": "term:ocv-soc-curve",
      "target": "workflow:ocv-charge-balance",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:ocv-soc-curve/workflow:native-battery-ecm-cell",
      "source": "term:ocv-soc-curve",
      "target": "workflow:native-battery-ecm-cell",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:ocv-soc-curve/workflow:native-battery-tabulated-cell",
      "source": "term:ocv-soc-curve",
      "target": "workflow:native-battery-tabulated-cell",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:ocv-soc-curve/workflow:native-battery-soc-ekf",
      "source": "term:ocv-soc-curve",
      "target": "workflow:native-battery-soc-ekf",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:ocv-soc-curve/workflow:native-battery-soc-ekf-variable-capacity",
      "source": "term:ocv-soc-curve",
      "target": "workflow:native-battery-soc-ekf-variable-capacity",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:ocv-soc-curve/workflow:native-battery-soc-adaptive-ekf",
      "source": "term:ocv-soc-curve",
      "target": "workflow:native-battery-soc-adaptive-ekf",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:ocv-soc-curve/workflow:native-battery-soc-adaptive-ekf-variable-capacity",
      "source": "term:ocv-soc-curve",
      "target": "workflow:native-battery-soc-adaptive-ekf-variable-capacity",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:ocv-soc-curve/workflow:native-battery-soe-ekf",
      "source": "term:ocv-soc-curve",
      "target": "workflow:native-battery-soe-ekf",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:ocv-soc-curve/workflow:native-battery-soe-ekf-variable-capacity",
      "source": "term:ocv-soc-curve",
      "target": "workflow:native-battery-soe-ekf-variable-capacity",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:ocv-soc-curve/workflow:native-battery-soe-adaptive-ekf",
      "source": "term:ocv-soc-curve",
      "target": "workflow:native-battery-soe-adaptive-ekf",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:ocv-soc-curve/workflow:native-battery-soe-adaptive-ekf-variable-capacity",
      "source": "term:ocv-soc-curve",
      "target": "workflow:native-battery-soe-adaptive-ekf-variable-capacity",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:ocv-soc-curve/workflow:native-battery-pack-soc-ekf",
      "source": "term:ocv-soc-curve",
      "target": "workflow:native-battery-pack-soc-ekf",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:ocv-soc-curve/workflow:native-battery-pack-soc-adaptive-ekf",
      "source": "term:ocv-soc-curve",
      "target": "workflow:native-battery-pack-soc-adaptive-ekf",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:ocv-soc-curve/workflow:native-battery-cell-delta-soc-ekf",
      "source": "term:ocv-soc-curve",
      "target": "workflow:native-battery-cell-delta-soc-ekf",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:ocv-soc-curve/workflow:native-battery-cell-delta-soc-ekf-variable-resistance",
      "source": "term:ocv-soc-curve",
      "target": "workflow:native-battery-cell-delta-soc-ekf-variable-resistance",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:belongsTo/term:ocv-soc-curve/topic:topic-state",
      "source": "term:ocv-soc-curve",
      "target": "topic:topic-state",
      "type": "belongsTo",
      "properties": {
        "sourceFile": "terms.json"
      }
    },
    {
      "id": "edge:relatedTo/term:ocv-soc-curve/term:open-circuit-voltage",
      "source": "term:ocv-soc-curve",
      "target": "term:open-circuit-voltage",
      "type": "relatedTo",
      "properties": {
        "sourceFile": "terms.json",
        "meaning": "Related context; not a causal claim"
      }
    },
    {
      "id": "edge:relatedTo/term:ocv-soc-curve/term:state-of-charge",
      "source": "term:ocv-soc-curve",
      "target": "term:state-of-charge",
      "type": "relatedTo",
      "properties": {
        "sourceFile": "terms.json",
        "meaning": "Related context; not a causal claim"
      }
    },
    {
      "id": "edge:relatedTo/term:ocv-soc-curve/term:coulomb-counting",
      "source": "term:ocv-soc-curve",
      "target": "term:coulomb-counting",
      "type": "relatedTo",
      "properties": {
        "sourceFile": "terms.json",
        "meaning": "Related context; not a causal claim"
      }
    },
    {
      "id": "edge:relatedTo/term:ocv-soc-curve/term:lfp",
      "source": "term:ocv-soc-curve",
      "target": "term:lfp",
      "type": "relatedTo",
      "properties": {
        "sourceFile": "terms.json",
        "meaning": "Related context; not a causal claim"
      }
    },
    {
      "id": "edge:relatedTo/term:ocv-soc-curve/term:voltage-plateau",
      "source": "term:ocv-soc-curve",
      "target": "term:voltage-plateau",
      "type": "relatedTo",
      "properties": {
        "sourceFile": "terms.json",
        "meaning": "Related context; not a causal claim"
      }
    },
    {
      "id": "edge:relatedTo/term:ocv-soc-curve/term:ocv-test",
      "source": "term:ocv-soc-curve",
      "target": "term:ocv-test",
      "type": "relatedTo",
      "properties": {
        "sourceFile": "terms.json",
        "meaning": "Related context; not a causal claim"
      }
    },
    {
      "id": "edge:mentions/ocv-soc-curve/bms",
      "source": "term:ocv-soc-curve",
      "target": "term:bms",
      "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:ocv-soc-curve/visual:voltage",
      "source": "term:ocv-soc-curve",
      "target": "visual:voltage",
      "type": "illustratedBy",
      "properties": {
        "sourceFile": "visual-pages.json"
      }
    },
    {
      "id": "edge:cites/term:ocv-soc-curve/reference:plett-modeling",
      "source": "term:ocv-soc-curve",
      "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-ecm-cell",
      "type": "Workflow",
      "label": "Electrothermal ECM cell worked example",
      "properties": {
        "id": "native-battery-ecm-cell",
        "title": "Electrothermal ECM cell worked example",
        "kind": "studio",
        "summary": "Causal current-to-voltage model with charge and thermal states. Conserving ports are not yet included.",
        "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 cell current (discharge positive) = 2 A, Ambient temperature = 298.15 K, External heat flow = 0 W. At 0 s, Terminal voltage is 3.68 V. Additional checks are listed below.",
        "observe": "Inspect the outputs and numerical checks on the block reference page.",
        "limits": "The external interface is causal current-to-voltage, without conserving terminals. Parameters are constant except the one-dimensional SOC-to-OCV table. No hysteresis, aging, reversible entropic heat or automatic parameter identification. 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-ecm-cell",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-battery-tabulated-cell",
      "type": "Workflow",
      "label": "Tabulated OCV cell worked example",
      "properties": {
        "id": "native-battery-tabulated-cell",
        "title": "Tabulated OCV cell worked example",
        "kind": "studio",
        "summary": "Causal current-to-voltage model with charge and thermal states. Conserving ports are not yet included.",
        "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 cell current (discharge positive) = 2 A, Ambient temperature = 298.15 K, External heat flow = 0 W. At 0 s, Terminal voltage is 3.68 V. Additional checks are listed below.",
        "observe": "Inspect the outputs and numerical checks on the block reference page.",
        "limits": "The external interface is causal current-to-voltage, without conserving terminals. Parameters are constant except the one-dimensional SOC-to-OCV table. No hysteresis, aging, reversible entropic heat or automatic parameter identification. 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-tabulated-cell",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-battery-soc-ekf",
      "type": "Workflow",
      "label": "SOC EKF worked example",
      "properties": {
        "id": "native-battery-soc-ekf",
        "title": "SOC EKF worked example",
        "kind": "studio",
        "summary": "One-state extended Kalman observer with a calibrated fraction-to-OCV table, Joseph covariance update and explicit measurement validity.",
        "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 = 0 A, Measured voltage = 3.8 V, Voltage measurement valid = 1 true / false, Reset = 0 true / false. At 0 s, State of charge is 0.76 1 (fraction). Additional checks are listed below.",
        "observe": "Inspect the outputs and numerical checks on the block reference page.",
        "limits": "One-state extended Kalman observers, without an unscented transform, RC polarization states or automatic cell identification. SOE requires its own energy-fraction-to-OCV calibration. Synthetic filter settings are not accuracy guarantees. 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-soc-ekf",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-battery-soc-ekf-variable-capacity",
      "type": "Workflow",
      "label": "SOC EKF with capacity input worked example",
      "properties": {
        "id": "native-battery-soc-ekf-variable-capacity",
        "title": "SOC EKF with capacity input worked example",
        "kind": "studio",
        "summary": "One-state extended Kalman observer with a calibrated fraction-to-OCV table, Joseph covariance update and explicit measurement validity.",
        "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 = 0 A, Measured voltage = 3.8 V, Voltage measurement valid = 1 true / false, Reset = 0 true / false, Charge capacity (Ah) = 2 Ah. At 0 s, State of charge is 0.76 1 (fraction). Additional checks are listed below.",
        "observe": "Inspect the outputs and numerical checks on the block reference page.",
        "limits": "One-state extended Kalman observers, without an unscented transform, RC polarization states or automatic cell identification. SOE requires its own energy-fraction-to-OCV calibration. Synthetic filter settings are not accuracy guarantees. 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-soc-ekf-variable-capacity",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-battery-soc-adaptive-ekf",
      "type": "Workflow",
      "label": "SOC adaptive EKF worked example",
      "properties": {
        "id": "native-battery-soc-adaptive-ekf",
        "title": "SOC adaptive EKF worked example",
        "kind": "studio",
        "summary": "One-state extended Kalman observer with a calibrated fraction-to-OCV table, Joseph covariance update and explicit measurement validity. Innovation matching adapts bounded voltage-noise variance.",
        "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 = 0 A, Measured voltage = 3.8 V, Voltage measurement valid = 1 true / false, Reset = 0 true / false. At 0 s, State of charge is 0.76 1 (fraction). Additional checks are listed below.",
        "observe": "Inspect the outputs and numerical checks on the block reference page.",
        "limits": "One-state extended Kalman observers, without an unscented transform, RC polarization states or automatic cell identification. SOE requires its own energy-fraction-to-OCV calibration. Synthetic filter settings are not accuracy guarantees. 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-soc-adaptive-ekf",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-battery-soc-adaptive-ekf-variable-capacity",
      "type": "Workflow",
      "label": "SOC adaptive EKF with capacity input worked example",
      "properties": {
        "id": "native-battery-soc-adaptive-ekf-variable-capacity",
        "title": "SOC adaptive EKF with capacity input worked example",
        "kind": "studio",
        "summary": "One-state extended Kalman observer with a calibrated fraction-to-OCV table, Joseph covariance update and explicit measurement validity. Innovation matching adapts bounded voltage-noise variance.",
        "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 = 0 A, Measured voltage = 3.8 V, Voltage measurement valid = 1 true / false, Reset = 0 true / false, Charge capacity (Ah) = 2 Ah. At 0 s, State of charge is 0.76 1 (fraction). Additional checks are listed below.",
        "observe": "Inspect the outputs and numerical checks on the block reference page.",
        "limits": "One-state extended Kalman observers, without an unscented transform, RC polarization states or automatic cell identification. SOE requires its own energy-fraction-to-OCV calibration. Synthetic filter settings are not accuracy guarantees. 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-soc-adaptive-ekf-variable-capacity",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-battery-soe-ekf",
      "type": "Workflow",
      "label": "SOE EKF worked example",
      "properties": {
        "id": "native-battery-soe-ekf",
        "title": "SOE EKF worked example",
        "kind": "studio",
        "summary": "One-state extended Kalman observer with a calibrated fraction-to-OCV table, Joseph covariance update and explicit measurement validity.",
        "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 = 0 W, Signed battery current = 0 A, Measured voltage = 3.8 V, Voltage measurement valid = 1 true / false, Reset = 0 true / false. At 0 s, State of energy is 0.76 1 (fraction). Additional checks are listed below.",
        "observe": "Inspect the outputs and numerical checks on the block reference page.",
        "limits": "One-state extended Kalman observers, without an unscented transform, RC polarization states or automatic cell identification. SOE requires its own energy-fraction-to-OCV calibration. Synthetic filter settings are not accuracy guarantees. 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-soe-ekf",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-battery-soe-ekf-variable-capacity",
      "type": "Workflow",
      "label": "SOE EKF with capacity input worked example",
      "properties": {
        "id": "native-battery-soe-ekf-variable-capacity",
        "title": "SOE EKF with capacity input worked example",
        "kind": "studio",
        "summary": "One-state extended Kalman observer with a calibrated fraction-to-OCV table, Joseph covariance update and explicit measurement validity.",
        "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 = 0 W, Signed battery current = 0 A, Measured voltage = 3.8 V, Voltage measurement valid = 1 true / false, Reset = 0 true / false, Energy capacity (J) = 7200 J. At 0 s, State of energy is 0.76 1 (fraction). Additional checks are listed below.",
        "observe": "Inspect the outputs and numerical checks on the block reference page.",
        "limits": "One-state extended Kalman observers, without an unscented transform, RC polarization states or automatic cell identification. SOE requires its own energy-fraction-to-OCV calibration. Synthetic filter settings are not accuracy guarantees. 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-soe-ekf-variable-capacity",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-battery-soe-adaptive-ekf",
      "type": "Workflow",
      "label": "SOE adaptive EKF worked example",
      "properties": {
        "id": "native-battery-soe-adaptive-ekf",
        "title": "SOE adaptive EKF worked example",
        "kind": "studio",
        "summary": "One-state extended Kalman observer with a calibrated fraction-to-OCV table, Joseph covariance update and explicit measurement validity. Innovation matching adapts bounded voltage-noise variance.",
        "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 = 0 W, Signed battery current = 0 A, Measured voltage = 3.8 V, Voltage measurement valid = 1 true / false, Reset = 0 true / false. At 0 s, State of energy is 0.76 1 (fraction). Additional checks are listed below.",
        "observe": "Inspect the outputs and numerical checks on the block reference page.",
        "limits": "One-state extended Kalman observers, without an unscented transform, RC polarization states or automatic cell identification. SOE requires its own energy-fraction-to-OCV calibration. Synthetic filter settings are not accuracy guarantees. 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-soe-adaptive-ekf",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-battery-soe-adaptive-ekf-variable-capacity",
      "type": "Workflow",
      "label": "SOE adaptive EKF with capacity input worked example",
      "properties": {
        "id": "native-battery-soe-adaptive-ekf-variable-capacity",
        "title": "SOE adaptive EKF with capacity input worked example",
        "kind": "studio",
        "summary": "One-state extended Kalman observer with a calibrated fraction-to-OCV table, Joseph covariance update and explicit measurement validity. Innovation matching adapts bounded voltage-noise variance.",
        "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 = 0 W, Signed battery current = 0 A, Measured voltage = 3.8 V, Voltage measurement valid = 1 true / false, Reset = 0 true / false, Energy capacity (J) = 7200 J. At 0 s, State of energy is 0.76 1 (fraction). Additional checks are listed below.",
        "observe": "Inspect the outputs and numerical checks on the block reference page.",
        "limits": "One-state extended Kalman observers, without an unscented transform, RC polarization states or automatic cell identification. SOE requires its own energy-fraction-to-OCV calibration. Synthetic filter settings are not accuracy guarantees. 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-soe-adaptive-ekf-variable-capacity",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-battery-pack-soc-ekf",
      "type": "Workflow",
      "label": "Pack-average SOC EKF worked example",
      "properties": {
        "id": "native-battery-pack-soc-ekf",
        "title": "Pack-average SOC EKF worked example",
        "kind": "studio",
        "summary": "Homogeneous series-cell average observer. Voltage, resistance and observation slope scale by series count; output is an average, not individual cell SOC.",
        "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 Series pack current = 1 A, Measured pack voltage = 15 V, Voltage valid = 1 true / false, Reset = 0 true / false. At 0 s, Average SOC is 0.79 1 (fraction). Additional checks are listed below.",
        "observe": "Inspect the outputs and numerical checks on the block reference page.",
        "limits": "One-state extended Kalman observers, without an unscented transform, RC polarization states or automatic cell identification. SOE requires its own energy-fraction-to-OCV calibration. Synthetic filter settings are not accuracy guarantees. The estimate is a pack average, without independently estimated cell states. 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-pack-soc-ekf",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-battery-pack-soc-adaptive-ekf",
      "type": "Workflow",
      "label": "Pack-average SOC adaptive EKF worked example",
      "properties": {
        "id": "native-battery-pack-soc-adaptive-ekf",
        "title": "Pack-average SOC adaptive EKF worked example",
        "kind": "studio",
        "summary": "Homogeneous series-cell average observer. Voltage, resistance and observation slope scale by series count; output is an average, not individual cell SOC.",
        "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 Series pack current = 1 A, Measured pack voltage = 15 V, Voltage valid = 1 true / false, Reset = 0 true / false. At 0 s, Average SOC is 0.79 1 (fraction). Additional checks are listed below.",
        "observe": "Inspect the outputs and numerical checks on the block reference page.",
        "limits": "One-state extended Kalman observers, without an unscented transform, RC polarization states or automatic cell identification. SOE requires its own energy-fraction-to-OCV calibration. Synthetic filter settings are not accuracy guarantees. The estimate is a pack average, without independently estimated cell states. 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-pack-soc-adaptive-ekf",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-battery-cell-delta-soc-ekf",
      "type": "Workflow",
      "label": "Cell-delta SOC EKF worked example",
      "properties": {
        "id": "native-battery-cell-delta-soc-ekf",
        "title": "Cell-delta SOC EKF worked example",
        "kind": "studio",
        "summary": "Estimates deviation from a supplied average. Average-error variance enters voltage uncertainty under an explicit independent-error assumption.",
        "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 Series current = 1 A, Measured cell voltage = 3.73 V, Average SOC = 0.8 1 (fraction), Average SOC variance = 0 1, Aligned measurements valid = 1 true / false, Reset = 0 true / false. At 0 s, SOC deviation from average is -0.01 1. Additional checks are listed below.",
        "observe": "Inspect the outputs and numerical checks on the block reference page.",
        "limits": "One-state extended Kalman observers, without an unscented transform, RC polarization states or automatic cell identification. SOE requires its own energy-fraction-to-OCV calibration. Synthetic filter settings are not accuracy guarantees. No jointly estimated correlated covariance between the average and the cell deviation. 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-cell-delta-soc-ekf",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-battery-cell-delta-soc-ekf-variable-resistance",
      "type": "Workflow",
      "label": "Cell-delta SOC EKF with resistance input worked example",
      "properties": {
        "id": "native-battery-cell-delta-soc-ekf-variable-resistance",
        "title": "Cell-delta SOC EKF with resistance input worked example",
        "kind": "studio",
        "summary": "Estimates deviation from a supplied average. Average-error variance enters voltage uncertainty under an explicit independent-error assumption.",
        "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 Series current = 1 A, Measured cell voltage = 3.73 V, Average SOC = 0.8 1 (fraction), Average SOC variance = 0 1, Aligned measurements valid = 1 true / false, Reset = 0 true / false, Cell resistance (ohm) = 0.05 1. At 0 s, SOC deviation from average is -0.01 1. Additional checks are listed below.",
        "observe": "Inspect the outputs and numerical checks on the block reference page.",
        "limits": "One-state extended Kalman observers, without an unscented transform, RC polarization states or automatic cell identification. SOE requires its own energy-fraction-to-OCV calibration. Synthetic filter settings are not accuracy guarantees. No jointly estimated correlated covariance between the average and the cell deviation. 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-cell-delta-soc-ekf-variable-resistance",
        "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: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": "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: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"
        ]
      }
    },
    {
      "id": "term:lfp",
      "type": "Term",
      "label": "LFP",
      "properties": {
        "id": "lfp",
        "name": "LFP",
        "aka": [
          "lithium iron phosphate",
          "LiFePO₄"
        ],
        "section": "topic-chemistries",
        "definition": "A positive electrode material, LiFePO₄, giving cells a nominal voltage around 3.2 V, long cycle life and good thermal stability, but less energy per kilogram than nickel-rich oxides. Its flat voltage curve makes state of charge hard to read from voltage alone.",
        "related": [
          "cathode-active-material",
          "nmc",
          "lmfp",
          "ocv-soc-curve",
          "cycle-life"
        ],
        "lesson": "fundamentals/cell-anatomy/#voltage",
        "example": {
          "title": "Chemistry is not the whole datasheet",
          "text": "Two LFP products can differ in format, loading, capacity and current limits. Their cathode family alone does not make them interchangeable."
        },
        "url": "https://lemonergy.com/learn/glossary/lfp/",
        "mentions": [
          "electrode",
          "positive-electrode",
          "nominal-voltage",
          "discharge-curve",
          "state-of-charge"
        ]
      }
    },
    {
      "id": "term:voltage-plateau",
      "type": "Term",
      "label": "Voltage plateau",
      "properties": {
        "id": "voltage-plateau",
        "name": "Voltage plateau",
        "section": "topic-charging",
        "definition": "A stretch of the voltage curve where voltage barely changes while charge passes, because the electrode is moving between two phases at a fixed potential. LFP has one long plateau; graphite shows several small ones.",
        "related": [
          "discharge-curve",
          "lfp",
          "phase-transition",
          "ocv-soc-curve"
        ],
        "url": "https://lemonergy.com/learn/glossary/voltage-plateau/",
        "mentions": [
          "electrode",
          "graphite"
        ]
      }
    },
    {
      "id": "term:ocv-test",
      "type": "Term",
      "label": "OCV test",
      "properties": {
        "id": "ocv-test",
        "name": "OCV test",
        "aka": [
          "pseudo-OCV",
          "C/25 discharge"
        ],
        "section": "topic-testing",
        "definition": "Measuring the open-circuit voltage curve either by stepping through state of charge with long rests, or by a very slow C/25 charge and discharge whose average is taken as pseudo-OCV. The result is the OCV–SOC table a BMS depends on.",
        "related": [
          "open-circuit-voltage",
          "ocv-soc-curve",
          "gitt",
          "voltage-hysteresis",
          "relaxation"
        ],
        "url": "https://lemonergy.com/learn/glossary/ocv-test/",
        "mentions": [
          "discharge-curve",
          "state-of-charge",
          "bms"
        ]
      }
    },
    {
      "id": "term:bms",
      "type": "Term",
      "label": "Battery management system",
      "properties": {
        "id": "bms",
        "name": "Battery management system",
        "abbr": "BMS",
        "section": "topic-pack",
        "definition": "The electronics and software that keep a battery inside its safe window: measuring every cell voltage and many temperatures, estimating SOC and SOH, balancing cells, computing current limits, controlling the contactors and reporting over the vehicle network.",
        "related": [
          "state-of-charge",
          "cell-balancing",
          "state-of-power",
          "cell-supervision-circuit",
          "contactor",
          "can-bus"
        ],
        "lesson": "fundamentals/battery-basics/#cell-module-pack",
        "url": "https://lemonergy.com/learn/glossary/bms/",
        "mentions": [
          "state-of-health",
          "cell-voltage"
        ]
      }
    },
    {
      "id": "visual:voltage",
      "type": "Visual",
      "label": "Voltage under load",
      "properties": {
        "title": "Voltage under load",
        "summary": "Discharge current creates an ohmic drop below open-circuit voltage.",
        "readout": "5 A through 20 mΩ gives 0.1 V ohmic drop.",
        "formula": "V_terminal = OCV − I_discharge R",
        "note": "Chosen OCV curve; no chemistry calibration, hysteresis or voltage cutoff.",
        "software": {
          "status": "studio",
          "label": "Voltage relationship in Studio",
          "body": "The native battery calculates terminal voltage from OCV and resistance. The curve here is an illustrative OCV relationship, not a fitted cell dataset.",
          "href": "https://design.lemonergy.com/cosim.html?example=charging-home"
        },
        "html": "<figure class=\"visual-figure\"><figcaption>Illustrative OCV and loaded voltage</figcaption><svg class=\"visual-chart\" viewBox=\"0 0 360 330\" role=\"img\" aria-labelledby=\"static-voltage-0-title static-voltage-0-desc\"><title id=\"static-voltage-0-title\">Illustrative OCV and loaded voltage</title><desc id=\"static-voltage-0-desc\">SOC (%) versus Voltage (V). Open circuit; Under load. 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\">1.8</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\">2.42</text><text x=\"141\" y=\"265\" text-anchor=\"middle\" font-size=\"13\" fill=\"currentColor\">25</text><path d=\"M74,139.00000000000003h268\" stroke=\"currentColor\" opacity=\".13\"/><text x=\"64\" y=\"143.00000000000003\" text-anchor=\"end\" font-size=\"13\" fill=\"currentColor\">3.05</text><text x=\"208\" y=\"265\" text-anchor=\"middle\" font-size=\"13\" fill=\"currentColor\">50</text><path d=\"M74,89.50000000000003h268\" stroke=\"currentColor\" opacity=\".13\"/><text x=\"64\" y=\"93.50000000000003\" text-anchor=\"end\" font-size=\"13\" fill=\"currentColor\">3.67</text><text x=\"275\" y=\"265\" text-anchor=\"middle\" font-size=\"13\" fill=\"currentColor\">75</text><path d=\"M74,40h268\" stroke=\"currentColor\" opacity=\".13\"/><text x=\"64\" y=\"44\" text-anchor=\"end\" font-size=\"13\" fill=\"currentColor\">4.3</text><text x=\"342\" y=\"265\" text-anchor=\"middle\" font-size=\"13\" fill=\"currentColor\">100</text><path d=\"M74,40v198h268\" fill=\"none\" stroke=\"currentColor\" opacity=\".3\"/><polyline fill=\"none\" stroke=\"#6953a8\" stroke-width=\"2.8\" points=\"74.00,142.96 76.68,142.29 79.36,141.61 82.04,140.94 84.72,140.27 87.40,139.59 90.08,138.92 92.76,138.25 95.44,137.57 98.12,136.90 100.80,136.23 103.48,135.55 106.16,134.88 108.84,134.21 111.52,133.54 114.20,132.86 116.88,132.19 119.56,131.52 122.24,130.84 124.92,130.17 127.60,129.50 130.28,128.82 132.96,128.15 135.64,127.48 138.32,126.80 141.00,126.13 143.68,125.46 146.36,124.78 149.04,124.11 151.72,123.44 154.40,122.76 157.08,122.09 159.76,121.41 162.44,120.74 165.12,120.07 167.80,119.39 170.48,118.72 173.16,118.04 175.84,117.37 178.52,116.69 181.20,116.02 183.88,115.34 186.56,114.66 189.24,113.98 191.92,113.31 194.60,112.63 197.28,111.95 199.96,111.26 202.64,110.58 205.32,109.89 208.00,109.21 210.68,108.52 213.36,107.83 216.04,107.13 218.72,106.44 221.40,105.74 224.08,105.03 226.76,104.32 229.44,103.61 232.12,102.89 234.80,102.17 237.48,101.44 240.16,100.70 242.84,99.96 245.52,99.21 248.20,98.44 250.88,97.67 253.56,96.89 256.24,96.10 258.92,95.29 261.60,94.47 264.28,93.63 266.96,92.77 269.64,91.90 272.32,91.01 275.00,90.09 277.68,89.15 280.36,88.19 283.04,87.20 285.72,86.17 288.40,85.12 291.08,84.03 293.76,82.90 296.44,81.73 299.12,80.52 301.80,79.26 304.48,77.96 307.16,76.59 309.84,75.17 312.52,73.69 315.20,72.14 317.88,70.53 320.56,68.83 323.24,67.06 325.92,65.20 328.60,63.24 331.28,61.19 333.96,59.04 336.64,56.77 339.32,54.39 342.00,51.88\"/><polyline fill=\"none\" stroke=\"#2459a8\" stroke-width=\"2.8\" stroke-dasharray=\"7 4\" points=\"74.00,150.88 76.68,150.21 79.36,149.53 82.04,148.86 84.72,148.19 87.40,147.51 90.08,146.84 92.76,146.17 95.44,145.49 98.12,144.82 100.80,144.15 103.48,143.47 106.16,142.80 108.84,142.13 111.52,141.46 114.20,140.78 116.88,140.11 119.56,139.44 122.24,138.76 124.92,138.09 127.60,137.42 130.28,136.74 132.96,136.07 135.64,135.40 138.32,134.72 141.00,134.05 143.68,133.38 146.36,132.70 149.04,132.03 151.72,131.36 154.40,130.68 157.08,130.01 159.76,129.33 162.44,128.66 165.12,127.99 167.80,127.31 170.48,126.64 173.16,125.96 175.84,125.29 178.52,124.61 181.20,123.94 183.88,123.26 186.56,122.58 189.24,121.90 191.92,121.23 194.60,120.55 197.28,119.87 199.96,119.18 202.64,118.50 205.32,117.81 208.00,117.13 210.68,116.44 213.36,115.75 216.04,115.05 218.72,114.36 221.40,113.66 224.08,112.95 226.76,112.24 229.44,111.53 232.12,110.81 234.80,110.09 237.48,109.36 240.16,108.62 242.84,107.88 245.52,107.13 248.20,106.36 250.88,105.59 253.56,104.81 256.24,104.02 258.92,103.21 261.60,102.39 264.28,101.55 266.96,100.69 269.64,99.82 272.32,98.93 275.00,98.01 277.68,97.07 280.36,96.11 283.04,95.12 285.72,94.09 288.40,93.04 291.08,91.95 293.76,90.82 296.44,89.65 299.12,88.44 301.80,87.18 304.48,85.88 307.16,84.51 309.84,83.09 312.52,81.61 315.20,80.06 317.88,78.45 320.56,76.75 323.24,74.98 325.92,73.12 328.60,71.16 331.28,69.11 333.96,66.96 336.64,64.69 339.32,62.31 342.00,59.80\"/><text transform=\"translate(208 303)\" text-anchor=\"middle\" font-size=\"14\" fill=\"currentColor\"><tspan x=\"0\" dy=\"0\">SOC (%)</tspan></text><text transform=\"translate(20 139) rotate(-90)\" text-anchor=\"middle\" font-size=\"14\" fill=\"currentColor\"><tspan x=\"0\" dy=\"0\">Voltage (V)</tspan></text></svg><div class=\"visual-legend\"><span><i style=\"background:#6953a8\"></i>Open circuit</span><span><i style=\"background:#2459a8\"></i>Under load (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"
      }
    }
  ]
}
