2.41 (20/9/23) ---- Add -F for calculating fields Add --div operator Add FFT grid and point interpolation Support vector spins in den_fmt files Also read FORCE_STRESS file if reading Siesta .XV file Support vector spins in Siesta .RHO file. Previously rho misread if nspins=4 INCOMPATIBLE CHANGE: weighted/accumulated radial plots include c axis length Rewrite Abinit DEN reader, and support vector spins therein Rewrite accumulation/integration to be more accurate Support vector spins reading QE .in and XML files, writing QE .in files Add writing of magmon in Vasp INCAR format Rewrite QE charge-density.dat reader, and support vector spins therein Add --vec2force Support vector spins reading and writing cell files Add --cell_abs_abc as synonym for --cell_abc_abs Add mod operator Add --widths, and list bands highest energy first Fix bug reading Fortran-order npy files introduced at 2.40d Add grad operator Improvements to cube reader Add support for writing multiple components to npy and cube formats Add reading vector spin density from check file Add Jmol output for Brillouin zones inline -> static inline in interpolate.c, to keep compilers happy at -O0 Add first and irreducible Brillouin zone finder, and VMD output for same 2.40e (8/2/23) ----- Bug fix: identity was being listed twice in --cif output Suppress some printing of -0.0 (rather than 0.0) in sym ops in cell files Add bare Coulomb potential with -E=0 Rewrite trilinear interpolation Add tricubic interpolation Tidy linespec parser -- more acceptance of 0 for number of points Add molfile reader and writer 2.40d (23/12/22) ----- Various fixes after clang static analysis Change order of flag processing to put cell transforms earlier Cease using "fortran" as variable name -- C99 says optional reserved word Accept fractions in -x= and -P= arguments Removed some 2GB limits due to fseek(file, int, ...) and similar Drastically reduce number of fseeks in check_read.c to improve performance Same for Abinit wavefunction reader Add weighting and accumulating to radial averages Add spherical averages to 1D plots (-P=C:R) Remove underscores from key titles in gnuplot output Fix rare segfault caused by init_sym Retain old symops with -a Remove unused fix parameter from cart2abc() Again fix ident_sym's treatment of screw axes Retain old symops with --primitive_nr and --std Update Makefile.spglib for spglib 2.x Add sym op count to cell file as comment with -v Fix bugs in sym op conversion after -x Correct sym ops after shift with -m Add --nokinv Permit tabs in a Shelx SFAC line 2.40c (19/2/22) ----- Ensure "x,y,z" is first symop in CIF file, and is written precisely thus Fix missing rotation when writing pdbx file when unit cell needs realigning Fix bug in processing of vkloff when reading Elk input 2.40b (27/1/22) ----- Report quadrupole moment with -D= Support writing VASP spinor wavefunctions to GCOEFF.txt Report screw axes correctly Report -2 axes as mirror and glide planes Transpose symmetry matrices in check_read and cell_read/write Better parsing of comments in .cell files Add --sym_list option Basic parsing of // in Abinit .in files Fix bugs in reading of symmetry operations in Abinit .in files Fix bugs in reading of symmetry operations in QE .xml files Write symmetry operations to Abinit .in files Add --abinit8 output type Improve precision when writing fdf files Improve parsing of include files in fdf files Read Siesta EIG and KP files Fix uninitialised data in xyz_read.c 2.40 (26/3/21) ---- Support reading multiple files, and differencing etc. Improve .dx writer to make more VMD compatible Add .dx and .npy readers Accept -i=axbxc as identical to -i=a,b,c Support BS kpoints in .cell files Add --frame=X for extracting frames from timeseries Make -u cause forces in .xsf files to be written in Ha/A, not eV/A Follow QE 6.6's convention that forces in .xml are in Ha/B Ignore forces from QE output <6.6 Support output file of - meaning stdout Add ibrav=-3 and -13 to QE .in input Document -q[abc] option for post hoc energy corrections for charged slabs Fix bug with kspace sym op generation triggered if no real space inversion op Add several missing checks of malloc()'s return value 2.35a (23/12/2020) ----- Adjust .npy writing to work with numpy on Ubuntu 20.04 as well as 18.04 Fix missing _ in SPECIES_POT in .check to .cell conversion 2.35 (7/12/2020) ---- Support reading Castep .elf electron localisation function Support reading Castep .elf_fmt Support two spins in reading den_fmt / pot_fmt / elf_fmt Fix compiling without spglib Minor improvements to progress messages when reading bands Do not scale data when writing den_fmt if -R given Add "-w=k" option for weighting bands by kpoint weight only Fix error in -r .cif generation Fix error when listing sym ops in cell_abc output Add --snap_tr option Fix bug in reading of symmetry operations from Abinit input Add Abinit _EIG reader Add recognition of Abinit _DDB file Improve abinit .in reader Add -m=(x,y,z) for fractional shifts in relative units Peform -m shifts earlier in processing sequence Let -O -W scale occupancies by kpoint weight Add --gap option for printing bandgap Add --efermi option for calculating Fermi energy Minor improvements to bxsf_write() Add numpy writer 2.34d (17/7/20) ----- Increase periodic table from 103 atoms to 118 Read VASP LOCPOT files Try to obtain pseudocharges from VASP POTCAR file Recognise .dat as a Onetep-style .cell file Arithmetic parser now supports ^ (exponentiation) Arithmetic parser supports the constants pi, Ha, Ry and B Make -R= scaling call arithmetic parser, and scale after ES pot calculated 2.34c (18/6/20) ----- Add basic elk.in reader and writer Add basic elk 3D.OUT reader Fix reading of spinor wavefunctions from Castep (broken by Castep 18) Add support for UPF version 1 to qe_xml_read() Reduce warnings from static analysis Recognise .pdbx as a CIF file Add '-r' to reduce atoms in "cif" output to symmetry-inequivalent ones Add '-l' to label sites in "cif" output Misc CIF-related changes Ensure default cell made when reading a PDB without one is big enough Add reader for Castep .geom files Allow .xyz and .xyze to contain multiple frames 2.34b (9/4/20) ----- Fix bug in reading of Castep .bands file from parallel runs Recognise .abi as Abinit .in file Support Abinit binary headers from Abinit 9.0.x Support include and pp_dirpath in .in files for Abinit 9.0.x Add array of struct species to contents structure Thus stop species being renumbered, and upsetting POTCARs and Abinit pseudos Support pseudos in .in files for for Abinit 9.0.x 2.34a ----- Add support for reading Siesta .bands file Add FDF_BP output format Various speedups to MP generation Fix some bugs in WAVECAR output from gamma point input Fix band inversion reporting to start from 1 again (as it did prior to 2.33) Remove all scanf("%ms") as MacOS X does not support it 2.34 (9/3/20) ---- Add .bxsf output for Fermi surface visualisation etc. Read Castep .bands file, improve writing of same Read VASP EIGENVAL file Add one form of extended xyz output Add extended xyz reader Allow writing of XSF files with no atoms (place dummy atom at origin) Add sorted (by |g|) GCOEFF.txt output Read Fermi energy from QE xml file Add WAVECAR output, inc 5.4 to 4.5 conversion 2.33 ---- Refactor wavefunction readers (Abinit, Castep, QE and VASP) Fix bug in psi Fourier interpolation for Abinit Fix bug in band weighting for VASP input Fix bug in FFT grid sizing for VASP input Improve search for PP_HEADER in QE UPF files Change real2rec() to return +ve volumes always Add GCOEFF.txt output, spins not supported Remove ONETEP flag bit in favour of dictionary entry 2.32c (11/2/20) ----- Read ionic velocities from .cell, .check, .in (QE) and .XV files Write ionic velocities to .cell, .in (QE) and .XV files if --vel given Add --calc option for testing arithmetic parser 2.32b ----- Rewrite fdf_read and cell_read include file handling Above include files searched for in input file's directory, then current dir Create dict entry for input filename, and reduce filename passing as argument 2.32a ----- Slight improvements to warnings when calculating ES pot 2.32 (12/12/19) ---- Add ccp4 writer Correct several issues in lhs to rhs converter for abc[6] output formats Attempt to expand nanotube radius to maintain bond lengths Change Gaussian cube output to make compatible with gabedit Introduce --mocube output Minor improvements to QE .in reader Discard forces from .xsf output with -n Support reading of Castep pot_fmt, Abinit VCLMB Rescale Abinit potentials to eV Add -R= option for rescaling grid data Add -Z option for XC pot approximation Change sign of cst_esp scaling, to be consistent with other DFT codes Read and scale from Ry to V Siesta's .VH and .VT Add radially-averaged 1D plots for nanotubes (-P=ctr:rx:npts) 2.31 ---- Add support for reading and writing Siesta's .XV format (velocities ignored) Correctly support -15 high precision flag in .xyz output Rewrite symmetry search through range of tolerances Add sanity check to warn if two atoms are within 0.2A Minor improvements to .cif symmetry expansion Support writing .RHO files with charge and spin (previously charge only) Support reading .RHO files Attempt to read .psf files to obtain pseudocharges to support .RHO Improvements to .fdf reading and writing Add ability to make nanotubes with -y=i,j[:x] 2.30c (6/11/19) ----- Add --primitive_nr Print old cell in terms of new after -P and --primitive_nr Support _atom_site_charge in CIF reading and writing Fix uninitialised value in CIF reading of symmetry translations Support DOS line endings in CIF and Abinit readers Make default output --cell if called as cellsym 2.30b ----- Fix regression preventing reading of bands or eigenvals from .orbitals file Reconstruct unsorted .bands from .orbitals, refactor print_occ() Modify CIF reader to accept symmetry ops before lattice defined Improve PDB reader's parsing of atom names Add initial QE xml to Castep .geom conversion Fix error in scaling forces from QE xml file 2.30 (16/8/19) ---- Change to selection of new grid size in supercells Add Abinit wavefunction reader, including spinors Read spin density from a VASP CHG file successfully Initial work on VASP WAVECAR reader Add calculation of int|s| for spin, intended for antiferromagnetic systems -m does a better job of centering molecules Add QE wavefunction reader, and refactor Castep's psi reader Accept nm as length unit in blocks in .cell files Add -x=ixjxk option for simple tiling Split formats from --help text, and add --formats option 2.29a ----- Add -X[abc]= option for vacuum scaling Preserve kpoint_mp_spacing in .cell files Some very experimental charged system corrections 2.29 (5/7/19) ---- Retain electrons namelist from QE files, scaling conv_thr Retain ions namelist from QE files Retain cell namelist from QE files Retain more from CONTROL namelist of QE file Retain occupations and degauss from SYSTEM namelist of QE file Accept Fortran's use of 'D' for exponent in QE file Fix bug in supercell generation introduced in 2.27a Improve treatment of MP grids in super.c Add -K for symmetrising kpoint list Update Makefile to suppress gcc unused function result warnings 2.28 (7/6/19) ---- Do not update cell if --point, --schoen or --int given When describing sym ops, call a -1 axis an inversion point 2.27a ----- Add -N option to normalise fractional coords to 0<=x<1 Fix bug in --snap when tolerance large Fix bug in supercell generation when tolerance large 2.27 ---- Add tetragonal dipole corrections from JPCM doi: 10.1088/1361-648X/ab20e1 2.26c1 ------ Support " as well as ' delimiting strings in qe .in input 2.26b ----- Fix translation bug in --snap 2.26a (29/3/19) ----- Fix kpoints after calling spglib Fix misc off-by-one memory errors Add a few free()s to stop minor leaks 2.26 (27/3/19) ---- Readers for QE output: xml and non-hdf5 charge-density.dat Read starting_magnetization from QE .in, write to QE .in Add --qef output: QE with fractional atomic coords Read pseudopots from .check file, and add block if writing .cell file Add dict structure, read prefix and pseudo dir from QE files Use init_atoms() to initialise atoms in all readers Add --standardise for SPGlib standardize_cell(no_idealize=1) Add --snap for SPGlib standardize_cell() followed by expansion to a snapped version of original cell Fix bug in ident_sym which might give error on 2 and -2 axes Fix bug in ident_sym which prevented identification of screw axes Change return(0) in main() to exit(0) to keep valgrind happy 2.25 (22/2/19) ---- Refactor dipole code, and remove a global variable Add -Da= syntax for a=a, b or c Thus calculate post-hoc slab correction Introduce -Dm= for cubic boxes only Update defn of Hartree to CODATA 2014 Limit on number of atoms in PDB file written raised from 9,999 to 99,999 Error given if above limit exceeded Improvements to cif reader: recognises cartn_x as well as frac_x Improvements to cif reader: better treatment of DOS line endings 2.20a (11/2/2019) ----- Correct _atom_site type_label to _atom_site label in cif reader If spglib returns a fractional co-ord of 1, reduce to 0 Sort atoms after calling spglib transforms Fix some comments in basis.c Fix bug in data grid transformation when transforming cell size/shape Add units of charge/spin integral to output 2.20 ---- Include pseudocharges in .cube files. -E option for generating electrostatic potentials from charge density. Scale .cst_esp files from Hartrees to volts. Ignore ions +/-0.5 from dipole centre when calculating dipole moments. In a linespec, 0 (zero) a shorthand for (0,0,0). As a linespec, "a" a shorthand for (0,0,0):(1,0,0):ngx+1, and also "b" and "c" 2.16a ----- Fix bug with debug output appearing in file, not stderr Further changes to XSF output to make it more VESTA-friendly 2.16 (18/6/2018) ---- Correct MP grid offsets in QE files, and release 2.16 2.15b (1/6/2018) ----- Add optional range to -I option Add -I option to help text and man page 2.15a ----- -I option for reporting parity of psi on inversion 2.15 ---- Quantum Espresso .in reader -nn introduced for discarding kpoints (and sym ops) 2.14a ----- Add Quantum Espresso writer Abinit writer respects -15 for extra precision .fdf reader ignores .-_ in keywords Add support for < include files to fdf reader 2.14 ---- Initial support for reading .fdf (Siesta) files Remove restriction on ordering of items in .in files. Convert between Abinit's and Castep's different Monkorst-Pack conventions. 2.12 ---- Initial Abinit support: readers for .in and binary, writer for .in Support exponential notation (e and d) in .cell files 2.11c ----- Cube reader and writer support convention of 1x1x1 grid, value 0, for no volumetic data Improvements to Crystal fort.12 and .34 readers 2.11b ----- Initial attempt at a Crystal fort.12 reader Fix bug in ident_sym which could lead to unexpected NaNs Add --version flag as synonym for -V 2.11a ----- Improve cif reading with low accuracy input Initial attempt at a (Crystal) fort.34 reader 2.11 ---- Add option to scale .cube output from A^-3 to Bohr^-3 Add -U option to scale .cube input from Bohr^-3 to A^-3 Add titles to cube files 2.10 (1/2/2018) ---- Finalise --refs output Recognise files ending _CUBE as Gaussian cube Read ionic charges from cube files 2.10p2 ------ Change sign definition in FFT to be the same as Castep. Add dipole calculation. Read dipole_correction from .check file. 2.10p1 ------ Arithmetic expressions accepted in .cell files for: unit cell defiition, atom co-ordinates, MP grid offset, kpoint list kpoints_mp_offset accepted as alias for kpoint_mp_offset in cell file kpoints_mp_grid accepted as alias for kpoint_mp_grid in cell file Read in ionic charges from .check file, report with -v Initial support for subspecies labelling in .cell and .check files 2.05b ----- Added --refs option. Added that Castep 18.1 .check files are correctly read. Source released on www.c2x.org.uk website 2.05a ----- Improvements to .cell reading: species_gamma block preserved, and ":" and "=" accepted in more places symmetry_tol defaults to angstroms, not incorrectly to Bohr as before 2.05 ---- Minor changes to VASP output --chgcar introduced. 2.05p4 ------ Atoms with different Onetep labels differ for SPGLIB, supercell and primitive-finding operations Labels which are identical to atomic symbols purged VASP reading supports VASP names as prefixes as well as suffixes Treatment of VASP POSCAR scalefactors improved 2.05p3 ------ Better Onetep support, including includefile and parsing of species block Onetep supported as separate output format Add very basic den_fmt reader 2.05p2 ------ Read initial spins from check file VASP output supports co-linear spins Add Castep den_fmt writer 2.05p1 ----- Reads structure and charge density from VASP CHGCAR or CHG file Reads structure from VASP POSCAR or CONTCAR file VASP output updated to version 5 of VASP 2.0a1 ----- XSF reader accepts DATAGRID_3D as well as BEGIN_DATAGRID_3D 2.0a ---- Add comments to XSF and gnuplot format Fix ordering of k-points from parallel calculation Tidy some output and add -O option 2.0 --- Initial GPL3 release of version 2