--- name: cohp-analysis description: > 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. tags: [analysis, bonding, COHP, LOBSTER, orbital] --- # 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: ```json {"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: ```json {"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: ```json {"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): ```json {"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: ```json {"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 ```json {"tool": "catgo_workflow", "arguments": { "action": "create", "name": "COHP bonding analysis" }} ``` ```json {"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 ```json {"tool": "catgo_workflow", "arguments": { "action": "add_node", "workflow_id": "wf_cohp", "node_type": "cohp_analysis", "params": {"source": "parent_step"} }} ``` ### 3. Connect and run ```json {"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: ```json { "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.