cohp-analysis

Use when the user asks about COHP (Crystal Orbital Hamilton Population), chemical bonding analysis, LOBSTER output, orbital-resolved bonding, or bonding/antibonding character between atoms.

SKILL.md

GitHub

COHP Analysis

Overview

Crystal Orbital Hamilton Population (COHP) analysis quantifies bonding and antibonding interactions between atom pairs in a crystal. COHP data is generated by LOBSTER from DFT output (typically VASP). CatGo reads COHPCAR.lobster files and provides interactive visualization and data extraction.

Key applications:

  • Bonding character: Identify bonding (negative COHP) vs antibonding (positive COHP) regions
  • Orbital-resolved analysis: Decompose into s-s, p-d, d-d contributions
  • Catalyst design: Understand adsorbate-surface bonding (e.g., CO-Pt d-band interactions)
  • Integrated COHP (ICOHP): Quantitative bond strength from ICOHPLIST.lobster

MCP Tool: catgo_analyze (workflow node: cohp_analysis)

COHP analysis in the Claude Code MCP uses the workflow node cohp_analysis or the dedicated catgo_cohp_data tool (in the full MCP server). The workflow engine automatically reads LOBSTER output from a parent calculation step.

Workflow-Based COHP Analysis

Add a cohp_analysis node downstream of a VASP calculation that produces LOBSTER output:

{"tool": "catgo_workflow", "arguments": {
  "action": "add_node", "workflow_id": "wf_bonding",
  "node_type": "cohp_analysis",
  "params": {"source": "parent_step"}
}}

Upload COHPCAR File Directly

If you have a COHPCAR.lobster file, upload it to create a session:

{"tool": "catgo_analyze", "arguments": {
  "action": "dos",
  "params": {"file_type": "COHPCAR", "remote_path": "/path/to/COHPCAR.lobster"}
}}

The upload returns a session_id along with metadata: nspin, npoints, efermi, and a list of available bonds with atom labels and distances.

Retrieve COHP Data for Specific Bonds

Once you have a session_id, query COHP data for specific bonds:

{"tool": "catgo_analyze", "arguments": {
  "action": "dos",
  "params": {
    "session_id": "abc-123",
    "bond_indices": [1, 3],
    "include_orbitals": false
  }
}}

Orbital-Resolved COHP

To decompose bonding into orbital contributions (e.g., p-d interactions):

{"tool": "catgo_analyze", "arguments": {
  "action": "dos",
  "params": {
    "session_id": "abc-123",
    "bond_indices": [1],
    "include_orbitals": true,
    "orbital_filter": ["p-d", "s-d"]
  }
}}

Aggregate Orbital COHP

Sum orbital contributions for a cleaner view:

{"tool": "catgo_analyze", "arguments": {
  "action": "dos",
  "params": {
    "session_id": "abc-123",
    "bond_indices": [1],
    "aggregate_orbitals": true,
    "orbital_filter": ["d-d"]
  }
}}

Parameters

Parameter Type Description
session_id string Session ID from COHPCAR upload
bond_indices int[] 1-based bond numbers to retrieve (from upload metadata)
include_orbitals bool Include orbital-decomposed COHP (default false)
orbital_filter string[] Filter orbital pairs, e.g. ["p-d", "s-d"]
aggregate_orbitals bool Sum filtered orbital contributions (default false)

Complete Workflow: VASP + LOBSTER COHP

1. Run VASP static calculation with LOBSTER-compatible settings

{"tool": "catgo_workflow", "arguments": {
  "action": "create", "name": "COHP bonding analysis"
}}
{"tool": "catgo_workflow", "arguments": {
  "action": "add_node", "workflow_id": "wf_cohp",
  "node_type": "single_point",
  "params": {
    "software": "vasp",
    "ENCUT": 520,
    "ISYM": -1,
    "NBANDS": 200,
    "system_name": "static for LOBSTER"
  }
}}

2. Add COHP analysis node

{"tool": "catgo_workflow", "arguments": {
  "action": "add_node", "workflow_id": "wf_cohp",
  "node_type": "cohp_analysis",
  "params": {"source": "parent_step"}
}}

3. Connect and run

{"tool": "catgo_workflow", "arguments": {
  "action": "connect",
  "workflow_id": "wf_cohp",
  "from_id": "static_node_id",
  "to_id": "cohp_node_id",
  "from_handle": "data",
  "to_handle": "data"
}}

Return Format

COHP data is returned as:

{
  "energies": [-10.0, -9.95, ...],
  "series": [
    {
      "label": "Fe1-O2 (2.01 A)",
      "spin_up": [0.12, 0.15, ...],
      "spin_down": [-0.08, -0.10, ...],
      "bond_index": 1,
      "is_total": true
    }
  ],
  "efermi": -2.35
}

Negative COHP values indicate bonding interactions; positive values indicate antibonding.

Common Pitfalls

  1. LOBSTER requires specific VASP settings: ISYM = -1 (no symmetry), sufficient NBANDS, and LWAVE = .TRUE. for wavefunction output.
  2. Bond indices are 1-based (matching LOBSTER convention). Index 0 is the "Average" across all bonds.
  3. Large COHPCAR files (>100 MB) may take several seconds to parse. The session is cached for 30 minutes after last access.
  4. For spin-polarized calculations, both spin_up and spin_down channels are returned. Non-magnetic calculations have spin_down = null.
  5. ICOHP (integrated COHP) from ICOHPLIST.lobster provides a single number per bond -- use it for quick bond strength comparisons without needing the full energy-resolved COHP.