--- name: abinit description: > Generate and manage ABINIT DFT calculations. Use when the user requests ABINIT, or needs DFPT phonons, GW calculations, or BSE optical spectra. compatibility: > Requires ABINIT installed on the HPC target. Pseudopotential files (PAW JTH or norm-conserving) must be available. --- # ABINIT ## When to Use - User explicitly requests ABINIT - User needs DFPT (density-functional perturbation theory) phonons natively - User needs GW quasiparticle calculations or BSE optical spectra - User wants multi-dataset calculations in a single input file ## Prerequisites 1. ABINIT binaries accessible on HPC (`abinit --version`) 2. Pseudopotentials available (JTH PAW or PseudoDojo NC recommended) 3. Structure loaded in viewer — verify with `catgo_view(action="get_state")` ## Workflow Steps ### 1. Verify structure ``` catgo_view(action="get_state") ``` ### 2. Create workflow ``` catgo_workflow_engine(action="create", params={"name": "ABINIT GW band gap"}) ``` ### 3. Add ABINIT task via shell CatGo does not yet have a native ABINIT engine. Use `task_type: "shell"`. ``` catgo_workflow_engine(action="add_task", params={ "workflow_id": "wf_xxx", "task_type": "shell", "name": "abinit_scf", "command": "abinit < abinit.files > abinit.log 2>&1", "input_files": { "abinit.in": "", "abinit.files": "" }, "system_name": "Si_GW" }) ``` When a `@register_engine("abinit")` is added, use `task_type: "geo_opt"` with `software: "abinit"`. ## Input File Template — SCF ``` # SCF ground state ndtset 1 # System natom ntypat typat znucl acell 3*1.0 rprim xred # Plane-wave basis ecut 40.0 # Ha (= 2x Ry) pawecutdg 80.0 # PAW fine grid # K-points ngkpt nshiftk 1 shiftk 0.0 0.0 0.0 # SCF nstep 100 toldfe 1.0d-8 # Ha # Smearing occopt 3 # Fermi-Dirac tsmear 0.002 # Ha (~0.05 eV) # XC ixc 11 # PBE ``` ## The .files File ABINIT uses a `.files` file listing input/output/pseudo paths: ``` abinit.in abinit.out abiniti abinito abinit_tmp pseudo/Si.paw ``` Lines: input, output, root_input, root_output, tmp_dir, then one pseudo per atom type. ## Parameter Guidance | Parameter | Typical value | Notes | |---|---|---| | ecut | 30-50 Ha | In Hartree (1 Ha = 27.2 eV); check pseudo recommendations | | pawecutdg | 2x ecut | PAW augmentation grid; only for PAW pseudos | | toldfe | 1.0d-8 | Energy convergence in Ha | | toldff | 1.0d-5 | Force convergence in Ha/Bohr (for relaxation) | | ngkpt | auto from cell | Monkhorst-Pack grid | | occopt | 3 (FD) or 7 (Gaussian) | Smearing type | | ionmov | 2 (BFGS) | Ion relaxation algorithm | | optcell | 0 (ions) / 2 (full) | Cell optimization level | ## Multi-Dataset Calculations ABINIT supports chaining calculations in one input via `ndtset`: ``` ndtset 3 # Dataset 1: SCF toldfe1 1.0d-8 # Dataset 2: NSCF for DOS iscf2 -2 tolwfr2 1.0d-12 getden2 1 # Dataset 3: DFPT phonons rfphon3 1 nqpt3 1 qpt3 0.0 0.0 0.0 toldfe3 1.0d-10 getden3 1 getwfk3 1 ``` ## Common Pitfalls 1. **ecut in Hartree, not eV** — ABINIT uses Hartree (1 Ha = 27.2 eV). A 40 Ha cutoff is ~1088 eV. 2. **Coordinates default to reduced (xred)** — use `xred` (fractional) or `xcart` (Bohr). Not Angstrom. 3. **Missing .files file** — ABINIT reads file paths from stdin or a .files file; forgetting it causes silent failure 4. **PAW augmentation grid** — if using PAW pseudos, `pawecutdg` must be set (typically 2x ecut) 5. **GW convergence** — GW calculations need many empty bands (`nband`) and careful `ecuteps` convergence 6. **Large tmp files** — ABINIT writes wave functions to `_TMP`; ensure sufficient disk space