{
  "node": {
    "id": "term:internal-resistance",
    "type": "Term",
    "label": "Internal resistance",
    "properties": {
      "id": "internal-resistance",
      "name": "Internal resistance",
      "abbr": "IR",
      "aka": [
        "DC resistance",
        "DCIR"
      ],
      "section": "topic-units",
      "definition": "The resistance a cell presents to current, from its foils, electrolyte, interfaces and the reactions themselves. It converts part of the delivered energy into heat, sets the voltage drop under load, and rises as the cell ages; a large automotive cell has about a milliohm, a small cylindrical cell tens.",
      "unit": "mΩ",
      "related": [
        "ohms-law",
        "ir-drop",
        "impedance-rise",
        "dcir",
        "area-specific-resistance",
        "resistance-capacity-product"
      ],
      "lesson": "fundamentals/battery-basics/#datasheet",
      "url": "https://lemonergy.com/learn/glossary/internal-resistance/",
      "mentions": [
        "electrolyte",
        "cylindrical-cell"
      ]
    }
  },
  "edges": [
    {
      "id": "edge:usesBlock/term:internal-resistance/block:electrothermal-battery",
      "source": "term:internal-resistance",
      "target": "block:electrothermal-battery",
      "type": "usesBlock",
      "properties": {
        "sourceFile": "studio-help-catalog.json",
        "scope": "Declared interface quantity or semantic operation; not a numerical validation claim"
      }
    },
    {
      "id": "edge:usesBlock/term:internal-resistance/block:electrothermal-resistor",
      "source": "term:internal-resistance",
      "target": "block:electrothermal-resistor",
      "type": "usesBlock",
      "properties": {
        "sourceFile": "studio-help-catalog.json",
        "scope": "Declared interface quantity or semantic operation; not a numerical validation claim"
      }
    },
    {
      "id": "edge:usesBlock/term:internal-resistance/block:memristor",
      "source": "term:internal-resistance",
      "target": "block:memristor",
      "type": "usesBlock",
      "properties": {
        "sourceFile": "studio-help-catalog.json",
        "scope": "Declared interface quantity or semantic operation; not a numerical validation claim"
      }
    },
    {
      "id": "edge:usesBlock/term:internal-resistance/block:variable-resistor",
      "source": "term:internal-resistance",
      "target": "block:variable-resistor",
      "type": "usesBlock",
      "properties": {
        "sourceFile": "studio-help-catalog.json",
        "scope": "Declared interface quantity or semantic operation; not a numerical validation claim"
      }
    },
    {
      "id": "edge:usedIn/term:internal-resistance/workflow:ocv-charge-balance",
      "source": "term:internal-resistance",
      "target": "workflow:ocv-charge-balance",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:internal-resistance/workflow:native-battery-capacity-health",
      "source": "term:internal-resistance",
      "target": "workflow:native-battery-capacity-health",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:internal-resistance/workflow:native-battery-resistance-health",
      "source": "term:internal-resistance",
      "target": "workflow:native-battery-resistance-health",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:internal-resistance/workflow:native-battery-power-capability",
      "source": "term:internal-resistance",
      "target": "workflow:native-battery-power-capability",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:internal-resistance/workflow:native-diode",
      "source": "term:internal-resistance",
      "target": "workflow:native-diode",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:internal-resistance/workflow:native-electrical-switch",
      "source": "term:internal-resistance",
      "target": "workflow:native-electrical-switch",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:internal-resistance/workflow:native-variable-resistor",
      "source": "term:internal-resistance",
      "target": "workflow:native-variable-resistor",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:internal-resistance/workflow:native-open-circuit",
      "source": "term:internal-resistance",
      "target": "workflow:native-open-circuit",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:internal-resistance/workflow:native-ac-current-source",
      "source": "term:internal-resistance",
      "target": "workflow:native-ac-current-source",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:internal-resistance/workflow:native-ac-voltage-source",
      "source": "term:internal-resistance",
      "target": "workflow:native-ac-voltage-source",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:internal-resistance/workflow:native-floating-reference",
      "source": "term:internal-resistance",
      "target": "workflow:native-floating-reference",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:internal-resistance/workflow:native-ideal-transformer",
      "source": "term:internal-resistance",
      "target": "workflow:native-ideal-transformer",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:internal-resistance/workflow:native-mutual-inductor",
      "source": "term:internal-resistance",
      "target": "workflow:native-mutual-inductor",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:internal-resistance/workflow:native-operational-amplifier",
      "source": "term:internal-resistance",
      "target": "workflow:native-operational-amplifier",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:internal-resistance/workflow:native-rotational-converter",
      "source": "term:internal-resistance",
      "target": "workflow:native-rotational-converter",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:internal-resistance/workflow:native-linear-converter",
      "source": "term:internal-resistance",
      "target": "workflow:native-linear-converter",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:internal-resistance/workflow:native-electrical-gyrator",
      "source": "term:internal-resistance",
      "target": "workflow:native-electrical-gyrator",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:internal-resistance/workflow:native-initial-voltage-constraint",
      "source": "term:internal-resistance",
      "target": "workflow:native-initial-voltage-constraint",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:internal-resistance/workflow:native-memristor",
      "source": "term:internal-resistance",
      "target": "workflow:native-memristor",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:internal-resistance/workflow:native-current-gain-source",
      "source": "term:internal-resistance",
      "target": "workflow:native-current-gain-source",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:internal-resistance/workflow:native-transresistance-source",
      "source": "term:internal-resistance",
      "target": "workflow:native-transresistance-source",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:internal-resistance/workflow:native-transconductance-source",
      "source": "term:internal-resistance",
      "target": "workflow:native-transconductance-source",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:usedIn/term:internal-resistance/workflow:native-voltage-gain-source",
      "source": "term:internal-resistance",
      "target": "workflow:native-voltage-gain-source",
      "type": "usedIn",
      "properties": {
        "sourceFile": "wiki-blocks.json"
      }
    },
    {
      "id": "edge:belongsTo/term:internal-resistance/topic:topic-units",
      "source": "term:internal-resistance",
      "target": "topic:topic-units",
      "type": "belongsTo",
      "properties": {
        "sourceFile": "terms.json"
      }
    },
    {
      "id": "edge:relatedTo/term:internal-resistance/term:ohms-law",
      "source": "term:internal-resistance",
      "target": "term:ohms-law",
      "type": "relatedTo",
      "properties": {
        "sourceFile": "terms.json",
        "meaning": "Related context; not a causal claim"
      }
    },
    {
      "id": "edge:relatedTo/term:internal-resistance/term:ir-drop",
      "source": "term:internal-resistance",
      "target": "term:ir-drop",
      "type": "relatedTo",
      "properties": {
        "sourceFile": "terms.json",
        "meaning": "Related context; not a causal claim"
      }
    },
    {
      "id": "edge:relatedTo/term:internal-resistance/term:impedance-rise",
      "source": "term:internal-resistance",
      "target": "term:impedance-rise",
      "type": "relatedTo",
      "properties": {
        "sourceFile": "terms.json",
        "meaning": "Related context; not a causal claim"
      }
    },
    {
      "id": "edge:relatedTo/term:internal-resistance/term:dcir",
      "source": "term:internal-resistance",
      "target": "term:dcir",
      "type": "relatedTo",
      "properties": {
        "sourceFile": "terms.json",
        "meaning": "Related context; not a causal claim"
      }
    },
    {
      "id": "edge:relatedTo/term:internal-resistance/term:area-specific-resistance",
      "source": "term:internal-resistance",
      "target": "term:area-specific-resistance",
      "type": "relatedTo",
      "properties": {
        "sourceFile": "terms.json",
        "meaning": "Related context; not a causal claim"
      }
    },
    {
      "id": "edge:relatedTo/term:internal-resistance/term:resistance-capacity-product",
      "source": "term:internal-resistance",
      "target": "term:resistance-capacity-product",
      "type": "relatedTo",
      "properties": {
        "sourceFile": "terms.json",
        "meaning": "Related context; not a causal claim"
      }
    },
    {
      "id": "edge:mentions/internal-resistance/electrolyte",
      "source": "term:internal-resistance",
      "target": "term:electrolyte",
      "type": "mentions",
      "properties": {
        "sourceFile": "terms.json",
        "method": "build_glossary.mention_index + mentions",
        "field": "definition",
        "meaning": "Text mention; not a causal claim"
      }
    },
    {
      "id": "edge:mentions/internal-resistance/cylindrical-cell",
      "source": "term:internal-resistance",
      "target": "term:cylindrical-cell",
      "type": "mentions",
      "properties": {
        "sourceFile": "terms.json",
        "method": "build_glossary.mention_index + mentions",
        "field": "definition",
        "meaning": "Text mention; not a causal claim"
      }
    },
    {
      "id": "edge:explainedIn/term:internal-resistance/lesson:fundamentals/battery-basics/",
      "source": "term:internal-resistance",
      "target": "lesson:fundamentals/battery-basics/",
      "type": "explainedIn",
      "properties": {
        "sourceFile": "terms.json",
        "url": "https://lemonergy.com/learn/fundamentals/battery-basics/#datasheet"
      }
    },
    {
      "id": "edge:illustratedBy/term:internal-resistance/visual:voltage",
      "source": "term:internal-resistance",
      "target": "visual:voltage",
      "type": "illustratedBy",
      "properties": {
        "sourceFile": "visual-pages.json"
      }
    },
    {
      "id": "edge:cites/term:internal-resistance/reference:plett-modeling",
      "source": "term:internal-resistance",
      "target": "reference:plett-modeling",
      "type": "cites",
      "properties": {
        "sourceFile": "wiki-references.json",
        "scope": "direct technical reference"
      }
    }
  ],
  "neighbors": [
    {
      "id": "block:electrothermal-battery",
      "type": "Block",
      "label": "Independent electrothermal battery",
      "properties": {
        "id": "electrothermal-battery",
        "kind": "studio",
        "name": "Independent electrothermal battery",
        "summary": "Evolves independent state of charge from signed terminal current, using linear OCV and temperature-dependent resistance while delivering Joule heat at h.",
        "behavior": "Evolves independent state of charge from signed terminal current, using linear OCV and temperature-dependent resistance while delivering Joule heat at h.",
        "documentationSlug": "electrothermal-battery",
        "referenceOnly": true,
        "ports": [
          {
            "name": "p",
            "direction": "conserving",
            "unit": "electrical",
            "description": "Positive voltage-reference terminal"
          },
          {
            "name": "n",
            "direction": "conserving",
            "unit": "electrical",
            "description": "Negative voltage-reference terminal"
          },
          {
            "name": "h",
            "direction": "conserving",
            "unit": "thermal",
            "description": "Bulk-temperature and Joule-heat contact"
          },
          {
            "name": "voltage",
            "direction": "output",
            "unit": "V",
            "description": "Directed output available to compatible consumers: voltage."
          },
          {
            "name": "current",
            "direction": "output",
            "unit": "A",
            "description": "Directed output available to compatible consumers: current."
          },
          {
            "name": "power",
            "direction": "output",
            "unit": "W",
            "description": "Directed output available to compatible consumers: power."
          },
          {
            "name": "soc Signal",
            "direction": "output",
            "unit": "fraction",
            "description": "Directed output available to compatible consumers: soc Signal."
          },
          {
            "name": "temperature",
            "direction": "output",
            "unit": "K",
            "description": "Directed output available to compatible consumers: temperature."
          },
          {
            "name": "ocv",
            "direction": "output",
            "unit": "V",
            "description": "Directed output available to compatible consumers: ocv."
          },
          {
            "name": "resistance",
            "direction": "output",
            "unit": "Ω",
            "description": "Directed output available to compatible consumers: resistance."
          },
          {
            "name": "loss",
            "direction": "output",
            "unit": "W",
            "description": "Directed output available to compatible consumers: loss."
          },
          {
            "name": "chemical Energy",
            "direction": "output",
            "unit": "J",
            "description": "Directed output available to compatible consumers: chemical Energy."
          }
        ],
        "parameters": [
          {
            "key": "capacityAh",
            "label": "capacityAh",
            "unit": "Ah",
            "default": 100,
            "description": "Declared authoring field: capacityAh.",
            "min": 1e-06,
            "max": 1000000000
          },
          {
            "key": "initialSoc",
            "label": "initialSoc",
            "unit": "fraction",
            "default": 0.8,
            "description": "Declared authoring field: initialSoc.",
            "min": 0,
            "max": 1
          },
          {
            "key": "emptyVoltageV",
            "label": "emptyVoltageV",
            "unit": "V",
            "default": 300,
            "description": "Declared authoring field: emptyVoltageV.",
            "min": 0.01,
            "max": 1000000
          },
          {
            "key": "fullVoltageV",
            "label": "fullVoltageV",
            "unit": "V",
            "default": 420,
            "description": "Declared authoring field: fullVoltageV.",
            "min": 0.01,
            "max": 1000000
          },
          {
            "key": "resistanceOhm",
            "label": "resistanceOhm",
            "unit": "ohm",
            "default": 0.08,
            "description": "Declared authoring field: resistanceOhm.",
            "min": 1e-08,
            "max": 1000000
          },
          {
            "key": "capacitySoh",
            "label": "capacitySoh",
            "unit": "fraction",
            "default": 1,
            "description": "Declared authoring field: capacitySoh.",
            "min": 0.01,
            "max": 1
          },
          {
            "key": "resistanceMultiplier",
            "label": "resistanceMultiplier",
            "unit": "multiplier",
            "default": 1,
            "description": "Declared authoring field: resistanceMultiplier.",
            "min": 0.01,
            "max": 1000
          },
          {
            "key": "referenceTemperatureK",
            "label": "referenceTemperatureK",
            "unit": "K",
            "default": 298.15,
            "description": "Declared authoring field: referenceTemperatureK.",
            "min": 1,
            "max": 2000
          },
          {
            "key": "resistanceTemperatureCoefficient",
            "label": "resistanceTemperatureCoefficient",
            "unit": "1/K",
            "default": 0,
            "description": "Declared authoring field: resistanceTemperatureCoefficient.",
            "min": -0.01,
            "max": 0.1
          },
          {
            "key": "initialThroughputAh",
            "label": "initialThroughputAh",
            "unit": "Ah",
            "default": 0,
            "description": "Declared authoring field: initialThroughputAh.",
            "min": 0,
            "max": 1000000000000
          }
        ],
        "equations": [],
        "example": {
          "title": "Use this authoring component",
          "text": "Choose this component in the Studio library and configure its declared interface. This reference describes the authoring contract; it does not claim a standalone numerical validation or a measured result.",
          "url": "https://design.lemonergy.com/cosim",
          "label": "Open Studio"
        },
        "limits": [
          "The symbolic diagram describes the component and its declared interface. It is not a solved circuit or simulated output.",
          "Configured parameters and model connections determine the result. Check the complete model before interpreting its outputs."
        ],
        "evidence": [
          "docs/glossary/studio-help-catalog.json"
        ],
        "caseIds": [],
        "sourceRepository": "battery-design",
        "sourceRevision": "0a28f1a0a75a0447903b868cbcc734133a77a847",
        "reviewed": "2026-10-30",
        "type": "electrothermal-battery",
        "implementationId": "electrothermal-battery",
        "url": "https://lemonergy.com/learn/glossary/blocks/electrothermal-battery/",
        "documentationUrl": "https://lemonergy.com/learn/glossary/blocks/electrothermal-battery/",
        "sourceFile": "studio-help-catalog.json",
        "studioHelp": {
          "type": "electrothermal-battery",
          "namespace": "physical",
          "slug": "electrothermal-battery",
          "canonicalSlug": "electrothermal-battery",
          "existing": false,
          "dynamic": false,
          "scene": {
            "kind": "component",
            "componentId": "reference",
            "type": "electrothermal-battery",
            "name": "Independent electrothermal battery",
            "domain": "electrical",
            "family": "battery",
            "operation": "Evolves independent state of charge from signed terminal current, using linear OCV and temperature-dependent resistance while delivering Joule heat at h.",
            "mechanism": [
              "SOC and bulk temperature",
              "OCV and series resistance",
              "Terminal power and heat"
            ],
            "ports": [
              {
                "id": "p",
                "domain": "electrical",
                "kind": "conserving",
                "label": "Positive voltage-reference terminal",
                "net": null,
                "peers": []
              },
              {
                "id": "n",
                "domain": "electrical",
                "kind": "conserving",
                "label": "Negative voltage-reference terminal",
                "net": null,
                "peers": []
              },
              {
                "id": "h",
                "domain": "thermal",
                "kind": "conserving",
                "label": "Bulk-temperature and Joule-heat contact",
                "net": null,
                "peers": []
              }
            ],
            "terms": [
              {
                "type": "pack-power-boundary",
                "label": "SOC and temperature limited signed power boundary"
              },
              {
                "type": "thermal-mass",
                "label": "Thermal mass"
              }
            ],
            "symbol": [
              {
                "tag": "path",
                "attrs": {
                  "d": "M10 40H60M60 10V70M80 25V55M120 10V70M140 25V55M140 40H190"
                }
              }
            ],
            "selection": {},
            "commands": [],
            "outputs": [
              {
                "id": "voltage",
                "quantity": "voltage",
                "declared": true,
                "consumers": [],
                "label": "voltage",
                "unit": "V"
              },
              {
                "id": "current",
                "quantity": "current",
                "declared": true,
                "consumers": [],
                "label": "current",
                "unit": "A"
              },
              {
                "id": "power",
                "quantity": "power",
                "declared": true,
                "consumers": [],
                "label": "power",
                "unit": "W"
              },
              {
                "id": "socSignal",
                "quantity": "fraction",
                "declared": true,
                "consumers": [],
                "label": "soc Signal",
                "unit": "fraction"
              },
              {
                "id": "temperature",
                "quantity": "temperature",
                "declared": true,
                "consumers": [],
                "label": "temperature",
                "unit": "K"
              },
              {
                "id": "ocv",
                "quantity": "voltage",
                "declared": true,
                "consumers": [],
                "label": "ocv",
                "unit": "V"
              },
              {
                "id": "resistance",
                "quantity": "resistance",
                "declared": true,
                "consumers": [],
                "label": "resistance",
                "unit": "Ω"
              },
              {
                "id": "loss",
                "quantity": "power",
                "declared": true,
                "consumers": [],
                "label": "loss",
                "unit": "W"
              },
              {
                "id": "chemicalEnergy",
                "quantity": "energy",
                "declared": true,
                "consumers": [],
                "label": "chemical Energy",
                "unit": "J"
              }
            ],
            "parameters": [
              {
                "id": "capacityAh",
                "default": 100,
                "unit": "Ah",
                "min": 1e-06,
                "max": 1000000000,
                "value": 100
              },
              {
                "id": "initialSoc",
                "default": 0.8,
                "unit": "fraction",
                "min": 0,
                "max": 1,
                "value": 0.8
              },
              {
                "id": "emptyVoltageV",
                "default": 300,
                "unit": "V",
                "min": 0.01,
                "max": 1000000,
                "value": 300
              },
              {
                "id": "fullVoltageV",
                "default": 420,
                "unit": "V",
                "min": 0.01,
                "max": 1000000,
                "value": 420
              },
              {
                "id": "resistanceOhm",
                "default": 0.08,
                "unit": "ohm",
                "min": 1e-08,
                "max": 1000000,
                "value": 0.08
              },
              {
                "id": "capacitySoh",
                "default": 1,
                "unit": "fraction",
                "min": 0.01,
                "max": 1,
                "value": 1
              },
              {
                "id": "resistanceMultiplier",
                "default": 1,
                "unit": "multiplier",
                "min": 0.01,
                "max": 1000,
                "value": 1
              },
              {
                "id": "referenceTemperatureK",
                "default": 298.15,
                "unit": "K",
                "min": 1,
                "max": 2000,
                "value": 298.15
              },
              {
                "id": "resistanceTemperatureCoefficient",
                "default": 0,
                "unit": "1/K",
                "min": -0.01,
                "max": 0.1,
                "value": 0
              },
              {
                "id": "initialThroughputAh",
                "default": 0,
                "unit": "Ah",
                "min": 0,
                "max": 1000000000000,
                "value": 0
              }
            ]
          }
        }
      }
    },
    {
      "id": "block:electrothermal-resistor",
      "type": "Block",
      "label": "Electrothermal resistor",
      "properties": {
        "id": "electrothermal-resistor",
        "name": "Electrothermal resistor",
        "kind": "studio",
        "summary": "Linear temperature coefficient with positive floor; all electrical dissipation enters the thermal port",
        "behavior": "Conserving component solved simultaneously with the connected network. Linear temperature coefficient with positive floor; all electrical dissipation enters the thermal port",
        "ports": [
          {
            "name": "p",
            "direction": "terminal",
            "unit": "V; A",
            "description": "electrical conserving connection; voltage across and current through the connected branch."
          },
          {
            "name": "n",
            "direction": "terminal",
            "unit": "V; A",
            "description": "electrical conserving connection; voltage across and current through the connected branch."
          },
          {
            "name": "h",
            "direction": "terminal",
            "unit": "K; W",
            "description": "thermal conserving connection; absolute temperature with balanced heat flow."
          },
          {
            "name": "current",
            "direction": "output",
            "unit": "A",
            "description": "Recorded current measurement from the conserving simulation."
          },
          {
            "name": "voltage",
            "direction": "output",
            "unit": "V",
            "description": "Recorded voltage measurement from the conserving simulation."
          },
          {
            "name": "heatFlow",
            "direction": "output",
            "unit": "W",
            "description": "Recorded heat flow measurement from the conserving simulation."
          }
        ],
        "parameters": [
          {
            "key": "referenceResistanceOhm",
            "label": "Reference resistance",
            "unit": "ohm",
            "default": 10,
            "description": "Electrical resistance at the reference temperature.",
            "min": 1e-06,
            "max": 1000000000000
          },
          {
            "key": "referenceTemperatureK",
            "label": "Reference temperature",
            "unit": "K",
            "default": 300,
            "description": "Absolute temperature at which the reference resistance is defined.",
            "min": 0,
            "max": 5000
          },
          {
            "key": "alphaPerK",
            "label": "Temperature coefficient",
            "unit": "1/K",
            "default": 0.004,
            "description": "Fractional resistance change for each kelvin relative to the reference temperature.",
            "min": -1,
            "max": 1
          },
          {
            "key": "minimumResistanceOhm",
            "label": "Minimum resistance",
            "unit": "ohm",
            "default": 1e-06,
            "description": "Positive floor applied to the calculated or commanded electrical resistance.",
            "min": 1e-09,
            "max": 1000000000
          }
        ],
        "equations": [
          "R = max(Rref[1 + α(T − Tref)], Rmin)",
          "Q̇h = V I"
        ],
        "example": {
          "title": "Electrothermal resistor worked example",
          "text": "Editable first-party network. supply: voltageV=12; hot-boundary: differenceK=350; cold-boundary: differenceK=300. Checks below were verified in the native execution engine.",
          "url": "https://design.lemonergy.com/cosim.html?example=physical-electrothermal-resistor",
          "label": "Open Studio example",
          "inputs": [
            {
              "port": "referenceResistanceOhm",
              "label": "Reference resistance",
              "value": 10,
              "unit": "ohm"
            },
            {
              "port": "referenceTemperatureK",
              "label": "Reference temperature",
              "value": 300,
              "unit": "K"
            },
            {
              "port": "alphaPerK",
              "label": "Temperature coefficient",
              "value": 0.004,
              "unit": "1/K"
            },
            {
              "port": "minimumResistanceOhm",
              "label": "Minimum resistance",
              "value": 1e-06,
              "unit": "ohm"
            }
          ],
          "checks": [
            {
              "port": "target/current",
              "label": "current",
              "atS": 1,
              "value": 1,
              "unit": "A",
              "tolerance": 9.999999999993736e-07
            },
            {
              "port": "target/voltage",
              "label": "voltage",
              "atS": 1,
              "value": 12,
              "unit": "V",
              "tolerance": 1.1999999999999997e-05
            },
            {
              "port": "target/heatFlow",
              "label": "heatFlow",
              "atS": 1,
              "value": 12,
              "unit": "W",
              "tolerance": 1.1999999999140553e-05
            }
          ]
        },
        "limits": [
          "Linear temperature coefficient with positive floor; all electrical dissipation enters the thermal port",
          "Demonstration parameters are not calibrated hardware data. Singular or incompatible ideal constraints and unsupported state ranges stop the run."
        ],
        "references": [
          "physical-power",
          "openstax-heat"
        ],
        "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."
        },
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ],
        "sourceRepository": "Lemonergy Studio public contract",
        "sourceRevision": "verification-2026-10-27",
        "caseIds": [
          "native-electrothermal-resistor"
        ],
        "type": "electrothermal-resistor",
        "implementationId": "electrothermal-resistor",
        "url": "https://lemonergy.com/learn/glossary/blocks/electrothermal-resistor/",
        "documentationUrl": "https://lemonergy.com/learn/glossary/blocks/electrothermal-resistor/",
        "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=physical-electrothermal-resistor"
          ]
        },
        "studioHelp": {
          "type": "electrothermal-resistor",
          "namespace": "physical",
          "slug": "electrothermal-resistor",
          "canonicalSlug": "electrothermal-resistor",
          "existing": true,
          "dynamic": false,
          "scene": {
            "kind": "component",
            "componentId": "reference",
            "type": "electrothermal-resistor",
            "name": "Electrothermal resistor",
            "domain": "electrical",
            "family": "resistance",
            "operation": "Changes resistance with temperature and transfers all modeled electrical dissipation into its thermal contact.",
            "mechanism": [
              "Electrical current",
              "Temperature-dependent resistance",
              "Heat at h"
            ],
            "ports": [
              {
                "id": "p",
                "domain": "electrical",
                "kind": "conserving",
                "label": "Positive voltage-reference terminal",
                "net": null,
                "peers": []
              },
              {
                "id": "n",
                "domain": "electrical",
                "kind": "conserving",
                "label": "Negative voltage-reference terminal",
                "net": null,
                "peers": []
              },
              {
                "id": "h",
                "domain": "thermal",
                "kind": "conserving",
                "label": "Heat delivery and temperature contact",
                "net": null,
                "peers": []
              }
            ],
            "terms": [
              {
                "type": "resistor",
                "label": "Resistor"
              },
              {
                "type": "thermal-mass",
                "label": "Thermal mass"
              }
            ],
            "symbol": [
              {
                "tag": "path",
                "attrs": {
                  "d": "M10 40H40L50 20L70 60L90 20L110 60L130 20L150 60L160 40H190"
                }
              }
            ],
            "selection": {},
            "commands": [],
            "outputs": [
              {
                "id": "voltage",
                "quantity": "voltage",
                "declared": true,
                "consumers": [],
                "label": "voltage",
                "unit": "V"
              },
              {
                "id": "current",
                "quantity": "current",
                "declared": true,
                "consumers": [],
                "label": "current",
                "unit": "A"
              },
              {
                "id": "power",
                "quantity": "power",
                "declared": true,
                "consumers": [],
                "label": "power",
                "unit": "W"
              },
              {
                "id": "resistance",
                "quantity": "resistance",
                "declared": true,
                "consumers": [],
                "label": "resistance",
                "unit": "Ω"
              },
              {
                "id": "limited",
                "quantity": "fraction",
                "declared": true,
                "consumers": [],
                "label": "limited",
                "unit": "fraction"
              },
              {
                "id": "heatFlow",
                "quantity": "heat",
                "declared": true,
                "consumers": [],
                "label": "heat Flow",
                "unit": "W"
              }
            ],
            "parameters": [
              {
                "id": "referenceResistanceOhm",
                "default": 10,
                "unit": "ohm",
                "min": 1e-06,
                "max": 1000000000000,
                "value": 10
              },
              {
                "id": "referenceTemperatureK",
                "default": 300,
                "unit": "K",
                "min": 0,
                "max": 5000,
                "value": 300
              },
              {
                "id": "alphaPerK",
                "default": 0.004,
                "unit": "1/K",
                "min": -1,
                "max": 1,
                "value": 0.004
              },
              {
                "id": "minimumResistanceOhm",
                "default": 1e-06,
                "unit": "ohm",
                "min": 1e-09,
                "max": 1000000000,
                "value": 1e-06
              }
            ]
          }
        }
      }
    },
    {
      "id": "block:memristor",
      "type": "Block",
      "label": "Bounded drift memristor",
      "properties": {
        "id": "memristor",
        "name": "Bounded drift memristor",
        "kind": "studio",
        "summary": "Synthetic resistance-range and switching-time design with a smooth drift boundary window; no fitted material or measured-device claim.",
        "behavior": "Solves a conserving two-terminal drift model. The example chooses a 200–1000 Ω resistance span, an initial conducting fraction of 0.5 and a 1 mA current. Mobility is derived from a chosen initial fraction rate of 0.01 per second at a nominal 20 nm scale. These choices describe a hypothetical teaching device.",
        "ports": [
          {
            "name": "p",
            "direction": "terminal",
            "unit": "V; A",
            "description": "electrical conserving connection; voltage across and current through the connected branch."
          },
          {
            "name": "n",
            "direction": "terminal",
            "unit": "V; A",
            "description": "electrical conserving connection; voltage across and current through the connected branch."
          },
          {
            "name": "current",
            "direction": "output",
            "unit": "A",
            "description": "Recorded current measurement from the conserving simulation."
          },
          {
            "name": "voltage",
            "direction": "output",
            "unit": "V",
            "description": "Recorded voltage measurement from the conserving simulation."
          },
          {
            "name": "state",
            "direction": "output",
            "unit": "fraction",
            "description": "Recorded state measurement from the conserving simulation."
          },
          {
            "name": "resistance",
            "direction": "output",
            "unit": "Ω",
            "description": "Recorded instantaneous resistance from the conserving simulation."
          }
        ],
        "parameters": [
          {
            "key": "onResistanceOhm",
            "label": "On-state resistance",
            "unit": "ohm",
            "default": 200,
            "description": "Chosen endpoint of the hypothetical 5:1 resistance span; not a supplier rating or fitted material value.",
            "min": 1e-06,
            "max": 1000000000
          },
          {
            "key": "offResistanceOhm",
            "label": "Off-state resistance",
            "unit": "ohm",
            "default": 1000,
            "description": "Chosen endpoint of the hypothetical 5:1 resistance span; not a supplier rating or fitted material value.",
            "min": 1e-06,
            "max": 1000000000000
          },
          {
            "key": "thicknessM",
            "label": "Active layer thickness",
            "unit": "m",
            "default": 2e-08,
            "description": "Nominal 20 nm teaching scale used in the mobility derivation; not a measured device thickness.",
            "min": 1e-12,
            "max": 1
          },
          {
            "key": "mobilityM2Vs",
            "label": "Drift mobility",
            "unit": "m2/(V s)",
            "default": 2e-17,
            "description": "Derived teaching value: initial fraction rate × thickness² / (on-state resistance × current) = 0.01 × (20 nm)² / (200 Ω × 1 mA). It is not a measured ionic mobility.",
            "min": 0,
            "max": 1
          },
          {
            "key": "initialState",
            "label": "Initial internal state",
            "unit": "fraction",
            "default": 0.5,
            "description": "Initial normalized conducting-region fraction in the drift model.",
            "min": 0,
            "max": 1
          }
        ],
        "equations": [
          "R = Ron w + Roff (1 − w)",
          "dw/dt = mobility Ron I / thickness² × 4w(1 − w)",
          "At constant 1 mA: dw/dt = 0.04 w(1 − w); w(t) = 1 / (1 + exp(−0.04 t))"
        ],
        "example": {
          "title": "Bounded drift memristor worked example",
          "text": "Drive the hypothetical device with a constant 1 mA for 10 s. Initially w = 0.5, R = 600 Ω and V = 0.6 V. The independently derived logistic solution gives w(10 s) = 0.598687660112452 and V(10 s) = 0.5210498719100384 V. The production native model and exported results agree within the tolerances below. This independently designed teaching fixture is available in Studio.",
          "url": "https://design.lemonergy.com/cosim.html?example=physical-memristor",
          "label": "Open Studio example",
          "inputs": [
            {
              "port": "onResistanceOhm",
              "label": "On-state resistance",
              "value": 200,
              "unit": "ohm"
            },
            {
              "port": "offResistanceOhm",
              "label": "Off-state resistance",
              "value": 1000,
              "unit": "ohm"
            },
            {
              "port": "thicknessM",
              "label": "Active layer thickness",
              "value": 2e-08,
              "unit": "m"
            },
            {
              "port": "mobilityM2Vs",
              "label": "Drift mobility",
              "value": 2e-17,
              "unit": "m2/(V s)"
            },
            {
              "port": "initialState",
              "label": "Initial internal state",
              "value": 0.5,
              "unit": "fraction"
            },
            {
              "port": "supply/currentA",
              "label": "Prescribed drive current",
              "value": 0.001,
              "unit": "A"
            }
          ],
          "checks": [
            {
              "port": "target/state",
              "label": "Internal fraction",
              "atS": 0,
              "value": 0.5,
              "unit": "fraction",
              "tolerance": 1e-12
            },
            {
              "port": "target/resistance",
              "label": "Resistance",
              "atS": 0,
              "value": 600,
              "unit": "Ω",
              "tolerance": 1e-08
            },
            {
              "port": "target/voltage",
              "label": "Voltage",
              "atS": 0,
              "value": 0.6,
              "unit": "V",
              "tolerance": 1e-10
            },
            {
              "port": "target/current",
              "label": "Current",
              "atS": 10,
              "value": 0.001,
              "unit": "A",
              "tolerance": 1e-10
            },
            {
              "port": "target/state",
              "label": "Internal fraction",
              "atS": 10,
              "value": 0.598687660112452,
              "unit": "fraction",
              "tolerance": 1e-05
            },
            {
              "port": "target/resistance",
              "label": "Resistance",
              "atS": 10,
              "value": 521.0498719100384,
              "unit": "Ω",
              "tolerance": 0.01
            },
            {
              "port": "target/voltage",
              "label": "Voltage",
              "atS": 10,
              "value": 0.5210498719100384,
              "unit": "V",
              "tolerance": 1e-05
            }
          ]
        },
        "limits": [
          "Synthetic parameters were selected through resistance-range and switching-time targets. The earlier undocumented illustrative parameter tuple is not reused. These values do not characterize a material or device.",
          "Joglekar and Wolf support the drift equation and the p = 1 boundary window. That citation does not supply this example’s resistance endpoints, geometry, mobility or numeric outputs.",
          "The boundary window locks at w = 0 and w = 1. This reduced model does not represent every resistive-switching mechanism. Singular constraints or unsupported states stop the run."
        ],
        "references": [
          "physical-memristor"
        ],
        "availability": {
          "status": "released",
          "label": "Available in Lemonergy Studio",
          "detail": "The independently designed current-driven fixture was verified in production on 28 October 2026. Its native trace and exported results agree with the independent analytical checks within the stated tolerances. These synthetic values do not characterize a measured device."
        },
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ],
        "sourceRepository": "Lemonergy Studio public contract",
        "sourceRevision": "verification-2026-10-28-synthetic-memristor",
        "caseIds": [
          "native-memristor"
        ],
        "type": "memristor",
        "implementationId": "memristor",
        "url": "https://lemonergy.com/learn/glossary/blocks/memristor/",
        "documentationUrl": "https://lemonergy.com/learn/glossary/blocks/memristor/",
        "sourceFile": "block-library.json",
        "reviewed": "2026-10-27",
        "releaseEvidence": {
          "environment": "production",
          "status": "verified",
          "revision": "46d83ef9a96176e8de3ec4e38df4ab2a1e18d898",
          "verifiedOn": "2026-10-28",
          "exampleUrls": [
            "https://design.lemonergy.com/cosim.html?example=physical-memristor"
          ]
        },
        "studioHelp": {
          "type": "memristor",
          "namespace": "physical",
          "slug": "memristor",
          "canonicalSlug": "memristor",
          "existing": true,
          "dynamic": false,
          "scene": {
            "kind": "component",
            "componentId": "reference",
            "type": "memristor",
            "name": "Bounded drift memristor",
            "domain": "electrical",
            "family": "resistance",
            "operation": "Evolves a bounded internal state that changes resistance between configured limits; it is a synthetic reduced model.",
            "mechanism": [
              "Electrical drive",
              "Bounded internal state",
              "Variable resistance"
            ],
            "ports": [
              {
                "id": "p",
                "domain": "electrical",
                "kind": "conserving",
                "label": "Positive voltage-reference terminal",
                "net": null,
                "peers": []
              },
              {
                "id": "n",
                "domain": "electrical",
                "kind": "conserving",
                "label": "Negative voltage-reference terminal",
                "net": null,
                "peers": []
              }
            ],
            "terms": [
              {
                "type": "resistor",
                "label": "Resistor"
              },
              {
                "type": "variable-resistor",
                "label": "Controlled resistor"
              }
            ],
            "symbol": [
              {
                "tag": "path",
                "attrs": {
                  "d": "M10 40H40L50 20L70 60L90 20L110 60L130 20L150 60L160 40H190"
                }
              }
            ],
            "selection": {},
            "commands": [],
            "outputs": [
              {
                "id": "voltage",
                "quantity": "voltage",
                "declared": true,
                "consumers": [],
                "label": "voltage",
                "unit": "V"
              },
              {
                "id": "current",
                "quantity": "current",
                "declared": true,
                "consumers": [],
                "label": "current",
                "unit": "A"
              },
              {
                "id": "power",
                "quantity": "power",
                "declared": true,
                "consumers": [],
                "label": "power",
                "unit": "W"
              },
              {
                "id": "resistance",
                "quantity": "resistance",
                "declared": true,
                "consumers": [],
                "label": "resistance",
                "unit": "Ω"
              }
            ],
            "parameters": [
              {
                "id": "onResistanceOhm",
                "default": 200,
                "unit": "ohm",
                "min": 1e-06,
                "max": 1000000000,
                "value": 200
              },
              {
                "id": "offResistanceOhm",
                "default": 1000,
                "unit": "ohm",
                "min": 1e-06,
                "max": 1000000000000,
                "value": 1000
              },
              {
                "id": "thicknessM",
                "default": 2e-08,
                "unit": "m",
                "min": 1e-12,
                "max": 1,
                "value": 2e-08
              },
              {
                "id": "mobilityM2Vs",
                "default": 2e-17,
                "unit": "m2/(V s)",
                "min": 0,
                "max": 1,
                "value": 2e-17
              },
              {
                "id": "initialState",
                "default": 0.5,
                "unit": "fraction",
                "min": 0,
                "max": 1,
                "value": 0.5
              }
            ]
          }
        }
      }
    },
    {
      "id": "block:variable-resistor",
      "type": "Block",
      "label": "Controlled resistor",
      "properties": {
        "id": "variable-resistor",
        "name": "Controlled resistor",
        "kind": "studio",
        "summary": "Live resistance with declared positive floor and a limited-command diagnostic",
        "behavior": "Conserving component solved simultaneously with the connected network. Live resistance with declared positive floor and a limited-command diagnostic",
        "ports": [
          {
            "name": "p",
            "direction": "terminal",
            "unit": "V; A",
            "description": "electrical conserving connection; voltage across and current through the connected branch."
          },
          {
            "name": "n",
            "direction": "terminal",
            "unit": "V; A",
            "description": "electrical conserving connection; voltage across and current through the connected branch."
          },
          {
            "name": "current",
            "direction": "output",
            "unit": "A",
            "description": "Recorded current measurement from the conserving simulation."
          },
          {
            "name": "voltage",
            "direction": "output",
            "unit": "V",
            "description": "Recorded voltage measurement from the conserving simulation."
          },
          {
            "name": "resistance",
            "direction": "output",
            "unit": "ohm",
            "description": "Recorded resistance measurement from the conserving simulation."
          }
        ],
        "parameters": [
          {
            "key": "resistanceOhm",
            "label": "Electrical resistance",
            "unit": "ohm",
            "default": 1,
            "description": "Configured resistance when no external resistance command is connected.",
            "min": 1e-06,
            "max": 1000000000000
          },
          {
            "key": "minimumResistanceOhm",
            "label": "Minimum resistance",
            "unit": "ohm",
            "default": 1e-06,
            "description": "Positive floor applied to the calculated or commanded electrical resistance.",
            "min": 1e-09,
            "max": 1000000000
          }
        ],
        "equations": [
          "R = max(Rcommand, Rmin)",
          "I = V/R"
        ],
        "example": {
          "title": "Controlled resistor worked example",
          "text": "Editable first-party network. supply: voltageV=5. Checks below were verified in the native execution engine.",
          "url": "https://design.lemonergy.com/cosim.html?example=physical-variable-resistor",
          "label": "Open Studio example",
          "inputs": [
            {
              "port": "resistanceOhm",
              "label": "Electrical resistance",
              "value": 1,
              "unit": "ohm"
            },
            {
              "port": "minimumResistanceOhm",
              "label": "Minimum resistance",
              "value": 1e-06,
              "unit": "ohm"
            }
          ],
          "checks": [
            {
              "port": "target/current",
              "label": "current",
              "atS": 1,
              "value": 5,
              "unit": "A",
              "tolerance": 4.9999999999999996e-06
            },
            {
              "port": "target/voltage",
              "label": "voltage",
              "atS": 1,
              "value": 5,
              "unit": "V",
              "tolerance": 4.9999999999999996e-06
            },
            {
              "port": "target/resistance",
              "label": "resistance",
              "atS": 1,
              "value": 1,
              "unit": "ohm",
              "tolerance": 1e-06
            }
          ]
        },
        "limits": [
          "Live resistance with declared positive floor and a limited-command diagnostic",
          "Demonstration parameters are not calibrated hardware data. Singular or incompatible ideal constraints and unsupported state ranges stop the run."
        ],
        "references": [
          "physical-circuit",
          "physical-power"
        ],
        "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."
        },
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ],
        "sourceRepository": "Lemonergy Studio public contract",
        "sourceRevision": "verification-2026-10-27",
        "caseIds": [
          "native-variable-resistor"
        ],
        "type": "variable-resistor",
        "implementationId": "variable-resistor",
        "url": "https://lemonergy.com/learn/glossary/blocks/variable-resistor/",
        "documentationUrl": "https://lemonergy.com/learn/glossary/blocks/variable-resistor/",
        "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=physical-variable-resistor"
          ]
        },
        "studioHelp": {
          "type": "variable-resistor",
          "namespace": "physical",
          "slug": "variable-resistor",
          "canonicalSlug": "variable-resistor",
          "existing": true,
          "dynamic": false,
          "scene": {
            "kind": "component",
            "componentId": "reference",
            "type": "variable-resistor",
            "name": "Controlled resistor",
            "domain": "electrical",
            "family": "resistance",
            "operation": "Uses a live resistance command with a positive lower bound to relate voltage and current.",
            "mechanism": [
              "Resistance command",
              "Positive floor",
              "Voltage–current relation"
            ],
            "ports": [
              {
                "id": "p",
                "domain": "electrical",
                "kind": "conserving",
                "label": "Positive voltage-reference terminal",
                "net": null,
                "peers": []
              },
              {
                "id": "n",
                "domain": "electrical",
                "kind": "conserving",
                "label": "Negative voltage-reference terminal",
                "net": null,
                "peers": []
              }
            ],
            "terms": [
              {
                "type": "resistor",
                "label": "Resistor"
              },
              {
                "type": "electrical-switch",
                "label": "Controlled electrical switch"
              }
            ],
            "symbol": [
              {
                "tag": "path",
                "attrs": {
                  "d": "M10 40H40L50 20L70 60L90 20L110 60L130 20L150 60L160 40H190"
                }
              }
            ],
            "selection": {},
            "commands": [
              {
                "id": "resistance",
                "label": "Resistance command",
                "quantity": "resistance",
                "unit": "Ω",
                "active": true,
                "summary": "Resistance command is a directed resistance input to this component, expressed in Ω. Its binding supplies information; it is not a conserving connection.",
                "source": null,
                "target": null
              }
            ],
            "outputs": [
              {
                "id": "voltage",
                "quantity": "voltage",
                "declared": true,
                "consumers": [],
                "label": "voltage",
                "unit": "V"
              },
              {
                "id": "current",
                "quantity": "current",
                "declared": true,
                "consumers": [],
                "label": "current",
                "unit": "A"
              },
              {
                "id": "power",
                "quantity": "power",
                "declared": true,
                "consumers": [],
                "label": "power",
                "unit": "W"
              },
              {
                "id": "resistance",
                "quantity": "resistance",
                "declared": true,
                "consumers": [],
                "label": "resistance",
                "unit": "Ω"
              },
              {
                "id": "limited",
                "quantity": "fraction",
                "declared": true,
                "consumers": [],
                "label": "limited",
                "unit": "fraction"
              }
            ],
            "parameters": [
              {
                "id": "resistanceOhm",
                "default": 1,
                "unit": "ohm",
                "min": 1e-06,
                "max": 1000000000000,
                "value": 1
              },
              {
                "id": "minimumResistanceOhm",
                "default": 1e-06,
                "unit": "ohm",
                "min": 1e-09,
                "max": 1000000000,
                "value": 1e-06
              }
            ]
          }
        }
      }
    },
    {
      "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-capacity-health",
      "type": "Workflow",
      "label": "Capacity health index worked example",
      "properties": {
        "id": "native-battery-capacity-health",
        "title": "Capacity health index worked example",
        "kind": "studio",
        "summary": "Endpoint-normalized health index with raw value and out-of-reference flag.",
        "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 Measured capacity (Ah) = 1.8 Ah. At 0 s, Clipped health index is 0.5 1 (fraction). Additional checks are listed below.",
        "observe": "Inspect the outputs and numerical checks on the block reference page.",
        "limits": "This endpoint-normalized index is not the same quantity as capacity retention. The endpoint choice determines its interpretation. 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-health",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-battery-resistance-health",
      "type": "Workflow",
      "label": "Resistance health index worked example",
      "properties": {
        "id": "native-battery-resistance-health",
        "title": "Resistance health index worked example",
        "kind": "studio",
        "summary": "Endpoint-normalized health index with raw value and out-of-reference flag.",
        "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 Measured resistance (ohm) = 0.075 1. At 0 s, Clipped health index is 0.5 1 (fraction). Additional checks are listed below.",
        "observe": "Inspect the outputs and numerical checks on the block reference page.",
        "limits": "This endpoint-normalized index is not the same quantity as capacity retention. The endpoint choice determines its interpretation. 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-resistance-health",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-battery-power-capability",
      "type": "Workflow",
      "label": "Pulse power capability worked example",
      "properties": {
        "id": "native-battery-power-capability",
        "title": "Pulse power capability worked example",
        "kind": "studio",
        "summary": "Quasi-static voltage/current/SOC envelope for an explicit prediction horizon.",
        "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 Open-circuit voltage = 3.8 V, Effective pulse resistance (ohm) = 0.1 1, State of charge = 0.5 1 (fraction). At 0 s, Discharge-current limit is 5 A. Additional checks are listed below.",
        "observe": "Inspect the outputs and numerical checks on the block reference page.",
        "limits": "This is a quasi-static bound. It excludes polarization dynamics, temperature evolution and weakest-cell limits in a pack. 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-power-capability",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-diode",
      "type": "Workflow",
      "label": "Piecewise-linear diode worked example",
      "properties": {
        "id": "native-diode",
        "title": "Piecewise-linear diode worked example",
        "kind": "studio",
        "summary": "Forward threshold and finite slope; reverse leakage conductance, no breakdown or junction charge",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Editable first-party network. supply: voltageV=5; resistor: resistanceOhm=100. Checks below were verified in the native execution engine.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Forward threshold and finite slope; reverse leakage conductance, no breakdown or junction charge Demonstration parameters are not calibrated hardware data. Singular or incompatible ideal constraints and unsupported state ranges stop the run.",
        "url": "https://design.lemonergy.com/cosim.html?example=physical-diode",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-electrical-switch",
      "type": "Workflow",
      "label": "Controlled electrical switch worked example",
      "properties": {
        "id": "native-electrical-switch",
        "title": "Controlled electrical switch worked example",
        "kind": "studio",
        "summary": "Finite on/off resistance with an explicit control threshold; no arc or contact bounce",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Editable first-party network. supply: voltageV=5; target: onResistanceOhm=5; target: gate=1. Checks below were verified in the native execution engine.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Finite on/off resistance with an explicit control threshold; no arc or contact bounce Demonstration parameters are not calibrated hardware data. Singular or incompatible ideal constraints and unsupported state ranges stop the run.",
        "url": "https://design.lemonergy.com/cosim.html?example=physical-electrical-switch",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-variable-resistor",
      "type": "Workflow",
      "label": "Controlled resistor worked example",
      "properties": {
        "id": "native-variable-resistor",
        "title": "Controlled resistor worked example",
        "kind": "studio",
        "summary": "Live resistance with declared positive floor and a limited-command diagnostic",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Editable first-party network. supply: voltageV=5. Checks below were verified in the native execution engine.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Live resistance with declared positive floor and a limited-command diagnostic Demonstration parameters are not calibrated hardware data. Singular or incompatible ideal constraints and unsupported state ranges stop the run.",
        "url": "https://design.lemonergy.com/cosim.html?example=physical-variable-resistor",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-open-circuit",
      "type": "Workflow",
      "label": "Open electrical port worked example",
      "properties": {
        "id": "native-open-circuit",
        "title": "Open electrical port worked example",
        "kind": "studio",
        "summary": "Zero current termination; no hidden grounding or leakage",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Editable first-party network. supply: voltageV=5. Checks below were verified in the native execution engine.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Zero current termination; no hidden grounding or leakage Demonstration parameters are not calibrated hardware data. Singular or incompatible ideal constraints and unsupported state ranges stop the run.",
        "url": "https://design.lemonergy.com/cosim.html?example=physical-open-circuit",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-ac-current-source",
      "type": "Workflow",
      "label": "AC current source worked example",
      "properties": {
        "id": "native-ac-current-source",
        "title": "AC current source worked example",
        "kind": "studio",
        "summary": "Analytic sinusoidal current, positive from p to n",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Editable first-party network. load: resistanceOhm=4. Checks below were verified in the native execution engine.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Analytic sinusoidal current, positive from p to n Demonstration parameters are not calibrated hardware data. Singular or incompatible ideal constraints and unsupported state ranges stop the run.",
        "url": "https://design.lemonergy.com/cosim.html?example=physical-ac-current-source",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-ac-voltage-source",
      "type": "Workflow",
      "label": "AC voltage source worked example",
      "properties": {
        "id": "native-ac-voltage-source",
        "title": "AC voltage source worked example",
        "kind": "studio",
        "summary": "Analytic sinusoidal voltage p minus n",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Editable first-party network. load: resistanceOhm=4. Checks below were verified in the native execution engine.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Analytic sinusoidal voltage p minus n Demonstration parameters are not calibrated hardware data. Singular or incompatible ideal constraints and unsupported state ranges stop the run.",
        "url": "https://design.lemonergy.com/cosim.html?example=physical-ac-voltage-source",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-floating-reference",
      "type": "Workflow",
      "label": "Capacitive floating reference worked example",
      "properties": {
        "id": "native-floating-reference",
        "title": "Capacitive floating reference worked example",
        "kind": "studio",
        "summary": "Explicit capacitance to the voltage datum; no DC leakage or forced zero node voltage",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Editable first-party network. target: initialVoltageV=3; source: voltageV=2; load: resistanceOhm=100. Checks below were verified in the native execution engine.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Explicit capacitance to the voltage datum; no DC leakage or forced zero node voltage Demonstration parameters are not calibrated hardware data. Singular or incompatible ideal constraints and unsupported state ranges stop the run.",
        "url": "https://design.lemonergy.com/cosim.html?example=physical-floating-reference",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-ideal-transformer",
      "type": "Workflow",
      "label": "Ideal transformer worked example",
      "properties": {
        "id": "native-ideal-transformer",
        "title": "Ideal transformer worked example",
        "kind": "studio",
        "summary": "Ideal lossless voltage/current transformation; each winding needs a voltage reference",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Editable first-party network. supply: voltageV=1; load: resistanceOhm=4. Checks below were verified in the native execution engine.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Ideal lossless voltage/current transformation; each winding needs a voltage reference Demonstration parameters are not calibrated hardware data. Singular or incompatible ideal constraints and unsupported state ranges stop the run.",
        "url": "https://design.lemonergy.com/cosim.html?example=physical-ideal-transformer",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-mutual-inductor",
      "type": "Workflow",
      "label": "Coupled inductors worked example",
      "properties": {
        "id": "native-mutual-inductor",
        "title": "Coupled inductors worked example",
        "kind": "studio",
        "summary": "Symmetric positive-definite inductance matrix; no saturation, hysteresis or winding losses",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Editable first-party network. supply: voltageV=1; short: voltageV=0. Checks below were verified in the native execution engine.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Symmetric positive-definite inductance matrix; no saturation, hysteresis or winding losses Demonstration parameters are not calibrated hardware data. Singular or incompatible ideal constraints and unsupported state ranges stop the run.",
        "url": "https://design.lemonergy.com/cosim.html?example=physical-mutual-inductor",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-operational-amplifier",
      "type": "Workflow",
      "label": "Finite-gain operational amplifier worked example",
      "properties": {
        "id": "native-operational-amplifier",
        "title": "Finite-gain operational amplifier worked example",
        "kind": "studio",
        "summary": "High impedance inputs, finite open-loop gain and hard output voltage rails; ideal output drive, no slew or supply-current model",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Editable first-party network. supply: voltageV=1; load: resistanceOhm=4. Checks below were verified in the native execution engine.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "High impedance inputs, finite open-loop gain and hard output voltage rails; ideal output drive, no slew or supply-current model Demonstration parameters are not calibrated hardware data. Singular or incompatible ideal constraints and unsupported state ranges stop the run.",
        "url": "https://design.lemonergy.com/cosim.html?example=physical-operational-amplifier",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-rotational-converter",
      "type": "Workflow",
      "label": "Ideal rotational motor coupler worked example",
      "properties": {
        "id": "native-rotational-converter",
        "title": "Ideal rotational motor coupler worked example",
        "kind": "studio",
        "summary": "Lossless back-emf/torque conversion; no winding resistance, friction or electromagnetic storage",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Editable first-party network. target: constant=2; supply: currentA=1. Checks below were verified in the native execution engine.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Lossless back-emf/torque conversion; no winding resistance, friction or electromagnetic storage Demonstration parameters are not calibrated hardware data. Singular or incompatible ideal constraints and unsupported state ranges stop the run.",
        "url": "https://design.lemonergy.com/cosim.html?example=physical-rotational-converter",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-linear-converter",
      "type": "Workflow",
      "label": "Ideal linear motor coupler worked example",
      "properties": {
        "id": "native-linear-converter",
        "title": "Ideal linear motor coupler worked example",
        "kind": "studio",
        "summary": "Lossless back-emf/force conversion; no winding loss or electromagnetic storage",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Editable first-party network. target: constant=2; supply: currentA=1. Checks below were verified in the native execution engine.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Lossless back-emf/force conversion; no winding loss or electromagnetic storage Demonstration parameters are not calibrated hardware data. Singular or incompatible ideal constraints and unsupported state ranges stop the run.",
        "url": "https://design.lemonergy.com/cosim.html?example=physical-linear-converter",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-electrical-gyrator",
      "type": "Workflow",
      "label": "Electrical gyrator worked example",
      "properties": {
        "id": "native-electrical-gyrator",
        "title": "Electrical gyrator worked example",
        "kind": "studio",
        "summary": "Lossless voltage/current duality with opposing power at the two ports",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Editable first-party network. supply: voltageV=1; load: resistanceOhm=4. Checks below were verified in the native execution engine.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Lossless voltage/current duality with opposing power at the two ports Demonstration parameters are not calibrated hardware data. Singular or incompatible ideal constraints and unsupported state ranges stop the run.",
        "url": "https://design.lemonergy.com/cosim.html?example=physical-electrical-gyrator",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-initial-voltage-constraint",
      "type": "Workflow",
      "label": "Open branch with initial voltage target worked example",
      "properties": {
        "id": "native-initial-voltage-constraint",
        "title": "Open branch with initial voltage target worked example",
        "kind": "studio",
        "summary": "Zero current at all times; initializes a directly attached capacitor when its initial voltage is unspecified, otherwise verifies the consistent initial solution",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Editable first-party network. capacitor: capacitanceF=1; load: resistanceOhm=1; target: initialVoltageV=4. Checks below were verified in the native execution engine.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Zero current at all times; initializes a directly attached capacitor when its initial voltage is unspecified, otherwise verifies the consistent initial solution Demonstration parameters are not calibrated hardware data. Singular or incompatible ideal constraints and unsupported state ranges stop the run.",
        "url": "https://design.lemonergy.com/cosim.html?example=physical-initial-voltage-constraint",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-memristor",
      "type": "Workflow",
      "label": "Bounded drift memristor worked example",
      "properties": {
        "id": "native-memristor",
        "title": "Bounded drift memristor worked example",
        "kind": "studio",
        "summary": "Synthetic resistance-range and switching-time design with a smooth drift boundary window; no fitted material or measured-device claim.",
        "steps": [
          "Review the derived teaching parameters, units and model limits.",
          "Open the revised Studio example and run its bundled current-driven model.",
          "Compare the output with the analytic logistic solution within the listed tolerances."
        ],
        "example": "Drive the hypothetical device with a constant 1 mA for 10 s. Initially w = 0.5, R = 600 Ω and V = 0.6 V. The independently derived logistic solution gives w(10 s) = 0.598687660112452 and V(10 s) = 0.5210498719100384 V. The production native model and exported results agree within the tolerances below. This independently designed teaching fixture is available in Studio.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Synthetic parameters were selected through resistance-range and switching-time targets. The earlier undocumented illustrative parameter tuple is not reused. These values do not characterize a material or device. Joglekar and Wolf support the drift equation and the p = 1 boundary window. That citation does not supply this example’s resistance endpoints, geometry, mobility or numeric outputs. The boundary window locks at w = 0 and w = 1. This reduced model does not represent every resistive-switching mechanism. Singular constraints or unsupported states stop the run.",
        "url": "https://design.lemonergy.com/cosim.html?example=physical-memristor",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-current-gain-source",
      "type": "Workflow",
      "label": "Current-controlled current source worked example",
      "properties": {
        "id": "native-current-gain-source",
        "title": "Current-controlled current source worked example",
        "kind": "studio",
        "summary": "Ideal zero-drop control-current branch and externally powered output",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Editable first-party network. supply: currentA=1; load: resistanceOhm=4. Checks below were verified in the native execution engine.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Ideal zero-drop control-current branch and externally powered output Demonstration parameters are not calibrated hardware data. Singular or incompatible ideal constraints and unsupported state ranges stop the run.",
        "url": "https://design.lemonergy.com/cosim.html?example=physical-current-gain-source",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-transresistance-source",
      "type": "Workflow",
      "label": "Current-controlled voltage source worked example",
      "properties": {
        "id": "native-transresistance-source",
        "title": "Current-controlled voltage source worked example",
        "kind": "studio",
        "summary": "Ideal zero-drop control-current branch and externally powered output",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Editable first-party network. supply: currentA=1; load: resistanceOhm=4. Checks below were verified in the native execution engine.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Ideal zero-drop control-current branch and externally powered output Demonstration parameters are not calibrated hardware data. Singular or incompatible ideal constraints and unsupported state ranges stop the run.",
        "url": "https://design.lemonergy.com/cosim.html?example=physical-transresistance-source",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-transconductance-source",
      "type": "Workflow",
      "label": "Voltage-controlled current source worked example",
      "properties": {
        "id": "native-transconductance-source",
        "title": "Voltage-controlled current source worked example",
        "kind": "studio",
        "summary": "Ideal externally powered controlled source with nonloading voltage sense",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Editable first-party network. supply: voltageV=1; load: resistanceOhm=4. Checks below were verified in the native execution engine.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Ideal externally powered controlled source with nonloading voltage sense Demonstration parameters are not calibrated hardware data. Singular or incompatible ideal constraints and unsupported state ranges stop the run.",
        "url": "https://design.lemonergy.com/cosim.html?example=physical-transconductance-source",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "workflow:native-voltage-gain-source",
      "type": "Workflow",
      "label": "Voltage-controlled voltage source worked example",
      "properties": {
        "id": "native-voltage-gain-source",
        "title": "Voltage-controlled voltage source worked example",
        "kind": "studio",
        "summary": "Ideal externally powered controlled source with nonloading voltage sense",
        "steps": [
          "Review the interface, units and model limits.",
          "Open the Studio example and run its bundled model.",
          "Compare outputs with the numerical checks; change one input and run again."
        ],
        "example": "Editable first-party network. supply: voltageV=1; load: resistanceOhm=4. Checks below were verified in the native execution engine.",
        "observe": "Inspect the output channels and checks on the block reference page.",
        "limits": "Ideal externally powered controlled source with nonloading voltage sense Demonstration parameters are not calibrated hardware data. Singular or incompatible ideal constraints and unsupported state ranges stop the run.",
        "url": "https://design.lemonergy.com/cosim.html?example=physical-voltage-gain-source",
        "label": "Open Studio example",
        "evidence": [
          "docs/glossary/native-block-verification.json"
        ]
      }
    },
    {
      "id": "topic:topic-units",
      "type": "Topic",
      "label": "Units and electrical basics",
      "properties": {
        "id": "topic-units",
        "name": "Units and electrical basics",
        "lede": "The quantities every datasheet is written in, and how they relate.",
        "context": "Use consistent units and cell/pack basis.",
        "example": "10 A for 30 min transfers 5 Ah. At constant 3.6 V this is 18 Wh; varying voltage requires integration.",
        "lesson_url": "https://lemonergy.com/learn/fundamentals/capacity-and-c-rate/",
        "lesson_label": "Open capacity and C-rate"
      }
    },
    {
      "id": "term:ohms-law",
      "type": "Term",
      "label": "Ohm’s law",
      "properties": {
        "id": "ohms-law",
        "name": "Ohm’s law",
        "section": "topic-units",
        "definition": "Voltage across a resistance equals current times that resistance. Applied to a cell it predicts the voltage drop under load from the internal resistance, which is the first-order reason terminal voltage sags.",
        "formula": "V = I × R",
        "related": [
          "internal-resistance",
          "ir-drop",
          "ohm",
          "kirchhoffs-laws"
        ],
        "example": {
          "title": "Convert a resistance into a voltage drop",
          "text": "A 10 A current through a 20 mΩ resistance produces 0.2 V of voltage drop. Use 0.020 Ω in V = IR; inserting the number 20 without converting milliohms would be wrong."
        },
        "url": "https://lemonergy.com/learn/glossary/ohms-law/",
        "mentions": [
          "voltage"
        ]
      }
    },
    {
      "id": "term:ir-drop",
      "type": "Term",
      "label": "IR drop",
      "properties": {
        "id": "ir-drop",
        "name": "IR drop",
        "aka": [
          "ohmic drop",
          "voltage sag"
        ],
        "section": "topic-charging",
        "definition": "The instant step in terminal voltage when current starts or stops, equal to current times internal resistance. It is lost as heat and is the reason a cell’s voltage under load sits below its open-circuit voltage.",
        "formula": "ΔV = I × R",
        "unit": "V",
        "related": [
          "internal-resistance",
          "ohms-law",
          "polarization",
          "open-circuit-voltage"
        ],
        "example": {
          "title": "Distinguish a current step from SOC change",
          "text": "When discharge current jumps from 0 A to 10 A through an illustrative 20 mΩ resistance, terminal voltage immediately drops by 0.2 V. Slower polarization and SOC change are separate effects."
        },
        "url": "https://lemonergy.com/learn/glossary/ir-drop/",
        "mentions": [
          "voltage",
          "closed-circuit-voltage"
        ]
      }
    },
    {
      "id": "term:impedance-rise",
      "type": "Term",
      "label": "Impedance rise",
      "properties": {
        "id": "impedance-rise",
        "name": "Impedance rise",
        "aka": [
          "resistance growth",
          "power fade"
        ],
        "section": "topic-aging",
        "definition": "An increase in a cell’s internal resistance as it ages. It costs voltage under load and therefore power, even while the stored charge is still there.",
        "related": [
          "internal-resistance",
          "sei",
          "cei",
          "state-of-power",
          "state-of-health"
        ],
        "lesson": "fundamentals/battery-aging/#crystals",
        "url": "https://lemonergy.com/learn/glossary/impedance-rise/",
        "mentions": [
          "closed-circuit-voltage"
        ]
      }
    },
    {
      "id": "term:dcir",
      "type": "Term",
      "label": "DC internal resistance",
      "properties": {
        "id": "dcir",
        "name": "DC internal resistance",
        "abbr": "DCIR",
        "aka": [
          "DC-IR",
          "pulse resistance"
        ],
        "section": "topic-testing",
        "definition": "Internal resistance measured from the voltage change during a current pulse of defined length, usually 10 s or 18 s. It is larger than the AC value because it includes charge-transfer and some diffusion, and it depends on SOC, temperature and pulse duration.",
        "unit": "mΩ",
        "related": [
          "internal-resistance",
          "acir",
          "hppc",
          "impedance-rise"
        ],
        "url": "https://lemonergy.com/learn/glossary/dcir/",
        "mentions": [
          "state-of-charge",
          "diffusion"
        ]
      }
    },
    {
      "id": "term:area-specific-resistance",
      "type": "Term",
      "label": "Area-specific resistance",
      "properties": {
        "id": "area-specific-resistance",
        "name": "Area-specific resistance",
        "abbr": "ASR",
        "aka": [
          "area-specific impedance",
          "ASI"
        ],
        "section": "topic-electrochemistry",
        "definition": "A cell’s or layer’s resistance multiplied by its electrode area, which makes resistance comparable between cells of any size. A 100 Ah cell with 2.5 m² of electrode area and 1 mΩ of resistance has an ASR of 25 Ω·cm²; cell designers and solid-state interface researchers both work in it.",
        "formula": "ASR = R · A",
        "unit": "Ω·cm²",
        "related": [
          "internal-resistance",
          "areal-loading",
          "dcir",
          "impedance",
          "solid-electrolyte"
        ],
        "example": {
          "title": "Normalize by active area",
          "text": "An illustrative measured resistance of 0.2 Ω across 5 cm² corresponds to 1 Ω·cm². Use the same geometrical-area convention when comparing samples."
        },
        "url": "https://lemonergy.com/learn/glossary/area-specific-resistance/",
        "mentions": [
          "electrode"
        ]
      }
    },
    {
      "id": "term:resistance-capacity-product",
      "type": "Term",
      "label": "Resistance–capacity product",
      "properties": {
        "id": "resistance-capacity-product",
        "name": "Resistance–capacity product",
        "aka": [
          "ohm-ampere-hour",
          "mΩ·Ah",
          "siemens per watt-hour",
          "S/Wh"
        ],
        "section": "topic-ratings",
        "definition": "A cell’s internal resistance multiplied by its capacity, which cancels out size: ten 5 Ah, 20 mΩ cells in parallel make 50 Ah at 2 mΩ, both 100 mΩ·Ah. Lower values mean more power per unit of stored energy. Conductance divided by energy, in siemens per watt-hour, expresses the same figure of merit the other way up.",
        "formula": "R·Q (mΩ·Ah); G/E = 1/(R·E) (S/Wh)",
        "unit": "mΩ·Ah",
        "related": [
          "internal-resistance",
          "power-cell-energy-cell",
          "specific-power",
          "nominal-capacity",
          "siemens",
          "dcir"
        ],
        "example": {
          "title": "Compare two cell sizes",
          "text": "A 5 Ah cell with 20 mΩ resistance and a 10 Ah cell with 10 mΩ resistance both have RQ = 100 mΩ·Ah. Compare like test conditions; identical RQ does not imply identical chemistry or thermal behavior."
        },
        "url": "https://lemonergy.com/learn/glossary/resistance-capacity-product/",
        "mentions": [
          "watt-hour"
        ]
      }
    },
    {
      "id": "term:electrolyte",
      "type": "Term",
      "label": "Electrolyte",
      "properties": {
        "id": "electrolyte",
        "name": "Electrolyte",
        "section": "topic-electrolytes",
        "definition": "The ion-conducting medium between the electrodes. In a liquid-electrolyte cell it fills the pores of both electrodes and the separator, so it is not a separate structural layer.",
        "related": [
          "lithium-salt",
          "carbonate-solvent",
          "electrolyte-additive",
          "ionic-conductivity",
          "solid-electrolyte",
          "ionic-liquid-electrolyte"
        ],
        "lesson": "fundamentals/cell-architecture/#electrolyte",
        "example": {
          "title": "Ions and electrons",
          "text": "Electrolyte carries ions between electrodes; the external circuit carries electrons. The two paths serve different roles."
        },
        "url": "https://lemonergy.com/learn/glossary/electrolyte/",
        "mentions": [
          "separator"
        ]
      }
    },
    {
      "id": "term:cylindrical-cell",
      "type": "Term",
      "label": "Cylindrical cell",
      "properties": {
        "id": "cylindrical-cell",
        "name": "Cylindrical cell",
        "aka": [
          "18650",
          "21700",
          "4680"
        ],
        "section": "topic-chemistries",
        "definition": "A cell made by winding the electrodes into a jelly roll and sealing it in a round metal can. Sizes are named by their dimensions: a 21700 cell is 21 mm across and 70 mm long.",
        "related": [
          "jelly-roll",
          "can",
          "tabless-design",
          "prismatic-cell",
          "pouch-cell",
          "centre-pin"
        ],
        "lesson": "fundamentals/cell-production/#formats",
        "example": {
          "title": "Shape versus ratings",
          "text": "A cylindrical shape does not supply the model’s capacity, resistance or voltage limits; those belong to the actual cell."
        },
        "url": "https://lemonergy.com/learn/glossary/cylindrical-cell/",
        "mentions": [
          "winding"
        ]
      }
    },
    {
      "id": "lesson:fundamentals/battery-basics/",
      "type": "Lesson",
      "label": "Lesson 0 · Battery basics",
      "properties": {
        "url": "https://lemonergy.com/learn/fundamentals/battery-basics/"
      }
    },
    {
      "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"
      }
    }
  ]
}
