원클릭으로
adsorption-energy
Use when the user asks for adsorption energy, binding energy, or wants to compare how strongly a molecule binds to a surface.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Use when the user asks for adsorption energy, binding energy, or wants to compare how strongly a molecule binds to a surface.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
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.
Run and resume the CatGo md-orchestration poll loop — delegate each poll to a subagent (keep main context lean), verify convergence by force, auto-advance each converged species per-species (pipeline, not barrier), and resume a campaign from disk after context compaction / new session. Use when driving or resuming a campaign's job-watch loop. Pairs with catgo-campaign.
Run a CatGo file-first md-orchestration "campaign" — a multi-step / high-throughput computational-materials study (e.g. SAA HER screening) driven from a human-readable folder + markdown tree, not the DB workflow engine. Use when the user says "跑一个 campaign", "md 模式跑", "high-throughput screening", or wants an agent-in-the-loop study with stages/funnel/analysis/report. Requires `catgo` on PATH.
Route computational chemistry requests to the correct software and task skill. Entry point for all CatGo agent interactions.
Drive a file-first, agent-in-the-loop computational campaign via a folder + markdown tree (no DB). Use when the user opts out of the visual workflow engine.
Authoring conventions for CatGo md-orchestration campaigns — progressive markdown, README+INDEX pairs and keeping them current, logging interventions to LESSONS, human-readable (never-hash) names, and the progressive (top→stage→calc) plan. Use when creating/editing any campaign markdown (plan/README/INDEX/STATUS/LESSONS) so the file tree stays navigable and resumable. Pairs with catgo-campaign.
| name | adsorption-energy |
| description | Use when the user asks for adsorption energy, binding energy, or wants to compare how strongly a molecule binds to a surface. |
E_ads = E(slab+adsorbate) - E(slab) - E(adsorbate_gas)
E_ads < 0: exothermic adsorption (favorable)E_ads > 0: endothermic (unfavorable)dG_ads = G(slab+adsorbate) - G(slab) - G(adsorbate_gas)
Where G includes DFT energy + ZPE - TS from Gibbs free energy calculation.
| System | Description | Notes |
|---|---|---|
| slab+adsorbate | Adsorbate on surface | geo_opt with fixed bottom layers |
| clean slab | Same slab without adsorbate | geo_opt with same settings |
| adsorbate gas | Isolated molecule in box | geo_opt in large vacuum box (15+ A) |
All three MUST use identical computational settings (ENCUT, EDIFF, k-points for slab systems; Gamma-only for gas molecule).
{"tool": "catgo_workflow_engine", "arguments": {
"action": "create", "name": "CO adsorption on Pt(111)"
}}
{"tool": "catgo_fetch", "arguments": {
"action": "crystal", "formula": "Pt", "source": "mp"
}}
{"tool": "catgo_structure", "arguments": {
"action": "slab", "miller_index": [1,1,1],
"min_slab_size": 12.0, "min_vacuum_size": 15.0
}}
{"tool": "catgo_workflow_engine", "arguments": {
"action": "add_task", "workflow_id": "wf_ads",
"task_type": "geo_opt",
"params": {"software": "vasp", "ENCUT": 520, "system_name": "clean_slab"}
}}
{"tool": "catgo_structure", "arguments": {
"action": "add_atom", "element": "C", "position": [2.77, 1.60, 14.0]
}}
{"tool": "catgo_structure", "arguments": {
"action": "add_atom", "element": "O", "position": [2.77, 1.60, 15.16]
}}
{"tool": "catgo_workflow_engine", "arguments": {
"action": "add_task", "workflow_id": "wf_ads",
"task_type": "geo_opt",
"params": {"software": "vasp", "ENCUT": 520, "system_name": "slab+CO"}
}}
{"tool": "catgo_fetch", "arguments": {
"action": "molecule", "name": "carbon monoxide"
}}
{"tool": "catgo_workflow_engine", "arguments": {
"action": "add_task", "workflow_id": "wf_ads",
"task_type": "geo_opt",
"params": {"software": "vasp", "ENCUT": 520, "ISMEAR": 0,
"KPOINTS": [1,1,1], "system_name": "CO_gas"}
}}
{"tool": "catgo_workflow_engine", "arguments": {
"action": "submit", "workflow_id": "wf_ads"
}}
from catgo.workflow import Workflow
wf = Workflow("CO adsorption on Pt(111)")
# Clean slab
slab_inp = wf.add_task("structure_input", structure=clean_slab_json)
slab_opt = wf.add_task("geo_opt", structure=slab_inp.output.structure,
software="vasp", ENCUT=520)
# Slab + CO
ads_inp = wf.add_task("structure_input", structure=slab_co_json)
ads_opt = wf.add_task("geo_opt", structure=ads_inp.output.structure,
software="vasp", ENCUT=520)
# Gas-phase CO (Gamma-only, no smearing)
co_inp = wf.add_task("structure_input", structure=co_gas_json)
co_opt = wf.add_task("geo_opt", structure=co_inp.output.structure,
software="vasp", ENCUT=520, ISMEAR=0,
KPOINTS=[1, 1, 1])
wf.submit()
# After completion:
# E_ads = ads_opt.output.energy - slab_opt.output.energy - co_opt.output.energy
# Add freq + gibbs for each branch
for task_opt, name, phase in [
(ads_opt, "slab+CO", "adsorbed"),
(co_opt, "CO_gas", "gas"),
]:
frq = wf.add_task("freq", structure=task_opt.output.structure,
software="vasp",
freeze_mode="layers" if phase == "adsorbed" else "none",
freeze_layers=4 if phase == "adsorbed" else 0)
gib = wf.add_task("gibbs_energy", energy=task_opt.output.energy,
frequencies=frq.output.frequencies, phase=phase)
clean_slab --> geo_opt ----\
slab+adsorbate --> geo_opt ----+--> E_ads = E2 - E1 - E3
adsorbate_gas --> geo_opt ----/
Three independent branches, minimum 3 tasks.
To compare adsorption at different sites (top, bridge, hollow):
sites = {
"top": [2.77, 1.60, 14.0],
"bridge": [1.39, 2.40, 13.8],
"hollow": [1.39, 0.80, 13.6],
}
for site_name, pos in sites.items():
inp = wf.add_task("structure_input", structure=make_ads_slab(pos))
opt = wf.add_task("geo_opt", structure=inp.output.structure,
software="vasp", ENCUT=520,
system_name=f"CO_{site_name}")