| name | catgo-workflow |
| description | Create and manage computational chemistry workflows with CatGo. Supports VASP, CP2K, ORCA, MLP, LAMMPS. Build OER/HER/CO2RR workflows, geometry optimization, frequency analysis, Gibbs energy calculations. |
CatGo Workflow Skill
Quick Start — Python API
from catgo.workflow import Workflow
from catgo.workflow.builtins import geo_opt, freq, gibbs_energy
wf = Workflow("RuO2 OER")
slab = wf.add_task("structure_input", structure=structure_json)
opt = wf.add_task(geo_opt, structure=slab.output.structure, ENCUT=520, system_name="*OH")
frq = wf.add_task(freq, structure=opt.output.structure, system_name="*OH",
freeze_mode="layers", freeze_layers=4)
gib = wf.add_task(gibbs_energy, energy=opt.output.energy,
frequencies=frq.output.frequencies, system_name="*OH")
wf.submit()
HPC Confirmation Gate: By default, HPC tasks pause at PENDING_REVIEW after local preprocessing completes, so users can verify structures and parameters before spending HPC resources. Users confirm via the frontend "Confirm & Submit" button (per-task or "Confirm All"). To skip this gate, call wf.submit(auto_submit=True).
HPC Confirmation Required: Before calling wf.submit() or catgo_workflow_engine(action="submit"), you MUST ask the user which HPC cluster to use and confirm job parameters (partition, account, walltime, ntasks). These can be set per-task via add_task params. Never submit without user confirmation.
Available Task Types
HPC Calculations
geo_opt — Geometry optimization (VASP/CP2K/ORCA/MLP)
single_point — Single point energy (VASP/CP2K/ORCA)
freq — Vibrational frequencies (VASP/CP2K/ORCA)
cell_opt — Cell optimization (VASP/CP2K)
md — Molecular dynamics (VASP/CP2K/LAMMPS/MLP)
ts_search — Transition state search (Sella/ORCA NEB-TS)
Local Analysis
gibbs_energy — G = E_DFT + ZPE - TS
free_energy_diagram — Plot reaction energy diagram
dos_analysis — Density of states analysis
charge_analysis — Bader charge analysis
Structure Building
structure_input — Provide input structure
slab_gen — Generate surface slab
adsorbate_place — Place adsorbate on surface
Key Parameters
VASP
software="vasp", ENCUT, EDIFF, EDIFFG, NSW, ISIF, IBRION
ISMEAR, SIGMA, ISPIN, NCORE, KPAR
Frequency
freeze_mode: "none", "layers", "z_range", "element", "indices", "manual"
freeze_layers: number of bottom layers to freeze
freeze_z_below: freeze atoms below this z coordinate (Angstrom)
Gibbs Energy
phase: "adsorbed" (harmonic) or "gas" (ideal gas)
temperature: K (default 298.15)
freq_cutoff: cm-1 (default 50, for adsorbed phase)
Output References
Connect tasks by passing .output.key:
opt.output.structure
opt.output.energy
frq.output.frequencies
frq.output.zpe
gib.output.gibbs
Workflow Patterns
OER Overpotential
for ads in ["OH", "O", "OOH"]:
opt = wf.add_task(geo_opt, structure=slab.output.structure,
system_name=f"*{ads}")
frq = wf.add_task(freq, structure=opt.output.structure,
freeze_mode="layers", freeze_layers=4)
gib = wf.add_task(gibbs_energy, energy=opt.output.energy,
frequencies=frq.output.frequencies, phase="adsorbed")
Convergence Test
for encut in [400, 500, 600, 700]:
wf.add_task(single_point, structure=struct.output.structure,
ENCUT=encut, system_name=f"ENCUT={encut}")