| name | dos-analysis |
| description | Use when the user asks about density of states (DOS), projected DOS (PDOS), d-band center, spin-resolved DOS, or electronic structure analysis from completed DFT calculations.
|
DOS and Electronic Structure Analysis
Overview
Density of states (DOS) analysis extracts electronic structure information
from completed DFT calculations. Key quantities:
- Total DOS: overall electronic structure, band gap identification
- PDOS: orbital-resolved contributions from specific atoms
- d-band center: catalytic activity descriptor (higher = stronger binding)
- Spin-resolved DOS: magnetic ordering, spin polarization
MCP Tool: catgo_analyze
Total DOS
{"tool": "catgo_analyze", "arguments": {
"action": "dos",
"workflow_id": "wf_abc",
"task_id": "task_sp",
"dos_type": "total"
}}
Projected DOS (PDOS)
{"tool": "catgo_analyze", "arguments": {
"action": "dos",
"workflow_id": "wf_abc",
"task_id": "task_sp",
"dos_type": "projected",
"atom_indices": [0, 1, 2, 3],
"orbitals": ["d"]
}}
d-Band Center
{"tool": "catgo_analyze", "arguments": {
"action": "dos",
"workflow_id": "wf_abc",
"task_id": "task_sp",
"dos_type": "dband",
"atom_indices": [0, 1, 2, 3]
}}
Returns:
d_band_center: energy relative to Fermi level (eV)
d_band_width: standard deviation of d-band (eV)
d_band_filling: fraction of d-band occupied (0-1)
Workflow for DOS Analysis
DOS requires a completed single_point or geo_opt calculation with
appropriate VASP settings.
VASP Settings for DOS
{"tool": "catgo_workflow_engine", "arguments": {
"action": "add_task", "workflow_id": "wf_dos",
"task_type": "single_point",
"params": {
"software": "vasp",
"ENCUT": 520,
"ISMEAR": -5,
"NEDOS": 3001,
"LORBIT": 11,
"system_name": "DOS calculation"
}
}}
Key VASP parameters:
ISMEAR = -5: tetrahedron method with Blochl corrections (accurate DOS)
NEDOS = 3001: number of DOS grid points (default 301 is too coarse)
LORBIT = 11: write projected DOS (DOSCAR with atom/orbital decomposition)
Two-Step Pattern: Relax then DOS
{"tool": "catgo_workflow_engine", "arguments": {
"action": "add_task", "workflow_id": "wf_dos",
"task_type": "geo_opt",
"params": {"software": "vasp", "ENCUT": 520, "system_name": "relax"}
}}
{"tool": "catgo_workflow_engine", "arguments": {
"action": "add_task", "workflow_id": "wf_dos",
"task_type": "single_point",
"depends_on": "task_relax",
"params": {
"software": "vasp", "ENCUT": 520,
"ISMEAR": -5, "NEDOS": 3001, "LORBIT": 11,
"system_name": "DOS"
}
}}
Python API
from catgo.workflow import Workflow
wf = Workflow("DOS analysis - Pt(111)")
inp = wf.add_task("structure_input", structure=pt_slab_json)
opt = wf.add_task("geo_opt",
structure=inp.output.structure,
software="vasp", ENCUT=520)
dos_sp = wf.add_task("single_point",
structure=opt.output.structure,
software="vasp", ENCUT=520,
ISMEAR=-5, NEDOS=3001, LORBIT=11)
dos = wf.add_task("dos_analysis",
doscar=dos_sp.output.doscar,
atom_indices=[0, 1, 2, 3],
orbitals=["d"],
compute_dband=True)
wf.submit()
d-Band Center Theory
The d-band model (Hammer-Norskov) relates catalytic activity to the
d-band center position relative to the Fermi level:
epsilon_d = integral(E * rho_d(E) dE) / integral(rho_d(E) dE)
Integrated over occupied states (up to Fermi level).
| d-band center | Adsorbate binding | Catalytic implication |
|---|
| Higher (closer to E_F) | Stronger | More reactive, may over-bind |
| Lower (further from E_F) | Weaker | Less reactive, may under-bind |
Surface vs Bulk d-Band
Surface atoms have narrower d-bands (fewer neighbors) and higher d-band
centers than bulk atoms. Always select surface atom indices for catalysis
analysis.
Spin-Resolved DOS
For magnetic systems (Fe, Co, Ni, oxides), enable spin polarization:
{"tool": "catgo_workflow_engine", "arguments": {
"action": "add_task", "workflow_id": "wf_dos",
"task_type": "single_point",
"params": {
"software": "vasp", "ENCUT": 520,
"ISPIN": 2, "ISMEAR": -5, "NEDOS": 3001, "LORBIT": 11,
"system_name": "spin-DOS"
}
}}
Spin-resolved DOS returns separate up/down channels. The magnetic moment
per atom equals the integral of (rho_up - rho_down) up to E_F.
Orbital Channels
Available orbital projections for PDOS:
| Channel | Orbitals | Use Case |
|---|
"s" | s | Main group elements |
"p" | px, py, pz | O, N, C, S |
"d" | dxy, dyz, dxz, dz2, dx2-y2 | Transition metals |
"f" | 7 f-orbitals | Lanthanides, actinides |
Specific sub-orbitals: "dz2", "dx2-y2", "dxy", "dxz", "dyz"
Common Pitfalls
- Never use ISMEAR=1 (Methfessel-Paxton) for DOS -- it produces negative
DOS artifacts. Use ISMEAR=-5 (tetrahedron) for static DOS calculations.
- NEDOS=301 (VASP default) gives very coarse DOS. Use at least 2001-3001.
- LORBIT=11 is required for PDOS. Without it, only total DOS is available.
- Always do DOS as a separate single_point after geo_opt. The DOS from
a relaxation run uses the smearing from NSW>0 and is unreliable.
- For d-band center, select only surface layer atoms. Including bulk atoms
averages out the surface electronic signature.
- Band gap from DOS can be noisy -- compare with the band structure if
precise gap values are needed.