* previously the default `gf_struct_solver` in a initialized blockstructure had keys `up` / `down`, inconsistent with the default behavior after running `analyse_block_structure`: `up_0` / `down_0`. Now the default solver structure always has the `_0`
in the key.
* old behavior resulted in error when analyse_block_structure was called
twice
* to correctly use `analyse_block_structure` now use `extract_G_loc(transform_to_solver_blocks=False)`
* changed `density_matrix` function to use directly `extract_G_loc()` if `using_gf` is selected as option.
* print deprecation warning in `density_matrix`, since this can be achieved via `extract_G_loc` and `[G.density() for G in Gloc]`
* new function `density_matrix_using_point_integration()` for old point integration method option
* enforce in `analys_block_structure` that input dm or G is list with length of `n_corr_shells`
* correct doc string for how include_shells are given
### build
* bump actions/cache restore/save to version 4
* fix intel f2py build of elk converter (#249)
* fix MacOS X build: add ninja as req
* py312 add setuptools and meson as explicit dep for f2py
* add packaging directory to cmake and set version automatically
*`sumk_dft_tools.py` rewritten to have single routines to calculate DOS (`dos_wannier_basis` renamed to `density_of_states`), spaghettis and (Elk specific for now) spectral contours
* analysis.rst and conv_elk.rst updated to improve routine descriptions and includes example figures
* remove any transport from `sumk_dft_tools.py` and move to `sumk_dft_transport`
* outsource `calc_DC_from_density` into util.py and cleanup
* Added new way to compute double counting. This is moved to a separate function and the old method is kept to modify in-place the double counting and keep compatibility. A legacy interface was kept for the old method (using integers to denote DC type). The new convention follow the notation introduced here (http://dx.doi.org/10.1038/s41598-018-27731-4)
* Added tests for DC calculation to compare with old implementation
* Added 2 new methods to find chemical potential, refactored DC calculation with stateless function while keeping legacy code
* In magnetic calculations, the dichotomy adjustment is struggling to find the mu (maxes out iterations). Added new methods to find the dft mu: newton (fastest but can fail) and brent (more stable)
* fix: fix f2py command for numpy ver >1.22
* fix: np.int / np.float / np. complex are deprecated (np v1.20) / removed (np v1.24)
* Fixed DC formulas with SOC (#227)
* Fixes issue with projected A(k,w) (#225)
* fix obsolote iw_or_w param in calc_mu
* improve performance of extract Gloc by factor 5! huge cleanup
* edit SumKDFT class to take gf mesh at initialization and force Sigma to have that mesh
* update mpi.all_reduce calls 52bccac
* issue #216 correctly use beta when calling density on MeshReFreq
### Elk
* Elk Transport code and subsequent updates (#229)
* elk-interface bug fixes (#228)
* updated Elk tests and rewritten test scripts (.h5 files remain unchanged)
* New converter routines to read in Elk data for sumk_dft_tools.spectral_contours() (Elk k-mesh generator and checker needs to be optimized as it's currently slow). commented out Elk "bandcharacter" conversion from Elk converter and Elk DFT+DMFT PDOS code which used it (this method needs to be checked)
### Vasp
* change normion default to False
* change Vasp NiO tutorial scripts to reflect changes to sumk
* fix deprecated safeconfigparser
* fixes a bug in the Vasp charge self-consistent update step
* adjust NiO reference h5-file
* add test of NiO with two correlated shells
* fix tests of LuNiO3 and SrVO3 after changes
* fix mapping from shell/ions to corr-shells in converter
### w90 + QE
* feat: optical prop with Wannier90 and WannierBerri, see documentation for details
* fix bug for Gamma only mode
* w90 conv more generous matching to find fermi
* Updated W90 converter: bug fixes for SOC, code restructured, more tests for `add_lambda` and `bloch_basis`
* BUGFIX: changed character in QE output for reading occupations with
* Split wannier90 tests up
* Fix for wannier converter: reordering of orbital/spin order only necessary for vasp 5
### clean
* remove Gf indices and remove calc_dc_for_density (unused)
## Version 3.1.1
DFTTools Version 3.1.1 is a patch release that contains a few bug fixes.
In particular, we resolve incompatibility with recent numpy versions.
We thank all contributors: Alexander Hampel, Harry LaBollita
Find below an itemized list of changes in this release.
### General
* fix: np.int / np.float / np. complex are depracted (np v1.20) / removed (np v1.24)
* includes a major update for the Wannier90 converter (see below for details)
* updates sumk_dft to allow for charge self-consistent DFT+DMFT calculations with Quantum Espresso (dm_type = 'qe')
* adds a indmftpr helper script to prepare the case.indmftpr file for the dmftproj program
* uses the latest [app4triqs/3.1.x](https://github.com/TRIQS/app4triqs) skeleton
### Wannier90 Converter
* allow for charge self-consistent DFT+DMFT calculations
* spin-orbit coupling implemented
* option to add a local spin-orbit term to t2g local Hamiltonian (for now just for a single impurity. Fixed in next version)
* additional choices and added checks for different bases (rot_mat): hloc_diag, wannier (already implemented previously), none
* code restructured, more tests
* MPI speedup of the Fourier transform
* added new test in w90_convert.py for rot_mat_type='hloc_diag'
* update documentation of W90 Converter
* bugfix: This fix makes the function find_rot_mat() safer to use in case there are errors in finding the correct mapping. The converter will now abort if the agreement in mapping is below a user-definable threshold.
* In line with TRIQS 3.1.x, the form of the Green's function's structure (`gf_struct`) has been modified (see [triqs changelog](https://triqs.github.io/triqs/latest/ChangeLog.html#change-in-gf-struct-objects) for more information)
* bugfix in Elk converter when creating the symmetry matrices of low symmetry systems with multiple equivalent atoms
* vectorize various loops in dfttools
* fix various from_L_G_R calls that require now data layed out in C-order
* use nda over TRIQS_RUNTIME_ERROR in dos_tetra3d
* changed fermi weights from np array complex to float in accordance with h5 structure
* expose parameter max_loops in sum_k.calc_mu dichotomy
Thanks to all commit-contributors (in alphabetical order): Sophie Beck, Alexander Hampel, Alyn James, Jonathan Karp, Harry LaBollita, Max Merkel, H. L. Nourse, Hermann Schnait, Nils Wentzell, @70akaline
* is now aligned with the general [app4triqs](https://github.com/TRIQS/app4triqs) application skeleton
* brings a major rework of the VASP interface, including thorough documentation, tutorials, a new Hamiltonian mode, the option to select bands instead of an energy window, and many small bugfixes.
* brings a major update of the block structure functionalities especially for SOC calculations, with detailed documentation and tutorials. Allows more control over the block structure coming from DFT, cutting out certain orbitals or throwing away off-diagonal elements when preparing input for the solver.
To be aligned with other applications for TRIQS, various files and folders had to be moved to new locations. The c++, fortran and python parts all are now in separate folders. The converter files have been more logically split into their own folders and name spaces. For example the Vasp converter is now located under `python/triqs_dft_tools/converters/vasp.py`. Especially the test folder structure was adapted to fit to the app4triqs skeleton, which separate folders for C++ and python tests.
* fixed a slicing bug for the calculation of the target density in the VASP converter, which selected 1 band less in the correlated window than required.
* revamping the VASP interface documentation. Rewrote the interface with VASP guide. Removed the unused in doc/vasp. Start for SVO VASP tutorial as ipynb