VASP single-point energy calculation. Used standalone, as a pre-step for DOS/band structure, or to evaluate energy at a fixed geometry.
Scanned 9/20/2026
Install to Claude Code
npx -y skills add Hello-QM/catgo-LRG --skill vasp-static --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Vasp Static?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/hello-qm-vasp-static)More formats (shields.io, HTML) on the badges page.
---
name: vasp-static
description: VASP single-point energy calculation. Used standalone, as a pre-step for DOS/band structure, or to evaluate energy at a fixed geometry.
---
# VASP Single Point Calculation
Compute the total energy (and optionally charge density, wavefunction) at a fixed geometry. No ionic relaxation.
## When to Use
1. **After geometry optimization** — get a precise energy at the relaxed geometry with tighter settings
2. **Before DOS calculation** — generate CHGCAR with fine k-mesh for subsequent non-SCF DOS
3. **Before band structure** — generate CHGCAR for non-SCF band calculation
4. **Convergence testing** — test ENCUT, k-points, or other parameters at fixed geometry
5. **Energy evaluation** — compare energies of different configurations without relaxing
## Discussion Checkpoints
🔴 **Must discuss with user:**
- **Functional consistency** — must match the functional used in the preceding geo_opt; mixing PBE geometry with SCAN single point introduces systematic errors
🟡 **Recommend confirming:**
- LORBIT (default: 11) — needed for projected DOS; set to 11 for per-atom orbital projections, omit if only total energy is needed
- NEDOS (default: 3001) — increase for DOS analysis to resolve fine features; 301 is sufficient for energy-only calculations
- ISMEAR — use -5 (tetrahedron) for DOS calculations, 0 (Gaussian) for general single points, 1 (Methfessel-Paxton) for metals
- LCHARG / LWAVE — set True if this single point feeds into a subsequent DOS or band structure calculation
🟢 **Safe defaults:**
- NSW = 0 (no ionic relaxation)
- IBRION = -1 (no ionic optimizer)
- EDIFF = 1E-5
- ISMEAR = 0, SIGMA = 0.05
## Basic Single Point
```python
from catgo.workflow import Workflow
from catgo.workflow.builtins import geo_opt, single_point
wf = Workflow("Single point energy")
struct = wf.add_task("structure_input", structure=structure_json)
sp = wf.add_task(single_point, structure=struct.output.structure,
system_name="TiO2_SP")
wf.submit()
```
**MCP equivalent:**
```
catgo_workflow_engine(action="create", params={"name": "Single point"})
catgo_workflow_engine(action="add_task", params={
"workflow_id": "wf_xxx",
"task_type": "single_point",
"software": "vasp",
"structure": "<json>",
"system_name": "TiO2_SP"
})
catgo_workflow_engine(action="submit", params={"workflow_id": "wf_xxx"})
```
## After Optimization
Chain a single point after relaxation for a more accurate energy:
```python
opt = wf.add_task(geo_opt, structure=struct.output.structure,
ISIF=2, system_name="relax")
sp = wf.add_task(single_point, structure=opt.output.structure,
ENCUT=600, # Higher cutoff for precise energy
EDIFF=1e-6, # Tighter SCF convergence
system_name="SP_precise")
```
## Pre-DOS Single Point
Generate a converged charge density with a fine k-mesh for subsequent DOS:
```python
sp = wf.add_task(single_point, structure=opt.output.structure,
LCHARG=True, # Write CHGCAR (needed for DOS)
LWAVE=True, # Write WAVECAR (optional, speeds up DOS)
ISMEAR=-5, # Tetrahedron method (accurate DOS)
NEDOS=3001, # Dense energy grid
EDIFF=1e-6, # Tight convergence
system_name="SP_for_DOS")
```
## Pre-Band Structure Single Point
Generate CHGCAR for non-SCF band calculation:
```python
sp = wf.add_task(single_point, structure=opt.output.structure,
LCHARG=True, # Write CHGCAR
ICHARG=2, # Self-consistent (generate charge)
system_name="SP_for_bands")
```
## Convergence Testing
Test multiple ENCUT values at a fixed geometry:
```python
wf = Workflow("ENCUT convergence")
struct = wf.add_task("structure_input", structure=structure_json)
for encut in [400, 450, 500, 550, 600]:
wf.add_task(single_point, structure=struct.output.structure,
ENCUT=encut, system_name=f"ENCUT={encut}")
wf.submit()
```
**MCP equivalent:**
```
catgo_workflow_engine(action="create", params={"name": "ENCUT convergence"})
catgo_workflow_engine(action="add_task", params={
"workflow_id": "wf_xxx",
"task_type": "structure_input",
"structure": "<json>"
})
# Repeat for each ENCUT value
catgo_workflow_engine(action="add_task", params={
"workflow_id": "wf_xxx",
"task_type": "single_point",
"software": "vasp",
"structure": "{{t_001.output.structure}}",
"ENCUT": 400,
"system_name": "ENCUT=400"
})
# ... repeat for 450, 500, 550, 600
```
## Key Parameters
| Parameter | Default | Purpose |
|---|---|---|
| NSW | 0 | No ionic steps (fixed geometry) |
| IBRION | -1 | No ionic optimizer |
| EDIFF | 1e-5 | SCF convergence (use 1e-6 for precise energy) |
| NEDOS | 3001 | Number of DOS points (increase for DOS calculations) |
| LCHARG | False | Write CHGCAR (set True for DOS/band pre-calc) |
| LWAVE | False | Write WAVECAR (set True to restart from wavefunction) |
| ISMEAR | 0 | Gaussian smearing (use -5 for DOS with tetrahedron) |
| LORBIT | 11 | Write projected DOS (DOSCAR with per-atom projections) |
## ISMEAR Guidance
| System type | ISMEAR | SIGMA | Notes |
|---|---|---|---|
| Insulator/semiconductor | 0 | 0.05 | Gaussian smearing (default) |
| Metal | 1 | 0.2 | Methfessel-Paxton |
| DOS calculation | -5 | N/A | Tetrahedron with Blochl corrections |
| Molecule in box | 0 | 0.01 | Small sigma, Gamma-only |
**Rule:** ISMEAR=-5 requires at least 3 k-points per direction. Do not use for Gamma-only calculations.
## Output
The single_point task produces:
- `output.energy` — total DFT energy in eV
- `output.structure` — the (unchanged) input structure
## Troubleshooting
| Problem | Fix |
|---|---|
| SCF not converging | Try ALGO=All, increase NELM=400, or AMIX=0.1 |
| Negative NBANDS warning | Increase NBANDS explicitly |
| Memory error | Reduce NCORE, or increase node count |
| Wrong energy for magnetic system | Set ISPIN=2, provide MAGMOM |
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!