{
  "node": {
    "id": "block:charge",
    "type": "Block",
    "label": "Charge",
    "properties": {
      "id": "charge",
      "name": "Charge",
      "kind": "protocol",
      "summary": "Apply a charge segment in a Battery Test Protocol.",
      "behavior": "CC mode commands positive a amperes; CP mode commands positive w watts. Duration s is positive and an exact multiple of dtS. Charge-only CCCV mode targets targetSoC and runs as the sole block in its protocol. Adaptive until conditions may stop CC or CP at a sampled boundary.",
      "ports": [],
      "parameters": [
        {
          "key": "mode",
          "label": "mode",
          "unit": "cc, cp or cccv",
          "description": "Choose the supported charge mode."
        },
        {
          "key": "a",
          "label": "a",
          "unit": "A",
          "description": "Positive CC magnitude; CC only."
        },
        {
          "key": "w",
          "label": "w",
          "unit": "W",
          "description": "Positive power magnitude; CP only."
        },
        {
          "key": "s",
          "label": "s",
          "unit": "s",
          "description": "Positive segment duration for CC/CP."
        },
        {
          "key": "targetSoC",
          "label": "targetSoC",
          "unit": "fraction",
          "description": "CCCV target in (0,1]."
        },
        {
          "key": "sourceKW",
          "label": "sourceKW",
          "unit": "kW",
          "description": "Optional positive CCCV charger power."
        },
        {
          "key": "endCRate",
          "label": "endCRate",
          "unit": "1/h",
          "description": "Optional positive CCCV current cutoff."
        }
      ],
      "equations": [],
      "example": {
        "title": "Program current stages",
        "text": "10 A for 300 s then 5 A for 600 s supplies 1.67 Ah before efficiency adjustment.",
        "url": "https://design.lemonergy.com/",
        "label": "Open Design → Protocol bench"
      },
      "limits": [
        "The bench refuses chaining plant blocks with standalone CC–CV; stepped CC is not multistage CC followed by final CV.",
        "This is CP only, not a combined CP–CV controller. CC and CP cannot share a protocol.",
        "Scheduling cycles does not supply calibrated degradation or physical lifetime evidence.",
        "Protocol dtS is 1e-6 to 60 s. CC and CP segments cannot share one protocol; CCCV charge must stand alone. Protocol samples use discharge-positive iPack."
      ],
      "evidence": [
        "js/test-protocol.js"
      ],
      "caseIds": [
        "multistage-current",
        "constant-power",
        "cycle-protocol"
      ],
      "type": "charge",
      "implementationId": "charge",
      "url": "https://lemonergy.com/learn/glossary/blocks/charge/",
      "documentationUrl": "https://lemonergy.com/learn/glossary/blocks/charge/",
      "sourceFile": "block-library.json",
      "sourceRepository": "battery-design",
      "sourceRevision": "ef9802329b75bc15bb96885f8ed5d49425106696",
      "reviewed": "2026-10-27"
    }
  },
  "incoming": [
    {
      "id": "edge:usesBlock/constant-power/0",
      "type": "usesBlock",
      "source": "workflow:constant-power",
      "target": "block:charge",
      "properties": {
        "sourceFile": "wiki-blocks.json",
        "position": 0,
        "name": "Charge at constant power",
        "type": "charge",
        "role": "Programs power",
        "settings": [
          "mode: cp",
          "w / s"
        ]
      }
    },
    {
      "id": "edge:usesBlock/cycle-protocol/3",
      "type": "usesBlock",
      "source": "workflow:cycle-protocol",
      "target": "block:charge",
      "properties": {
        "sourceFile": "wiki-blocks.json",
        "position": 3,
        "name": "Charge",
        "type": "charge",
        "role": "Adds charge",
        "settings": [
          "mode: cc",
          "a / s"
        ]
      }
    },
    {
      "id": "edge:usesBlock/multistage-current/0",
      "type": "usesBlock",
      "source": "workflow:multistage-current",
      "target": "block:charge",
      "properties": {
        "sourceFile": "wiki-blocks.json",
        "position": 0,
        "name": "Charge at constant current",
        "type": "charge",
        "role": "First stage",
        "settings": [
          "mode: cc",
          "a / s"
        ]
      }
    },
    {
      "id": "edge:usesBlock/multistage-current/1",
      "type": "usesBlock",
      "source": "workflow:multistage-current",
      "target": "block:charge",
      "properties": {
        "sourceFile": "wiki-blocks.json",
        "position": 1,
        "name": "Charge at constant current",
        "type": "charge",
        "role": "Next stage",
        "settings": [
          "mode: cc",
          "a / s"
        ]
      }
    }
  ],
  "neighbors": [
    {
      "id": "workflow:constant-power",
      "type": "Workflow",
      "label": "Program constant power",
      "properties": {
        "id": "constant-power",
        "title": "Program constant power",
        "kind": "protocol",
        "summary": "Positive power magnitude and explicit direction define CP.",
        "steps": [
          "Select CP and duration.",
          "Inspect current as voltage changes."
        ],
        "example": "2 kW at 100 V implies 20 A; at 120 V it implies about 16.7 A.",
        "observe": "Current follows I = P/V.",
        "limits": "This is CP only, not a combined CP–CV controller. CC and CP cannot share a protocol.",
        "url": "https://design.lemonergy.com/",
        "label": "Open Design → Protocol bench",
        "evidence": [
          "js/test-protocol.js"
        ]
      }
    },
    {
      "id": "workflow:cycle-protocol",
      "type": "Workflow",
      "label": "Repeat charge/discharge",
      "properties": {
        "id": "cycle-protocol",
        "title": "Repeat charge/discharge",
        "kind": "protocol",
        "summary": "Cycle aging block repeats charge, discharge and rest.",
        "steps": [
          "Open Cycle aging block.",
          "Review currents and rests; compare throughput."
        ],
        "example": "Twenty 50%-depth discharges give ten discharge-equivalent full cycles at fixed nominal capacity.",
        "observe": "Cycle count differs from throughput.",
        "limits": "Scheduling cycles does not supply calibrated degradation or physical lifetime evidence.",
        "url": "https://design.lemonergy.com/",
        "label": "Open Design → Protocol bench",
        "evidence": [
          "js/test-protocol.js"
        ]
      }
    },
    {
      "id": "workflow:multistage-current",
      "type": "Workflow",
      "label": "Program current stages",
      "properties": {
        "id": "multistage-current",
        "title": "Program current stages",
        "kind": "protocol",
        "summary": "Successive charge blocks produce stepped CC.",
        "steps": [
          "Add decreasing CC blocks.",
          "Inspect voltage findings and durations."
        ],
        "example": "10 A for 300 s then 5 A for 600 s supplies 1.67 Ah before efficiency adjustment.",
        "observe": "Each stage has an explicit duration.",
        "limits": "The bench refuses chaining plant blocks with standalone CC–CV; stepped CC is not multistage CC followed by final CV.",
        "url": "https://design.lemonergy.com/",
        "label": "Open Design → Protocol bench",
        "evidence": [
          "js/test-protocol.js"
        ]
      }
    }
  ]
}
