dopeflow

DopeFlow: DFT Calculation Workflow for Atomic Substitution Problem

https://github.com/tack-tau/dopeflow

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (6.5%) to scientific vocabulary
Last synced: 10 months ago · JSON representation ·

Repository

DopeFlow: DFT Calculation Workflow for Atomic Substitution Problem

Basic Info
  • Host: GitHub
  • Owner: Tack-Tau
  • License: mit
  • Language: Shell
  • Default Branch: master
  • Size: 82 KB
Statistics
  • Stars: 2
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created over 1 year ago · Last pushed about 1 year ago
Metadata Files
Readme License Citation

README.md

DopeFlow: DFT Calculation Workflow for Atomic Substitution Problem

This repository contains scripts for managing VASP calculations on a SLURM-based cluster system.

1. job_monitor.sh

A script for submitting and monitoring sequential VASP calculations (Relax → SC → Band → DOS).

Usage

bash nohup bash job_monitor.sh <calc_type> &

where <calc_type> can be: - Relax: Structure relaxation - SC: Self-consistent calculation - Band: Band structure calculation - DOS: Density of states calculation

Directory Structure

bash structure_directory/ ├── Relax/ ├── SC/ ├── DOS/ └── Band/

Required Files

  • INCAR_<calc_type>: INCAR file for each calculation type
  • sbp_<calc_type>.sh: SLURM submission script for each calculation type
  • POTCAR: VASP pseudopotential file
  • ../aflow_sym/uniq_poscar_list: List of structures to process
  • diverge_structs: (optional) List of structures to skip

2. redooptics.sh/restartoptics.sh

Scripts for managing optical calculations (SC → DIAG → GW0 → BSE) with automatic error checking and resubmission.

Usage

For normal execution with error checking: bash nohup ./redo_optics.sh > redo_optics.log 2>&1 &

For forced restart of all calculations: bash nohup ./restart_optics.sh > restart_optics.log 2>&1 &

Required Files

  • Direct_dir: File containing list of directories to process
  • INCAR files:
    • INCAR_SC
    • INCAR_DIAG
    • INCAR_GW0
    • INCAR_BSE
  • SLURM submission scripts:
    • sbp_SC.sh
    • sbp_DIAG.sh
    • sbp_GW0.sh
    • sbp_BSE.sh
  • POTCAR_GW: VASP GW pseudopotential file

<calc_type> can be:

  • SC: DFT groundstate calculation
  • DIAG: DFT "virtual" orbitals (empty states)
  • GW0: RPA quasiparticles with single-shot GW
  • BSE: BSE calculation

Directory Structure

bash structure_directory/ ├── Optics/ │ ├── SC/ │ ├── DIAG/ │ ├── GW0/ │ └── BSE/

Output Logs

For redooptics.sh: - `opticaljobs.log: Detailed job submission information -job<calctype>.log`: Job counting logs for each calculation type

For restartoptics.sh: - `restartopticaljobs.log: Detailed job submission information for restarts -job_restart.log`: Job counting logs for restarted calculations

Features

redo_optics.sh: - Automatic error detection and job resubmission - Sequential dependency handling - Detailed logging of job submissions - Limits concurrent jobs up to 60 computational nodes

restart_optics.sh: - Forces restart of all calculations regardless of previous status - Maintains same workflow and dependencies - Uses separate log files to avoid confusion with original runs - Limits concurrent jobs up to 60 computational nodes

Features

job_monitor.sh

  • Manages sequential job submissions
  • Limits concurrent jobs to 60
  • Handles failed calculations
  • Supports structure skipping via diverge_structs

redooptics.sh/restartoptics.sh

  • Automatic directory creation and management
  • Sequential dependency handling (SC → DIAG → GW0 → BSE)
  • Automatic error detection and job resubmission
  • Detailed logging of job submissions
  • Limits concurrent jobs to 60

Common Issues

  1. Missing required files - ensure all INCAR and submission scripts are present
  2. Directory permissions - ensure write access in all directories
  3. SLURM queue limits - script will wait if queue is full
  4. Failed calculations - check individual VASP output files for errors
  5. Missing vasprun.xml - script will detect and resubmit affected calculations
  6. Failed phonon calculations - use geterrphon.sh to generate resubmission script

Notes

  • Both scripts assume SLURM job scheduler
  • Maximum concurrent jobs is set to 60
  • Scripts will create necessary directories if they don't exist
  • Error handling includes automatic resubmission of failed jobs

3. submit_phonon.sh

A script for managing phonon calculations with automatic supercell generation and job monitoring.

Usage

bash chmod +x submit_phonon.sh nohup ./submit_phonon.sh > nohup.out 2>&1 &

Required Files

  • phonon_list: File containing list of directories to process
  • INCAR_PHON: INCAR file for phonon calculations
  • sbp_PHON.sh: SLURM submission script for phonon calculations
  • Supporting scripts:
    • convert_kpath.sh
    • generate_supercell.sh
    • extract_band_conf.sh
    • preprocess_high_symmetry_points.sh

Directory Structure

