Quest is a general purpose electronic structure code based on density functional theory. It uses pseudpotentials and a high quality local orbital basis of contracted Gaussian functions in a linear combination of atomic orbitals (LCAO) approach to solve the Kohn-Sham equations fully self-consistently.
Feature summary (Version 2.66)
- Basic functionality
- General purpose electronic structure code:
finite molecular, 1D chain, 2D slab, or 3D bulk - Density functional, pseudopotential, contracted Gaussian LCAO basis
- Self-consistent total energies
- Analytic forces and stresses, with full Pulay terms
- Cartesian or lattice/fractional/direct units for atomic positions
- Cartesian representation of lattice/supercell vectors
- User-specified general symmetry
- Used to constrain geometry and cell updates, reduce BZ sample
- No automatic detection of symmetry
- No completion of geometry from symmetry-unique set. I.e., all atoms/cell parameters must be explicitly listed
- Library of symmetry definitions for many crystal symmetries
- Molecular dynamics
- Leapfrog Verlet integrators
- Equilibration and production MD phase
- Multiple MD methods: NVE; NVT: Berendsen, Hoover, temperature scaling
- Automated geometry and cell optimization
- Multiple optimization methods:
Modified Broyden, accelerated steepest descent, damped dynamics, steepest descent, … - Full symmetry constraints enabled
- Constrained and transformed geometry relaxations
“freeze”/relax selected atoms
bond, axis-based, slab relaxation, slic constraints
cell shape constraints - Uses results from previous step to accelerate SCF convergence
- Multiple optimization methods:
- Nudged elastic band (NEB) transition state finder
- MPI-parallel over images/beads/replicas, with parallel images
- Full suite of minimization methods
- Full symmetry constraints enabled
- Gamma-point, or complex k-point sampling
- User-specified k-vectors and weights, -or-
- Automatic grid generation and folding into Irreducible Zone
- Band structure (2.64)
- Metallic or “closed shell” defect sampling methods
- Finite temperature (metallic) occupation method (Fermi-function)
- Closed shell (DDO-Discrete Defect Occupation), both 0K and finite temperature
- Limited post-processing tools
- Geometry history converter to MOLDEN or JMOL visualization
- Mulliken populations
- Density of states, projected density of states
- Restartable – automatic checkpoint/status/restart capability
- General purpose electronic structure code:
- Density Functional Approximation
- LDA: CAPZ – Ceperley/Alder as parameterized by Perdew/Zunger
- GGA: PBE, PW91, AM05, BLYP
- All available either with spin polarization, or without
- Fixed net spin, or automated optimization of spin polarization
- van der Waals via C6-corrections (Grimme-D2, and Kim/Goddard-ULG)
- No exact exchange (HSE in progress)
- No anti-ferromagnetism
- No time-dependent DFT (planned), GW, meta-GGA etc.
- Supercell Approximation
- Proper finite vs. periodic basis
- Basis explicitly finite in non-periodic directions
- Net charge — choice of boundary conditions
- Jellium neutralization of charged supercells – or –
- More rigorous Local Moment CounterCharge (LMCC) treatment
- Finite Defect Supercall Approximation, rigorous localized charge defects in bulk
- LMCC method (mixed boundary conditions Poisson solver) for local charges
- Chemical potential leveling, common electron reservoir for charge
- Discrete Defect Occupation (DDO) for defect occupations
- Jost model bulk polarization for charge bulk defects
- Automatic LMCC treatment for molecular charge/dipole
- Automatic correction of slab dipole potential via LMCC
- External applied electric field (non-periodic “sawtooth”)
- Double-layer (charged slab) electrostatic boundary conditions (2.63)
- No solvation fields (planned)
- No Berry Phase treatment
- Proper finite vs. periodic basis
- Atomic potentials and basis sets
- Deployed in libraries, and invoked in input files
- Extensive LDA atom library (70+ elements + terminators)
- Extensive GGA/PBE library (70+ elements + terminators)
- GGA/PW91: Only Pt, Al (no plans for more)
- AM05 : 23 atoms (as of 17-Jan-2014) and growing
- BLYP : H, and O,N,C, and Al,Si,K (Jun07) (no current plans for more)
- Norm-conserving pseudopotentials (optimized)
- Hamann/GNCPP for most atoms
- “Improved” Troullier-Martins for very “hard” atoms
- “Semi-local”, i.e., non-separable form of potential used
- Highest angular projector used as local potential
- Non-linear core corrections (Louie,Froyen&Cohen) where needed
- No spin-polarized pseudopotentials
- No spin-orbit coupling (soon?)
- No projector operators, e.g., for hyperfine calculations
- Optimized high-quality contracted Gaussian basis sets
- Atom-centered and “floating” orbitals
- Double-zeta plus polarization (DZP) quality
- two radial degrees of freedom for strongly occupied shells
- single degree of freedom for polarization functions
- Developed and refined pseudo-variationally
- Pseudopotential/functional-specific basis sets
- Refinement in quantum calculations (e.g. C in diamond)
- Transferability checked (e.g. Ba in Ba metal and in BaO)
- No f-orbitals
- Deployed in libraries, and invoked in input files
- User-friendly input files
- Self-documenting: user-friendly,-readable,-modifiable
- Text-driven, with mostly free-format data input
- Modular by function (setup,relaxation,cell-opt, etc.)
- Extensive web-based documentation, with Tutorials
- Intelligent defaults – not necessary to define all inputs
- GUI completed for basic functionality.
- Efficient, portable, compact implementation
- Sequential (serial) workstation version
- MPI task-parallel version (multi-processor – faster, but not bigger)
Note: data-parallel development in progress, for bigger and faster - MPI parallel-parallel-NEB version (multi-processor per image/bead/replica)
- k-parallel memory distribution, and fully k-parallel-parallel code (2.64)
- Simple makefile, typically few minutes to build executable
(usually, just type: “make platform“) - Vanilla f77 implementation (g77-friendly)
- Highly-structured, disciplined style
- Very limited (safe and portable) extensions only
- Static memory (with internal allocation via emulated pointers)
- Passed arguments, no global data (with some emulated “objects”)
- Uses BLAS/LAPACK for performance (MPI and SCALAPACK+BLACS for parallel eigensolves), no other external dependencies
- Portable: Linux, Mac, Compaq alphas, SGI, IBM, PC’s (just because we could), …
- Performance
- Compact memory usage, which enables >500 atoms on 2GB, >300 atoms on 1GB, ~160 atoms on 256MB workstation
- Linear scaling Hamiltonian (beyond second nearest neighbor)
- Turnover from O(N) Hamiltonian- to O(N^3) eigensolver-dominated computation at ~200 bulk atoms
- Very fast for systems 50-300 atoms, even with “hard” atoms.
Future plans
The Quest code is under active development at Sandia National Laboratories, and amongst our collaborators. The intention is to:
- further improve computational performance (parallel and serial)
- Local exchange (e.g. HSE), in progress
- add new functionality (e.g., time-dependent DFT, anti-ferromagnetism, projectors, f-orbitals) to get better accuracy with improved DFT approximations and to be able to explore new physics
- add and organize post-processing to better analyze the results
- enhance usability through building graphical user interfaces
- integrate with other (semi-)empirical simulation methods (molecular dynamics, force fields, solvation) in a “multiscale” approach
and better address materials problems of interest to Sandia in particular, and the broader computational materials community in general. See the news page for more details on recent progress and future developments. A major focus of our efforts in the near future is to implement and tune parallelism in the code. The current parallel code achieves useful scaling for modest numbers (4-16) of processors, depending on problem size, and scales well to 64-processors on 1000-atom problems.
SeqQuest is NOT available under GPL, but is only available in a limited fashion via no-fee licenses from Sandia National Labs.