Change log

- Space group symmetrization instead of point groups alone. This now allows for calculations to be equally efficient regardless of where the structure is centered. This also substantially reduces the number of supercell calculations required by phonon for many systems. IMPORTANT: this may reduce number of k points for certain systems which will make the state incompatible from previous versions.
- Added command symmetry-threshold to control symmetry detection sensitivity in input file
- Switched to reciprocal-space symmetrization of scalar fields
- Added MPI and noncollinear support to exact exchange
- Adjusted automatic FFT grid selection to be supercell-consistent i.e. minimum grid dimensions of unit cell, when multiplied by supercell count, will satisfy minimum grid dimensions for corresponding supercell at same plane-wave cutoff. IMPORTANT: default FFT boxes will change in some cases relative to 1.2.1 and earlier. This will only alter real-space grid outputs; wavefunctions remain unchanged.
- Added support for electric fields in periodic directions using low wave-vector perturbations
- Fixed phase of odd-l trial orbitals in Wannier (these were previously pure-imaginary instead of real)
- Fixed numerous bugs in phonon code for cases with more than one atom per unit cell, eg. when symmetries of phonon supercell mapped atoms to ones in other unit cells, complex conjugate handling of non-inversion-symmetric cells etc.

- Added Gaussian and Cold smearing options in addition to the original Fermi fillings, and deprecated the old elec-fermi-fillings command in favor of elec-smearing.
- Added outer loop over fixed charge calculations (using secant method to optimize nElectrons) as an alternate fall-back method for fixed-potential calculations.
- Stabilized initialization of fixed-potential calculations using LCAO followed by an automatic initial vacuum calculation
- Switched to density mixing as the default for SCF.
- Improved stability of new Y-less minimizer against large steps by remembering subspace rotations for the duration of one line minimize.
- Fixed a bug in ionic minimize search-direction symmetrization introduced in 1.2.0
- Added a mechanism to gracefully deprecate commands: a placeholder for the old command issues a deprecation warning and replaces itself with the new syntax, so that the output file shows the new syntax and all other command code (dependencies / forbids etc.) only need to deal with the new command.

- 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

- 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)

- 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

- 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

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

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.