{
  "node": {
    "id": "block:battery-single-particle-cell",
    "type": "Block",
    "label": "Single-particle cell",
    "properties": {
      "id": "battery-single-particle-cell",
      "name": "Single-particle cell",
      "kind": "studio",
      "summary": "Native spherical solid diffusion and Butler-Volmer kinetics with tabulated electrode OCPs. Isothermal material parameters; no electrolyte transport, aging or conserving adapter.",
      "behavior": "Solves spherical solid diffusion in separate negative and positive representative particles with conservative radial finite volumes. Opposite Faradaic fluxes transfer lithium between electrodes. Surface stoichiometries drive tabulated OCPs and Butler-Volmer overpotentials; temperature is prescribed.",
      "ports": [
        {
          "name": "current",
          "direction": "input",
          "unit": "A",
          "description": "Signed cell current; scalar.",
          "shape": [],
          "elementType": "real",
          "quantity": "current"
        },
        {
          "name": "temperature",
          "direction": "input",
          "unit": "K",
          "description": "Kinetics temperature; scalar.",
          "shape": [],
          "elementType": "real",
          "quantity": "temperature"
        },
        {
          "name": "voltage",
          "direction": "output",
          "unit": "V",
          "description": "Terminal voltage; scalar.",
          "shape": [],
          "elementType": "real",
          "quantity": "voltage"
        },
        {
          "name": "socNegative",
          "direction": "output",
          "unit": "1 (fraction)",
          "description": "Negative-window SOC; scalar.",
          "shape": [],
          "elementType": "real",
          "quantity": "fraction"
        },
        {
          "name": "socPositive",
          "direction": "output",
          "unit": "1 (fraction)",
          "description": "Positive-window SOC; scalar.",
          "shape": [],
          "elementType": "real",
          "quantity": "fraction"
        },
        {
          "name": "surfaceNegative",
          "direction": "output",
          "unit": "1 (fraction)",
          "description": "Negative surface stoichiometry; scalar.",
          "shape": [],
          "elementType": "real",
          "quantity": "fraction"
        },
        {
          "name": "surfacePositive",
          "direction": "output",
          "unit": "1 (fraction)",
          "description": "Positive surface stoichiometry; scalar.",
          "shape": [],
          "elementType": "real",
          "quantity": "fraction"
        },
        {
          "name": "lithium",
          "direction": "output",
          "unit": "1",
          "description": "Solid lithium inventory (mol); scalar.",
          "shape": [],
          "elementType": "real",
          "quantity": "dimensionless"
        },
        {
          "name": "concentrationNegative",
          "direction": "output",
          "unit": "1",
          "description": "Negative shell concentrations (mol/m³); 8 channels at the default configuration.",
          "shape": [
            8
          ],
          "elementType": "real",
          "quantity": "dimensionless"
        },
        {
          "name": "concentrationPositive",
          "direction": "output",
          "unit": "1",
          "description": "Positive shell concentrations (mol/m³); 8 channels at the default configuration.",
          "shape": [
            8
          ],
          "elementType": "real",
          "quantity": "dimensionless"
        }
      ],
      "parameters": [
        {
          "key": "shells",
          "label": "Radial shells per particle",
          "unit": "1",
          "default": 8,
          "description": "Radial shells per particle. This is an editable model input; the default belongs to the synthetic worked example."
        },
        {
          "key": "areaM2",
          "label": "Electrode area (m²)",
          "unit": "m²",
          "default": 0.01,
          "description": "Electrode area (m²). This is an editable model input; the default belongs to the synthetic worked example."
        },
        {
          "key": "resistanceOhm",
          "label": "Contact resistance (Ω)",
          "unit": "Ω",
          "default": 0.01,
          "description": "Contact resistance (Ω). This is an editable model input; the default belongs to the synthetic worked example."
        },
        {
          "key": "initialSoc",
          "label": "Initial SOC (0–1)",
          "unit": "0–1",
          "default": 0.5,
          "description": "Initial SOC (0–1). This is an editable model input; the default belongs to the synthetic worked example."
        },
        {
          "key": "negative",
          "label": "Negative electrode parameters (see model notes)",
          "unit": "See field order",
          "default": [
            5e-06,
            0.0001,
            0.5,
            30000,
            1e-13,
            2,
            0.1,
            0.9
          ],
          "description": "Ordered fields: particle radius (m), electrode thickness (m), solid volume fraction, maximum concentration (mol/m³), diffusion coefficient (m²/s), exchange-current density at half filling (A/m²), empty stoichiometry, full stoichiometry."
        },
        {
          "key": "positive",
          "label": "Positive electrode parameters (see model notes)",
          "unit": "See field order",
          "default": [
            5e-06,
            0.0001,
            0.5,
            30000,
            1e-13,
            2,
            0.9,
            0.1
          ],
          "description": "Ordered fields: particle radius (m), electrode thickness (m), solid volume fraction, maximum concentration (mol/m³), diffusion coefficient (m²/s), exchange-current density at half filling (A/m²), empty stoichiometry, full stoichiometry."
        },
        {
          "key": "negativeOcp",
          "label": "Negative electrode OCP [stoichiometry, V]",
          "unit": "See field order",
          "default": [
            [
              0,
              0.1
            ],
            [
              1,
              0.1
            ]
          ],
          "description": "Negative electrode OCP [stoichiometry, V]. Rows are ordered coordinate/value pairs; the first column must be strictly increasing."
        },
        {
          "key": "positiveOcp",
          "label": "Positive electrode OCP [stoichiometry, V]",
          "unit": "See field order",
          "default": [
            [
              0,
              4.1
            ],
            [
              1,
              4.1
            ]
          ],
          "description": "Positive electrode OCP [stoichiometry, V]. Rows are ordered coordinate/value pairs; the first column must be strictly increasing."
        }
      ],
      "equations": [
        "dc/dt = D/r^2 * d/dr(r^2 * dc/dr)",
        "surface molar flux magnitude = I / (F * active particle area)",
        "V = Up(surface) - Un(surface) - etaP - etaN - I*Rseries"
      ],
      "example": {
        "title": "Single-particle cell worked example",
        "text": "Use the defaults below with Signed cell current = 1 A, Kinetics temperature = 298.15 K. At 0 s, Terminal voltage is 3.912048435 V. Additional checks are listed below.",
        "url": "https://design.lemonergy.com/cosim.html?example=block-battery-single-particle-cell",
        "label": "Open Studio example",
        "checks": [
          {
            "port": "voltage",
            "atS": 0,
            "value": 3.9120484354726908,
            "tolerance": 1e-08,
            "label": "Terminal voltage",
            "unit": "V"
          },
          {
            "port": "socNegative",
            "atS": 0,
            "value": 0.5,
            "tolerance": 1e-08,
            "label": "Negative-window SOC",
            "unit": "1 (fraction)"
          },
          {
            "port": "socPositive",
            "atS": 0,
            "value": 0.5,
            "tolerance": 1e-08,
            "label": "Positive-window SOC",
            "unit": "1 (fraction)"
          },
          {
            "port": "lithium",
            "atS": 0,
            "value": 0.015,
            "tolerance": 1e-08,
            "label": "Solid lithium inventory (mol)",
            "unit": "1"
          },
          {
            "port": "socNegative",
            "atS": 10,
            "value": 0.49136310861948523,
            "tolerance": 1e-08,
            "label": "Negative-window SOC",
            "unit": "1 (fraction)"
          },
          {
            "port": "socPositive",
            "atS": 10,
            "value": 0.49136310861948523,
            "tolerance": 1e-08,
            "label": "Positive-window SOC",
            "unit": "1 (fraction)"
          },
          {
            "port": "lithium",
            "atS": 10,
            "value": 0.015,
            "tolerance": 1e-10,
            "label": "Solid lithium inventory (mol)",
            "unit": "1"
          }
        ],
        "inputs": [
          {
            "port": "current",
            "label": "Signed cell current",
            "value": 1,
            "unit": "A"
          },
          {
            "port": "temperature",
            "label": "Kinetics temperature",
            "value": 298.15,
            "unit": "K"
          }
        ]
      },
      "limits": [
        "Fixed solid diffusion and material coefficients; no electrolyte transport, aging, thermal state or conserving boundary adapter. Surface concentrations must stay strictly inside their physical range. The cited paper explains model assumptions and a richer electrolyte extension; this block implements the stated solid-only model.",
        "The example verifies numerical behavior for synthetic parameters. Cell characterization and validation for an intended use are separate tasks."
      ],
      "availability": {
        "status": "released",
        "label": "Available in Lemonergy Studio",
        "detail": "The bundled example is available in the production release verified on 28 October 2026. The parameters and examples here are synthetic teaching fixtures, not a characterized cell or a validated operating limit."
      },
      "references": [
        "marquis-spm"
      ],
      "evidence": [
        "docs/glossary/native-block-verification.json"
      ],
      "sourceRepository": "Lemonergy Studio public contract",
      "sourceRevision": "verification-2026-10-27",
      "caseIds": [
        "native-battery-single-particle-cell"
      ],
      "exampleTraces": [
        {
          "id": "battery-single-particle-cell",
          "url": "https://lemonergy.com/learn/glossary/api/traces/battery-single-particle-cell.json?v=e78ff128bfde",
          "title": "Single-particle cell recorded example",
          "exampleId": "block-battery-single-particle-cell",
          "source": "Executed synthetic Lemonergy Studio example",
          "recordedOn": "2026-10-28",
          "points": 103,
          "channels": 12,
          "omittedChannels": 10,
          "interpolation": "linear",
          "solver": {
            "method": "dormand-prince-45",
            "reason": "non-stiff-time-scales"
          }
        }
      ],
      "type": "battery-single-particle-cell",
      "implementationId": "battery-single-particle-cell",
      "url": "https://lemonergy.com/learn/glossary/blocks/battery-single-particle-cell/",
      "documentationUrl": "https://lemonergy.com/learn/glossary/blocks/battery-single-particle-cell/",
      "sourceFile": "block-library.json",
      "reviewed": "2026-10-27",
      "releaseEvidence": {
        "environment": "production",
        "status": "verified",
        "revision": "e76cadfc203e15eb41f3478d8b1044a5b851953d",
        "verifiedOn": "2026-10-28",
        "exampleUrls": [
          "https://design.lemonergy.com/cosim.html?example=block-battery-single-particle-cell"
        ]
      }
    }
  },
  "incoming": [
    {
      "id": "edge:usesBlock/native-battery-single-particle-cell/0",
      "type": "usesBlock",
      "source": "workflow:native-battery-single-particle-cell",
      "target": "block:battery-single-particle-cell",
      "properties": {
        "sourceFile": "wiki-blocks.json",
        "position": 0,
        "name": "Single-particle cell",
        "type": "battery-single-particle-cell",
        "role": "Solves spherical solid diffusion in separate negative and positive representative particles with conservative radial finite volumes. Opposite Faradaic fluxes transfer lithium between electrodes. Surface stoichiometries drive tabulated OCPs and Butler-Volmer overpotentials; temperature is prescribed.",
        "settings": [
          "Use the parameter values in the block reference.",
          "Bundled example verified on the production release of 28 October 2026."
        ]
      }
    }
  ],
  "outgoing": [
    {
      "id": "edge:cites/block:battery-single-particle-cell/reference:marquis-spm",
      "type": "cites",
      "source": "block:battery-single-particle-cell",
      "target": "reference:marquis-spm",
      "properties": {
        "sourceFile": "block-library.json",
        "scope": "Scientific or mathematical background; implementation scope is stated by the block contract"
      }
    }
  ],
  "neighbors": [
    {
      "id": "workflow:native-battery-single-particle-cell",
      "type": "Workflow",
      "label": "Single-particle cell worked example",
      "properties": {
        "id": "native-battery-single-particle-cell",
        "title": "Single-particle cell worked example",
        "kind": "studio",
        "summary": "Native spherical solid diffusion and Butler-Volmer kinetics with tabulated electrode OCPs. Isothermal material parameters; no electrolyte transport, aging or conserving adapter.",
        "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 = 1 A, Kinetics temperature = 298.15 K. At 0 s, Terminal voltage is 3.912048435 V. Additional checks are listed below.",
        "observe": "Inspect the outputs and numerical checks on the block reference page.",
        "limits": "Fixed solid diffusion and material coefficients; no electrolyte transport, aging, thermal state or conserving boundary adapter. Surface concentrations must stay strictly inside their physical range. The cited paper explains model assumptions and a richer electrolyte extension; this block implements the stated solid-only model. 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-single-particle-cell",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "reference:marquis-spm",
      "type": "Reference",
      "label": "An asymptotic derivation of a single particle model with electrolyte",
      "properties": {
        "title": "An asymptotic derivation of a single particle model with electrolyte",
        "authors": [
          "Scott G. Marquis",
          "Valentin Sulzer",
          "Robert Timms",
          "Colin P. Please",
          "S. J. Chapman"
        ],
        "publisher": "Journal of The Electrochemical Society",
        "year": 2019,
        "url": "https://doi.org/10.1149/2.0341915jes",
        "type": "Research article",
        "scope": "Derivation and validity of reduced lithium-ion particle models, including electrolyte corrections. Background for the assumptions; Lemonergy solid-only SPM does not implement the complete electrolyte extension.",
        "accessed": "2026-10-27"
      }
    }
  ]
}
