{
  "node": {
    "id": "block:pulse",
    "type": "Block",
    "label": "Pulse train",
    "properties": {
      "id": "pulse",
      "name": "Pulse train",
      "kind": "protocol",
      "summary": "Alternate charge or discharge pulses with rests.",
      "behavior": "direction selects charge or discharge. The finite train uses positive current and pulse duration, positive rest duration, and an integer count from 1 to 1000. Durations must align with protocol dtS.",
      "ports": [],
      "parameters": [
        {
          "key": "direction",
          "label": "direction",
          "unit": "charge or discharge",
          "description": "Pulse direction."
        },
        {
          "key": "a",
          "label": "a",
          "unit": "A",
          "description": "Positive pulse-current magnitude."
        },
        {
          "key": "pulseS",
          "label": "pulseS",
          "unit": "s",
          "description": "Positive pulse duration."
        },
        {
          "key": "restS",
          "label": "restS",
          "unit": "s",
          "description": "Positive rest duration."
        },
        {
          "key": "count",
          "label": "count",
          "unit": "count",
          "description": "Integer 1 to 1000."
        }
      ],
      "equations": [],
      "example": {
        "title": "Build pulse and rest",
        "text": "10 A for 10 s adds 100 C, about 0.0278 Ah, before efficiency adjustment.",
        "url": "https://design.lemonergy.com/",
        "label": "Open Design → Protocol bench"
      },
      "limits": [
        "Pulse programming does not establish faster, safer or longer-life charging. An existing pack and product access are required.",
        "The estimate depends on timing, temperature and state; this is not AC impedance spectroscopy.",
        "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": [
        "pulse-protocol",
        "hppc"
      ],
      "type": "pulse",
      "implementationId": "pulse",
      "url": "https://lemonergy.com/learn/glossary/blocks/pulse/",
      "documentationUrl": "https://lemonergy.com/learn/glossary/blocks/pulse/",
      "sourceFile": "block-library.json",
      "sourceRepository": "battery-design",
      "sourceRevision": "ef9802329b75bc15bb96885f8ed5d49425106696",
      "reviewed": "2026-10-27"
    }
  },
  "incoming": [
    {
      "id": "edge:usesBlock/hppc/1",
      "type": "usesBlock",
      "source": "workflow:hppc",
      "target": "block:pulse",
      "properties": {
        "sourceFile": "wiki-blocks.json",
        "position": 1,
        "name": "Pulse",
        "type": "pulse",
        "role": "Excites charge/discharge",
        "settings": [
          "a",
          "pulseS / restS"
        ]
      }
    },
    {
      "id": "edge:usesBlock/pulse-protocol/0",
      "type": "usesBlock",
      "source": "workflow:pulse-protocol",
      "target": "block:pulse",
      "properties": {
        "sourceFile": "wiki-blocks.json",
        "position": 0,
        "name": "Pulse",
        "type": "pulse",
        "role": "Applies repeated pulses",
        "settings": [
          "direction",
          "a",
          "pulseS / restS",
          "count"
        ]
      }
    }
  ],
  "neighbors": [
    {
      "id": "workflow:hppc",
      "type": "Workflow",
      "label": "Inspect pulse characterization",
      "properties": {
        "id": "hppc",
        "title": "Inspect pulse characterization",
        "kind": "protocol",
        "summary": "HPPC alternates pulses, moves SOC and includes long rests.",
        "steps": [
          "Open HPPC pulse characterization.",
          "Compare immediate voltage change and recovery."
        ],
        "example": "0.2 V change after a 10 A step gives 20 mΩ by ΔV/ΔI on the same cell/pack basis.",
        "observe": "Long rests differ from the immediate resistive jump.",
        "limits": "The estimate depends on timing, temperature and state; this is not AC impedance spectroscopy.",
        "url": "https://design.lemonergy.com/",
        "label": "Open Design → Protocol bench",
        "evidence": [
          "js/test-protocol.js"
        ]
      }
    },
    {
      "id": "workflow:pulse-protocol",
      "type": "Workflow",
      "label": "Build pulse and rest",
      "properties": {
        "id": "pulse-protocol",
        "title": "Build pulse and rest",
        "kind": "protocol",
        "summary": "The bench programs direction, current, timing and repetitions.",
        "steps": [
          "Open Sim → Open the protocol bench.",
          "Create charge pulses and inspect voltage and SOC."
        ],
        "example": "10 A for 10 s adds 100 C, about 0.0278 Ah, before efficiency adjustment.",
        "observe": "Rest and pulse timing change excitation.",
        "limits": "Pulse programming does not establish faster, safer or longer-life charging. An existing pack and product access are required.",
        "url": "https://design.lemonergy.com/",
        "label": "Open Design → Protocol bench",
        "evidence": [
          "js/test-protocol.js"
        ]
      }
    }
  ]
}