bash structure_directory/ ├── Relax/ │ └── CONTCAR └── PHON/ ├── POSCAR-* ├── INCAR ├── POTCAR └── sbp.sh

Output Logs

  • job_PHON.log: Detailed job submission tracking
  • Records which phonon calculations have been submitted for each structure

Features

  • Automatic supercell generation using VASPKIT
  • Batch submission (10 jobs at a time)
  • Limits concurrent jobs to 50
  • Resumes from last submitted job if interrupted
  • Maintains submission history in log file

Workflow

  1. Reads structures from phonon_list
  2. For each structure:
    • Creates PHON directory
    • Copies CONTCAR from Relax directory
    • Generates primitive cell using VASPKIT
    • Generates supercells
    • Submits jobs in batches
  3. Monitors job queue and maintains submission limits
  4. Tracks progress in log file

Tips for Phonon Calculations

  1. Check supercell size in generate_supercell.sh
  2. Monitor convergence in individual phonon calculations
  3. Use job_PHON.log to track submission progress
  4. Check VASPKIT output for primitive cell generation

4. Post-Processing Scripts

post-proc_phonon.sh

A script for post-processing phonon calculations with automatic error detection and data generation.

Usage

bash sbatch phonon-pp-job.sh

Features

  • Automatic error detection in SLURM output files
  • Generates FORCE_SETS using phonopy
  • Creates phonon band plots and raw data files
  • Handles LaTeX formatting for band labels
  • Detailed logging with configurable verbosity

Required Files

  • phonon_list: List of structures to process
  • Supporting scripts:
    • convert_kpath.sh
    • extract_band_conf.sh
    • preprocess_high_symmetry_points.sh

band_gap-pp.sh

A script for analyzing and categorizing band structures based on their electronic properties.

Usage

bash ./band_gap-pp.sh

Features

  • Automatically categorizes structures as Direct, Indirect, or Metallic
  • Uses VASPKIT for band structure analysis
  • Error detection in SLURM output files
  • Generates categorized lists of structures

Output Files

  • Direct_dir: List of structures with direct band gaps
  • Indirect_dir: List of structures with indirect band gaps
  • Metallic_dir: List of structures with metallic/semimetallic band gaps

geterrphon.sh

A utility script for handling failed phonon calculations.

Usage

bash ./get_err_phon.sh

Features

  • Analyzes phonon post-processing logs for errors
  • Generates resubmission script for failed calculations
  • Handles missing or corrupted vasprun.xml files
  • Automatic cleanup and job resubmission

Script Dependencies

Python Dependencies

Depending on which doping script you use, you'll need different Python packages:

For general substitution WITHOUT symmetry bias: \ Example: aflow_sym/rnd_SiGe_doping.py or aflow_sym/NaSiGe_doping.py - ASE

For using Fingerprint energy as symmetry bias: \ Example: aflow_sym/Doping.py - ASE - libfp

For explicitly using group-subgroup splitting: \ Example: aflow_sym/subgroup_doping.py - ASE - Pymatgen - PyXtal

Environment Setup

Ensure these environment variables are set: - $AFLOW_HOME: Path to AFLOW executable - $VASPKIT_HOME: Path to VASPKIT executable - $PHONOPY_HOME: Path to Phonopy executable

Common Workflow

  1. Structure Relaxation (job_monitor.sh Relax)
  2. Electronic Structure (job_monitor.sh SC/Band/DOS)
  3. Optical Properties (redo_optics.sh)
  4. Phonon Calculations (submit_phonon.sh)

Owner

  • Name: Shuo Tao
  • Login: Tack-Tau
  • Kind: user
  • Location: Newark, NJ
  • Company: Department of Physics, Rutgers University-Newark

Citation (CITATION.cff)

cff-version: 1.2.0
title: "DopeFlow: DFT Calculation Workflow for Atomic Substitution Problem"
message: "If you use this software, please cite it using these metadata."
type: software
authors:
  - given-names: Shuo
    family-names: Tao
    orcid: https://orcid.org/0000-0003-2539-9305
    affiliation: "Physics Department, Rutgers University-Newark"
date-released: "2024"
version: "0.0.1"
repository-code: "https://github.com/Tack-Tau/DopeFlow"
license: MIT
abstract: >-
  A collection of scripts for managing VASP calculations on SLURM-based cluster systems. 
  Includes tools for sequential job submission, optical calculations, and phonon calculations 
  with job monitoring and error checking capabilities.
keywords:
  - vasp
  - computational-materials
  - high-throughput-computing
  - slurm
  - job-scheduling
  - phonon-calculations
  - optical-properties
references:
  - type: software
    title: "VASP"
    url: "https://www.vasp.at/"
  - type: software
    title: "AFLOW"
    url: "https://aflowlib.org/"
  - type: software
    title: "VASPKIT"
    url: "https://vaspkit.com/"
  - type: software
    title: "Phonopy"
    url: "https://phonopy.github.io/phonopy/" 

GitHub Events

Total
  • Watch event: 1
  • Push event: 12
  • Public event: 1
Last Year
  • Watch event: 1
  • Push event: 12
  • Public event: 1