JDFTx  1.2.0
Change log

1.2.0 - 2016-07-10 (Site archive)

  • Substantial memory optimizations, reducing typical usage by 30-50 % overall:
    • Total energy minimize: switched from analytically-continued (Y and C) to orthonormal-only (C alone) algorithm, which eliminates one persistent copy of the wavefunctions
    • SCF: reduced memory usage of the BandDavidson algorithm by eliminating cached copies of the overlap operator applied to the wavefunctions, and also of the conjugate-gradients BandMinimizer by switching away from the analytically -continued approach.
    • Reduced peak memory usage further by improving move semantics and delaying / combining key ColumnBundle and matrix operations using template meta-programming.
    • Added debug code options in ManagedMemory to stack-trace peak memory usage points
  • Rewrote auxiliary Hamiltonian fillings algorithm with automatic preconditioner tuning, resulting in substantially better convergence, including at fixed potential. Auxiliary Hamiltonian is kept diagonal in new algorithm; the state for the new variable-fillings optimizer therefore uses eigenvals instead of Haux (deleted).
  • Improved stability of ionic and lattice minimizers against occasional unphysically large steps.
  • Updated WannierMinimizer to continuously update rotations in-place, analogous to the changes in ElecMinimizer and BandMinimizer, and switched to L-BFGS as the default optimizer (faster than CG after these changes).
  • Removed: defunct fillings algorithms such as periodic mixing and mu controller, inverse Kohn-Sham minimizer and fix-occupied functionality
  • Individual-frame output and Wannier orbital support in the createXSF script
  • Expanded test set that covers salient features (loosely based on the new tutorial sequence)
  • Complete set of tutorials for molecules, solids, surfaces and Wannier function calculations
  • Detailed compilation instructions for Debian and Redhat-based GNU/Linux, MacOS X and Cygwin/Windows

1.1.2 - 2016-06-10 (Site archive)

  • Added support for compiling and running on Windows using Cygwin
  • Added option to link JDFTx statically
  • New detailed tutorial set for molecular systems
  • Energy correction for charged defects at surfaces in vacuum and solution
  • Consistent behavior for binary file I/O on big-endian architectures such as PowerPC64 (eg. BlueGene)

1.1.1 - 2016-05-04 (Site archive)

  • Moved auxiliary executables to aux making their compilation optional, and renamed testsuite to test
  • Fixed compilation for new compilers: up to g++-5.3, Clang 3.8 and CUDA 7.5

1.1.0 - 2016-04-14 (Site archive)

  • Improved convergence and fixed initialization errors in the SCF version of NonlinearPCM, and included softening of ion packing limit to eliminate NANs
  • Timing information in all iterations (electrons, fluids, geometry etc.), and corresponding support in the plotConvergence script
  • Added command to control whether to use Gummel loop or inner minimization for any fluid type. Correspondingly, energy evaluation in LinearPCM and SaLSA is now strictly variational (rather than generically first-order correct) to support Gummel iteration.
  • Added command to control electrostatic potential output (raw or atom-potential corrected)
  • Automatic initial vacuum electronic solve in fixed-mu fluid calculations remain neutral for consistency
  • Renamed ion dynamics classes (not named specifically Verlet any more), and added confining potential options
  • Added HyperPlane constraint to constrain combined motion of several ions and fixed transformation of linear constraint from lattice coordinates

1.0.0 - 2016-02-05 (Site archive)

First stable release of JDFTx, that marks the transition from SVN to Git code versioning. A detailed change log was unfortunately not maintained prior to this release, but here's a partial list of major developments since the first numbered release:

  • MPI parallelization over k-points for electronic DFT, orientations for classical DFT and angular momenta for SaLSA
  • Vibrations, phonons and improved Wannier support for ab initio tight binding models (including electron-light and electron-phonon coupling)
  • Non-collinear magnetism and spin-orbit coupling, including support for DFT+U as well as phonons
  • Support for electronic-SCF and the Davidson eigenvalue solver in addition to the default variational minimize using the Conjugate Gradients algorithm
  • Iterative LCAO initial guess for wavefunctions (essentially a fully self-consistent DFT calculation in the basis of atomic orbitals)
  • Substantial optimization of density augmentation code to speed up ultrafast pseudopotentials, and projector caching to optimize nonlocal potential evaluations
  • Separate wavefunction and charge density cutoff, with an optionally tighter plane-wave grid for wavefunction transforms
  • Systematized fluid specification: solvent and ionic fluid components, pcm-variant to control different parameterizations within classes of solvation models.
  • Enhanced Coulomb truncation using double-sized boxes, including for fluids
  • Refactored LinearPCM, NonlinearPCM and SaLSA code to use a common PCM base class
  • Added the CANDLE, SCCS and SGA13 solvation models
  • Polarizability support in Classical DFT fluids
  • Charged-defect energy and slab dielectric function calculations; atom-potential correction for electrostatic potentials
  • Preliminary support for ab initio molecular dynamics
  • Added LibXC 2.0 support for additional exchange-correlation functionals
  • Convenient wildcard pseudopotential specification, support for QE's UPF format and built-in GBRV and SG15 pseudopotential sets
  • Scripts to convert XYZ files to JDFTx geometries, and to visualize JDFTx geometries and outputs via XSF support (XCrysDen, VESTA etc.)
  • Reorganized tutorials, website and documentation, merging them all within Doxygen

0.99.alpha - 2013-03-05

First numbered release of JDFTx: a fully-functional plane-wave electronic DFT code with particular emphasis on solvation models, classical DFT and joint DFT.

Includes full support for GPU computing using CUDA, and efficient parallelization on multiprocessor machines using threads, but no support yet for cluster computing using MPI.