From ac70d962facca458c70f7bfe7c61eb0e57f070c0 Mon Sep 17 00:00:00 2001 From: Alyn James Date: Sat, 15 Apr 2023 18:35:01 +0100 Subject: [PATCH] removed copies --- .../triqs_dft_tools/sumk_dft_tools (copy).py | 1067 ----------------- .../elk_spectralcontours_convert.ref_orig.h5 | Bin 608945 -> 0 bytes 2 files changed, 1067 deletions(-) delete mode 100644 python/triqs_dft_tools/sumk_dft_tools (copy).py delete mode 100644 test/python/elk/elk_spectralcontours_convert/elk_spectralcontours_convert.ref_orig.h5 diff --git a/python/triqs_dft_tools/sumk_dft_tools (copy).py b/python/triqs_dft_tools/sumk_dft_tools (copy).py deleted file mode 100644 index cfbb60de..00000000 --- a/python/triqs_dft_tools/sumk_dft_tools (copy).py +++ /dev/null @@ -1,1067 +0,0 @@ -########################################################################## -# -# TRIQS: a Toolbox for Research in Interacting Quantum Systems -# -# Copyright (C) 2011 by M. Aichhorn, L. Pourovskii, V. Vildosola -# -# TRIQS is free software: you can redistribute it and/or modify it under the -# terms of the GNU General Public License as published by the Free Software -# Foundation, either version 3 of the License, or (at your option) any later -# version. -# -# TRIQS is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more -# details. -# -# You should have received a copy of the GNU General Public License along with -# TRIQS. If not, see . -# -########################################################################## -""" -Extension to the SumkDFT class with some analyiss tools -""" - -import sys -from types import * -import numpy -from triqs.gf import * -import triqs.utility.mpi as mpi -from .symmetry import * -from .sumk_dft import SumkDFT -from scipy.integrate import * -from scipy.interpolate import * - -if not hasattr(numpy, 'full'): - # polyfill full for older numpy: - numpy.full = lambda a, f: numpy.zeros(a) + f - -class SumkDFTTools(SumkDFT): - """ - Extends the SumkDFT class with some tools for analysing the data. - """ - - def __init__(self, hdf_file, h_field=0.0, mesh=None, beta=40, n_iw=1025, use_dft_blocks=False, dft_data='dft_input', symmcorr_data='dft_symmcorr_input', - parproj_data='dft_parproj_input', symmpar_data='dft_symmpar_input', bands_data='dft_bands_input', - transp_data='dft_transp_input', misc_data='dft_misc_input'): - """ - Initialisation of the class. Parameters are exactly as for SumKDFT. - """ - - SumkDFT.__init__(self, hdf_file=hdf_file, h_field=h_field, mesh=mesh, beta=beta, n_iw=n_iw, - use_dft_blocks=use_dft_blocks, dft_data=dft_data, symmcorr_data=symmcorr_data, - parproj_data=parproj_data, symmpar_data=symmpar_data, bands_data=bands_data, - transp_data=transp_data, misc_data=misc_data, cont_data=cont_data) - - # Uses .data of only GfReFreq objects. - def dos_wannier_basis(self, mu=None, broadening=None, mesh=None, with_Sigma=True, with_dc=True, save_to_file=True): - """ - Calculates the density of states in the basis of the Wannier functions. - - Parameters - ---------- - mu : double, optional - Chemical potential, overrides the one stored in the hdf5 archive. - broadening : double, optional - Lorentzian broadening of the spectra. If not given, standard value of lattice_gf is used. - mesh : real frequency MeshType, optional - Omega mesh for the real-frequency Green's function. Given as parameter to lattice_gf. - with_Sigma : boolean, optional - If True, the self energy is used for the calculation. If false, the DOS is calculated without self energy. - with_dc : boolean, optional - If True the double counting correction is used. - save_to_file : boolean, optional - If True, text files with the calculated data will be created. - - Returns - ------- - DOS : Dict of numpy arrays - Contains the full density of states. - DOSproj : Dict of numpy arrays - DOS projected to atoms. - DOSproj_orb : Dict of numpy arrays - DOS projected to atoms and resolved into orbital contributions. - """ - if mesh is None or with_Sigma: - assert isinstance(self.mesh, MeshReFreq), "mesh must be given if self.mesh is a MeshImFreq" - om_mesh = [x.real for x in self.mesh] - om_min = om_mesh[0] - om_max = om_mesh[-1] - n_om = len(om_mesh) - mesh = (om_min, om_max, n_om) - else: - om_min, om_max, n_om = mesh - om_mesh = numpy.linspace(om_min, om_max, n_om) - - G_loc = [] - for icrsh in range(self.n_corr_shells): - spn = self.spin_block_names[self.corr_shells[icrsh]['SO']] - glist = [GfReFreq(target_shape=(block_dim, block_dim), window=(om_min, om_max), n_points=n_om) - for block, block_dim in self.gf_struct_sumk[icrsh]] - G_loc.append( - BlockGf(name_list=spn, block_list=glist, make_copies=False)) - for icrsh in range(self.n_corr_shells): - G_loc[icrsh].zero() - - DOS = {sp: numpy.zeros([n_om], float) - for sp in self.spin_block_names[self.SO]} - DOSproj = [{} for ish in range(self.n_inequiv_shells)] - DOSproj_orb = [{} for ish in range(self.n_inequiv_shells)] - for ish in range(self.n_inequiv_shells): - for sp in self.spin_block_names[self.corr_shells[self.inequiv_to_corr[ish]]['SO']]: - dim = self.corr_shells[self.inequiv_to_corr[ish]]['dim'] - DOSproj[ish][sp] = numpy.zeros([n_om], float) - DOSproj_orb[ish][sp] = numpy.zeros( - [n_om, dim, dim], complex) - - ikarray = numpy.array(list(range(self.n_k))) - for ik in mpi.slice_array(ikarray): - - G_latt_w = self.lattice_gf( - ik=ik, mu=mu, broadening=broadening, mesh=mesh, with_Sigma=with_Sigma, with_dc=with_dc) - G_latt_w *= self.bz_weights[ik] - - # Non-projected DOS - for iom in range(n_om): - for bname, gf in G_latt_w: - DOS[bname][iom] -= gf.data[iom, :, :].imag.trace() / \ - numpy.pi - - # Projected DOS: - for icrsh in range(self.n_corr_shells): - tmp = G_loc[icrsh].copy() - for bname, gf in tmp: - tmp[bname] << self.downfold(ik, icrsh, bname, G_latt_w[ - bname], gf) # downfolding G - G_loc[icrsh] += tmp - - # Collect data from mpi: - for bname in DOS: - DOS[bname] = mpi.all_reduce( - mpi.world, DOS[bname], lambda x, y: x + y) - for icrsh in range(self.n_corr_shells): - G_loc[icrsh] << mpi.all_reduce( - mpi.world, G_loc[icrsh], lambda x, y: x + y) - mpi.barrier() - - # Symmetrize and rotate to local coord. system if needed: - if self.symm_op != 0: - G_loc = self.symmcorr.symmetrize(G_loc) - if self.use_rotations: - for icrsh in range(self.n_corr_shells): - for bname, gf in G_loc[icrsh]: - G_loc[icrsh][bname] << self.rotloc( - icrsh, gf, direction='toLocal') - - # G_loc can now also be used to look at orbitally-resolved quantities - for ish in range(self.n_inequiv_shells): - for bname, gf in G_loc[self.inequiv_to_corr[ish]]: # loop over spins - DOSproj[ish][bname] = -gf.data.imag.trace(axis1=1, axis2=2) / numpy.pi - DOSproj_orb[ish][bname][ - :, :, :] += (1.0j*(gf-gf.conjugate().transpose())/2.0/numpy.pi).data[:,:,:] - - # Write to files - if save_to_file and mpi.is_master_node(): - for sp in self.spin_block_names[self.SO]: - f = open('DOS_wann_%s.dat' % sp, 'w') - for iom in range(n_om): - f.write("%s %s\n" % (om_mesh[iom], DOS[sp][iom])) - f.close() - - # Partial - for ish in range(self.n_inequiv_shells): - f = open('DOS_wann_%s_proj%s.dat' % (sp, ish), 'w') - for iom in range(n_om): - f.write("%s %s\n" % - (om_mesh[iom], DOSproj[ish][sp][iom])) - f.close() - - # Orbitally-resolved - for i in range(self.corr_shells[self.inequiv_to_corr[ish]]['dim']): - for j in range(i, self.corr_shells[self.inequiv_to_corr[ish]]['dim']): - f = open('DOS_wann_' + sp + '_proj' + str(ish) + - '_' + str(i) + '_' + str(j) + '.dat', 'w') - for iom in range(n_om): - f.write("%s %s %s\n" % ( - om_mesh[iom], DOSproj_orb[ish][sp][iom, i, j].real,DOSproj_orb[ish][sp][iom, i, j].imag)) - f.close() - - return DOS, DOSproj, DOSproj_orb - - - def dos_wannier_basis_all(self, mu=None, broadening=None, mesh=None, with_Sigma=True, with_dc=True, save_to_file=True): - """ - Calculates the density of states in the basis of the Wannier functions. - - Parameters - ---------- - mu : double, optional - Chemical potential, overrides the one stored in the hdf5 archive. - broadening : double, optional - Lorentzian broadening of the spectra. If not given, standard value of lattice_gf is used. - mesh : real frequency MeshType, optional - Omega mesh for the real-frequency Green's function. Given as parameter to lattice_gf. - with_Sigma : boolean, optional - If True, the self energy is used for the calculation. If false, the DOS is calculated without self energy. - with_dc : boolean, optional - If True the double counting correction is used. - save_to_file : boolean, optional - If True, text files with the calculated data will be created. - - Returns - ------- - DOS : Dict of numpy arrays - Contains the full density of states. - DOSproj : Dict of numpy arrays - DOS projected to atoms. - DOSproj_orb : Dict of numpy arrays - DOS projected to atoms and resolved into orbital contributions. - """ - if mesh is None or with_Sigma: - assert isinstance(self.mesh, MeshReFreq), "mesh must be given if self.mesh is a MeshImFreq" - om_mesh = [x.real for x in self.mesh] - om_min = om_mesh[0] - om_max = om_mesh[-1] - n_om = len(om_mesh) - mesh = (om_min, om_max, n_om) - else: - om_min, om_max, n_om = mesh - om_mesh = numpy.linspace(om_min, om_max, n_om) - - spn = self.spin_block_names[self.SO] - gf_struct_parproj = [[(sp, list(range(self.shells[ish]['dim']))) for sp in spn] - for ish in range(self.n_shells)] - n_local_orbs = self.proj_mat_csc.shape[2] - gf_struct_parproj_all = [[(sp, list(range(n_local_orbs))) for sp in spn]] - - glist_all = [GfReFreq(target_shape=(block_dim, block_dim), window=(om_min, om_max), n_points=n_om) - for block, block_dim in gf_struct_parproj_all[0]] - G_loc_all = BlockGf(name_list=spn, block_list=glist_all, make_copies=False) - - DOS = {sp: numpy.zeros([n_om], float) - for sp in self.spin_block_names[self.SO]} - DOSproj = {} - DOSproj_orb = {} - - for sp in self.spin_block_names[self.SO]: - dim = n_local_orbs - DOSproj[sp] = numpy.zeros([n_om], float) - DOSproj_orb[sp] = numpy.zeros( - [n_om, dim, dim], complex) - - ikarray = numpy.array(list(range(self.n_k))) - for ik in mpi.slice_array(ikarray): - - G_latt_w = self.lattice_gf( - ik=ik, mu=mu, broadening=broadening, mesh=mesh, with_Sigma=with_Sigma, with_dc=with_dc) - G_latt_w *= self.bz_weights[ik] - - # Non-projected DOS - for iom in range(n_om): - for bname, gf in G_latt_w: - DOS[bname][iom] -= gf.data[iom, :, :].imag.trace() / \ - numpy.pi - - # Projected DOS: - for bname, gf in G_latt_w: - G_loc_all[bname] << self.downfold(ik, 0, bname, gf, G_loc_all[bname], shells='csc') - # Collect data from mpi: - for bname in DOS: - DOS[bname] = mpi.all_reduce( - mpi.world, DOS[bname], lambda x, y: x + y) - G_loc_all[bname] << mpi.all_reduce( - mpi.world, G_loc_all[bname], lambda x, y: x + y) - mpi.barrier() - - # Symmetrize and rotate to local coord. system if needed: - #if self.symm_op != 0: - # G_loc_all = self.symmcorr.symmetrize(G_loc_all) - - # G_loc can now also be used to look at orbitally-resolved quantities - for bname, gf in G_loc_all: # loop over spins - DOSproj[bname] = -gf.data.imag.trace(axis1=1, axis2=2) / numpy.pi - DOSproj_orb[bname][:,:,:] += (1.0j*(gf-gf.conjugate().transpose())/2.0/numpy.pi).data[:,:,:] - # Write to files - if save_to_file and mpi.is_master_node(): - for sp in self.spin_block_names[self.SO]: - f = open('DOS_wann_%s.dat' % sp, 'w') - for iom in range(n_om): - f.write("%s %s\n" % (om_mesh[iom], DOS[sp][iom])) - f.close() - - # Partial - f = open('DOS_wann_all_%s_proj.dat' % (sp), 'w') - for iom in range(n_om): - f.write("%s %s\n" % - (om_mesh[iom], DOSproj[sp][iom])) - f.close() - - # Orbitally-resolved - for i in range(n_local_orbs): - for j in range(i, n_local_orbs): - f = open('DOS_wann_all' + sp + '_proj_' + str(i) + '_' + str(j) + '.dat', 'w') - for iom in range(n_om): - f.write("%s %s %s\n" % ( - om_mesh[iom], DOSproj_orb[sp][iom, i, j].real,DOSproj_orb[sp][iom, i, j].imag)) - f.close() - - return DOS, DOSproj, DOSproj_orb - - # Uses .data of only GfReFreq objects. - def dos_parproj_basis(self, mu=None, broadening=None, mesh=None, with_Sigma=True, with_dc=True, save_to_file=True): - """ - Calculates the orbitally-resolved DOS. - Different to dos_Wannier_basis is that here we calculate projections also to non-Wannier projectors, in the - flavour of Wien2k QTL calculatuions. - - Parameters - ---------- - mu : double, optional - Chemical potential, overrides the one stored in the hdf5 archive. - broadening : double, optional - Lorentzian broadening of the spectra. If not given, standard value of lattice_gf is used. - mesh : real frequency MeshType, optional - Omega mesh for the real-frequency Green's function. Given as parameter to lattice_gf. - with_Sigma : boolean, optional - If True, the self energy is used for the calculation. If false, the DOS is calculated without self energy. - with_dc : boolean, optional - If True the double counting correction is used. - save_to_file : boolean, optional - If True, text files with the calculated data will be created. - - Returns - ------- - DOS : Dict of numpy arrays - Contains the full density of states. - DOSproj : Dict of numpy arrays - DOS projected to atoms. - DOSproj_orb : Dict of numpy arrays - DOS projected to atoms and resolved into orbital contributions. - """ - - things_to_read = ['n_parproj', 'proj_mat_all', - 'rot_mat_all', 'rot_mat_all_time_inv'] - subgroup_present, values_not_read = self.read_input_from_hdf( - subgrp=self.parproj_data, things_to_read=things_to_read) - if len(values_not_read) > 0 and mpi.is_master_node: - raise ValueError( - 'ERROR: One or more necessary SumK input properties have not been found in the given h5 archive:', self.values_not_read) - if self.symm_op: - self.symmpar = Symmetry(self.hdf_file, subgroup=self.symmpar_data) - - if mesh is None or with_Sigma: - assert isinstance(self.mesh, MeshReFreq), "mesh must be given if self.mesh is a MeshImFreq" - om_mesh = [x.real for x in self.mesh] - om_min = om_mesh[0] - om_max = om_mesh[-1] - n_om = len(om_mesh) - mesh = (om_min, om_max, n_om) - else: - om_min, om_max, n_om = mesh - om_mesh = numpy.linspace(om_min, om_max, n_om) - - G_loc = [] - spn = self.spin_block_names[self.SO] - gf_struct_parproj = [[(sp, self.shells[ish]['dim']) for sp in spn] - for ish in range(self.n_shells)] - for ish in range(self.n_shells): - glist = [GfReFreq(target_shape=(block_dim, block_dim), window=(om_min, om_max), n_points=n_om) - for block, block_dim in gf_struct_parproj[ish]] - G_loc.append( - BlockGf(name_list=spn, block_list=glist, make_copies=False)) - for ish in range(self.n_shells): - G_loc[ish].zero() - - DOS = {sp: numpy.zeros([n_om], float) - for sp in self.spin_block_names[self.SO]} - DOSproj = [{} for ish in range(self.n_shells)] - DOSproj_orb = [{} for ish in range(self.n_shells)] - for ish in range(self.n_shells): - for sp in self.spin_block_names[self.SO]: - dim = self.shells[ish]['dim'] - DOSproj[ish][sp] = numpy.zeros([n_om], float) - DOSproj_orb[ish][sp] = numpy.zeros( - [n_om, dim, dim], complex) - - ikarray = numpy.array(list(range(self.n_k))) - for ik in mpi.slice_array(ikarray): - - G_latt_w = self.lattice_gf( - ik=ik, mu=mu, broadening=broadening, mesh=mesh, with_Sigma=with_Sigma, with_dc=with_dc) - G_latt_w *= self.bz_weights[ik] - - # Non-projected DOS - for bname, gf in G_latt_w: - DOS[bname] -= gf.data.imag.trace(axis1=1, axis2=2) / numpy.pi - - # Projected DOS: - for ish in range(self.n_shells): - tmp = G_loc[ish].copy() - for ir in range(self.n_parproj[ish]): - for bname, gf in tmp: - tmp[bname] << self.downfold(ik, ish, bname, G_latt_w[ - bname], gf, shells='all', ir=ir) - G_loc[ish] += tmp - - # Collect data from mpi: - for bname in DOS: - DOS[bname] = mpi.all_reduce( - mpi.world, DOS[bname], lambda x, y: x + y) - for ish in range(self.n_shells): - G_loc[ish] << mpi.all_reduce( - mpi.world, G_loc[ish], lambda x, y: x + y) - mpi.barrier() - - # Symmetrize and rotate to local coord. system if needed: - if self.symm_op != 0: - G_loc = self.symmpar.symmetrize(G_loc) - if self.use_rotations: - for ish in range(self.n_shells): - for bname, gf in G_loc[ish]: - G_loc[ish][bname] << self.rotloc( - ish, gf, direction='toLocal', shells='all') - - # G_loc can now also be used to look at orbitally-resolved quantities - for ish in range(self.n_shells): - for bname, gf in G_loc[ish]: - DOSproj[ish][bname] = -gf.data.imag.trace(axis1=1, axis2=2) / numpy.pi - DOSproj_orb[ish][bname][ - :, :, :] += (1.0j*(gf-gf.conjugate().transpose())/2.0/numpy.pi).data[:,:,:] - - # Write to files - if save_to_file and mpi.is_master_node(): - for sp in self.spin_block_names[self.SO]: - f = open('DOS_parproj_%s.dat' % sp, 'w') - for iom in range(n_om): - f.write("%s %s\n" % (om_mesh[iom], DOS[sp][iom])) - f.close() - - # Partial - for ish in range(self.n_shells): - f = open('DOS_parproj_%s_proj%s.dat' % (sp, ish), 'w') - for iom in range(n_om): - f.write("%s %s\n" % - (om_mesh[iom], DOSproj[ish][sp][iom])) - f.close() - - # Orbitally-resolved - for i in range(self.shells[ish]['dim']): - for j in range(i, self.shells[ish]['dim']): - f = open('DOS_parproj_' + sp + '_proj' + str(ish) + - '_' + str(i) + '_' + str(j) + '.dat', 'w') - for iom in range(n_om): - f.write("%s %s %s\n" % ( - om_mesh[iom], DOSproj_orb[ish][sp][iom, i, j].real,DOSproj_orb[ish][sp][iom, i, j].imag)) - f.close() - - return DOS, DOSproj, DOSproj_orb - - # Elk total and partial dos calculations - # Uses .data of only GfReFreq objects. - def elk_dos(self, mu=None, broadening=None, mesh=None, with_Sigma=True, with_dc=True, save_to_file=True,pdos=False,nk=None): - """ - This calculates the total DOS and the partial DOS (orbital-DOS) from the band characters calculated in Elk. - - Parameters - ---------- - mu : double, optional - Chemical potential, overrides the one stored in the hdf5 archive. - broadening : double, optional - Lorentzian broadening of the spectra. If not given, standard value of lattice_gf is used. - mesh : real frequency MeshType, optional - Omega mesh for the real-frequency Green's function. Given as parameter to lattice_gf. - with_Sigma : boolean, optional - If True, the self energy is used for the calculation. If false, the DOS is calculated without self energy. - with_dc : boolean, optional - If True the double counting correction is used. - save_to_file : boolean, optional - If True, text files with the calculated data will be created. - pdos : allows the partial density of states to be calculated - nk : diagonal of the occupation function (from the Matsubara Green's function) - in the band basis (has form nk[spn][n_k][n_orbital]) - - Returns - ------- - DOS : Dict of numpy arrays - Contains the full density of states. - pDOS : Dict of numpy arrays - partial (orbital resolved) DOS for each atom. - """ - - if (pdos): - things_to_read = ['maxlm', 'bc'] - subgroup_present, values_not_read = self.read_input_from_hdf( - subgrp=self.bc_data, things_to_read=things_to_read) - if len(values_not_read) > 0 and mpi.is_master_node: - raise ValueError( - 'ERROR: One or more necessary SumK input properties have not been found in the given h5 archive:', self.values_not_read) - things_to_read = ['n_atoms'] - subgroup_present, values_not_read = self.read_input_from_hdf( - subgrp=self.symmcorr_data, things_to_read=things_to_read) - if len(values_not_read) > 0 and mpi.is_master_node: - raise ValueError( - 'ERROR: One or more necessary SumK input properties have not been found in the given h5 archive:', self.values_not_read) - - if mesh is None or with_Sigma: - assert isinstance(self.mesh, MeshReFreq), "mesh must be given if self.mesh is a MeshImFreq" - om_mesh = [x.real for x in self.mesh] - om_min = om_mesh[0] - om_max = om_mesh[-1] - n_om = len(om_mesh) - mesh = (om_min, om_max, n_om) - else: - om_min, om_max, n_om = mesh - om_mesh = numpy.linspace(om_min, om_max, n_om) - if mu is None: - mu = self.chemical_potential - - spn = self.spin_block_names[self.SO] - - DOS = {sp: numpy.zeros([n_om], float) - for sp in self.spin_block_names[self.SO]} - #set up temporary arrays for pdos calculations - if (pdos): - pDOS = {sp: numpy.zeros([self.n_atoms,self.maxlm,n_om], float) - for sp in self.spin_block_names[self.SO]} - ntoi = self.spin_names_to_ind[self.SO] - else: - pDOS = [] - - ikarray = numpy.array(range(self.n_k)) - for ik in mpi.slice_array(ikarray): - - G_latt_w = self.lattice_gf( - ik=ik, mu=mu, broadening=broadening, mesh=mesh, with_Sigma=with_Sigma, with_dc=with_dc) - G_latt_w *= self.bz_weights[ik] - if(nk!=None): - for iom in range(n_om): - for bname, gf in G_latt_w: - numpy.fill_diagonal(G_latt_w[bname].data[iom,:,:].imag, nk[bname][ik][:]*G_latt_w[bname].data[iom,:,:].imag.diagonal()) - - # Non-projected DOS - for iom in range(n_om): - for bname, gf in G_latt_w: - DOS[bname][iom] -= gf.data[iom, :, :].imag.trace() / \ - numpy.pi - - - # Partial DOS - if (pdos): - for bname, gf in G_latt_w: - isp=ntoi[bname] - nst=self.n_orbitals[ik,isp] - tmp = numpy.zeros([nst]) - for iom in range(n_om): - #get diagonal spectral function - tmp[:] = -gf.data[iom, :, :].imag.diagonal() / numpy.pi - #calculate the pDOS of all atoms - for iatom in range(self.n_atoms): - bcar=self.bc[:,isp,iatom,0:nst,ik] - pDOS[bname][iatom,:,iom] += numpy.matmul(bcar,tmp) - del tmp - mpi.barrier() - # Collect data from mpi: - for bname in DOS: - DOS[bname] = mpi.all_reduce( - mpi.world, DOS[bname], lambda x, y: x + y) - if (pdos): - for bname in pDOS: - for iatom in range(self.n_atoms): - for lm in range(self.maxlm): - pDOS[bname][iatom,lm,:] = mpi.all_reduce( - mpi.world, pDOS[bname][iatom,lm,:], lambda x, y: x + y) - - - # Write to files - if save_to_file and mpi.is_master_node(): - for sp in self.spin_block_names[self.SO]: - f = open('TDOS_%s.dat' % sp, 'w') - for iom in range(n_om): - f.write("%s %s\n" % (om_mesh[iom], DOS[sp][iom])) - f.close() - - # Partial - if (pdos): - for iatom in range(self.n_atoms): - f = open('pDOS_%s_atom_%s.dat' % (sp, iatom), 'w') - for lm in range(self.maxlm): - for iom in range(n_om): - f.write("%s %s\n" % - (om_mesh[iom], pDOS[sp][iatom,lm,iom])) - f.write("\n") - f.close() - - return DOS, pDOS - - # vector manipulation used in Elk for symmetry operations - This is already in elktools, this should - # put somewhere for general use by the converter and this script. - def v3frac(self,v,eps): - #This finds the fractional part of 3-vector v components. This uses the - #same method as in Elk (version 6.2.8) r3fac subroutine. - v[0]=v[0]-numpy.floor(v[0]) - if(v[0] < 0): v[0]+=1 - if((1-v[0]) < eps): v[0]=0 - if(v[0] < eps): v[0]=0 - v[1]=v[1]-numpy.floor(v[1]) - if(v[1] < 0): v[1]+=1 - if((1-v[1]) < eps): v[1]=0 - if(v[1] < eps): v[1]=0 - v[2]=v[2]-numpy.floor(v[2]) - if(v[2] < 0): v[2]+=1 - if((1-v[2]) < eps): v[2]=0 - if(v[2] < eps): v[2]=0 - return v - - # Calculate the spectral function at an energy contour omega - i.e. Fermi surface plots - # Uses .data of only GfReFreq objects. - def fs_plot(self, mu=None, broadening=None, mesh=None, FS=True, plane=True, sym=True, orthvec=None, with_Sigma=True, with_dc=True, save_to_file=True): - """ - Calculates the correlated spectral function at specific frequencies. The default output is the - correlated spectral function at zero frequency - this relates the the Fermi surface. - - Parameters - ---------- - mu : double, optional - Chemical potential, overrides the one stored in the hdf5 archive. - broadening : double, optional - Lorentzian broadening of the spectra. If not given, standard value of lattice_gf is used. - mesh : real frequency MeshType, optional - Omega mesh for the real-frequency Green's function. Given as parameter to lattice_gf. - plane : boolean, optional - True assumes that the k-mesh of eigenvalues calculated was a plane. - sym: boolean, optional - Uses the symmetry operations to fold out the correlated spectral function in the BZ - FS: boolean - Flag for calculating the spectral function at the Fermi level (omega->0) - orthvec: double (3) element numpy array, optional - This is used to determine the vectors used in the plane calculations after folding out the IBZ. - This needs to correspond to the same orthonormal LATTICE inputs vectors used in the DFT code - which generated the plane of energy eigenvalues. - The default is orthvec=[0,0,1]. - with_Sigma : boolean, optional - If True, the self energy is used for the calculation. If false, the DOS is calculated without self energy. - with_dc : boolean, optional - If True the double counting correction is used. - save_to_file : boolean, optional - If True, text files with the calculated data will be created. - - Returns - ------- - nk : int - The number of k-points in the plane. - vkc : Dict of numpy arrays [shape - (nk, 3)] - Contains the cartesian vectors which the spectral function has been evaluated on. - Akw : Dict of numpy arrays [shape - (spn)(self.n_k, n_om)] - Correlated spectral function - the data as it is written to the files. - iknr : int array - An array of k-point indices which mape the Akw over the unfolded BZ. - """ - #default vector tolerance used in Elk. This should not be alter. - epslat=1E-6 - #read in the energy contour energies and projectors - things_to_read = ['n_k','bmat','symlat','n_symm','vkl', - 'n_orbitals', 'proj_mat', 'hopping'] - subgroup_present, values_not_read = self.read_input_from_hdf( - subgrp=self.fs_data, things_to_read=things_to_read) - if len(values_not_read) > 0 and mpi.is_master_node: - raise ValueError( - 'ERROR: One or more necessary SumK input properties have not been found in the given h5 archive:', self.values_not_read) - - if with_Sigma is True or mesh is None: - assert isinstance(self.mesh, MeshReFreq), "SumkDFT.mesh must be real if with_Sigma is True or mesh is not given" - om_mesh = [x.real for x in self.mesh] - #for Fermi Surface calculations - if FS: - jw=[i for i in range(len(om_mesh)) if om_mesh[i] == 0.0] - if len(jw)==0: - mpi.report('Sigma_imp_w mesh does not include zero frequency value') - mpi.report('Using the next absolute lowest frequency value.') - abs_om_mesh = [abs(i) for i in om_mesh] - jw=[i for i in range(len(abs_om_mesh)) if abs_om_mesh[i] == numpy.min(abs_om_mesh[:])] - mpi.report(jw) - #for many energy contour calculations - else: - if mesh: - om_mn=mesh[0] - om_mx=mesh[1] - jw=[i for i in range(len(om_mesh)) if((om_mesh[i]<=om_mx)and(om_mesh[i]>=om_mn))] - om_min = om_mesh[0] - om_max = om_mesh[-1] - n_om = len(om_mesh) - mesh = (om_min, om_max, n_om) - if broadening is None: - broadening=0.0 - else: - #a range of frequencies can be used if desired - om_min, om_max, n_om = mesh - om_mesh = numpy.linspace(om_min, om_max, n_om) - FS=False - jw=[i for i in range(len(om_mesh)) if((om_mesh[i]<=om_max)and(om_mesh[i]>=om_min))] - if mu is None: - mu = self.chemical_potential - - #orthogonal vector used for plane calculations - if orthvec is None: - #set to [0,0,1] by default - orthvec = numpy.zeros(3,dtype=float) - orthvec[2] = 1.0 - elif orthvec.size != 3: - assert 0, "The input numpy orthvec is not the required size of 3!" - - spn = self.spin_block_names[self.SO] - - Akw = {sp: numpy.zeros([self.n_k, n_om], float) - for sp in spn} - - #Cartesian lattice coordinates array - vkc = numpy.zeros([self.n_k,3], float) - - ikarray = numpy.array(range(self.n_k)) - for ik in mpi.slice_array(ikarray): - #calculate the catesian coordinates of IBZ - vkc[ik,:] = numpy.matmul(self.bmat,self.vkl[ik,:]) - - G_latt_w = self.lattice_gf( - ik=ik, mu=mu, broadening=broadening, mesh=mesh, with_Sigma=with_Sigma, with_dc=with_dc) - - for iom in range(n_om): - for bname, gf in G_latt_w: - Akw[bname][ik, iom] += gf.data[iom,:,:].imag.trace() / (-1.0 * numpy.pi) - mpi.barrier() - - # Collect data from mpi: - for sp in spn: - Akw[sp] = mpi.all_reduce(mpi.world, Akw[sp], lambda x, y: x + y) - mpi.barrier() - - #fold out the IBZ k-points using the lattice vectors and symmetries - #reducible number of k-points (which will alter after out folding) - nk = self.n_k - iknr = numpy.arange(self.n_k) - if sym: - vkltmp = self.vkl - v = numpy.zeros(3, float) - v_orth = numpy.zeros(3, float) - for isym in range(self.n_symm): - #calculate the orthonormal vector after symmetry operation. This is used to - #check if the orthonormal vector after the symmetry operation is parallel - #or anit-parallel to the original vector. - if plane: - vo = numpy.matmul(self.symlat[isym][:,:],orthvec[:].transpose()) - #check if the vectors are parallel or anti-parallel respectively - t1 = numpy.array_equal(vo, orthvec) - if(not t1): - #exit this symmetry operation - continue - - for ik in range(self.n_k): - #find point in BZ by symmetry operation - v[:]=numpy.matmul(self.symlat[isym][:,:],self.vkl[ik,:]) - #shift back in to range [0,1) - Elk specific - v[:]=self.v3frac(v,epslat) - #add vector to list if not present and add the equivalent Akw value - #convert to cartesian - v[:] = numpy.matmul(self.bmat,v[:]) - #alter temporary arrays - nk += 1 - vkc = numpy.vstack((vkc,v)) - iknr = numpy.append(iknr,ik) - vkltmp = numpy.vstack((vkltmp,v)) - #remove duplicates - [vkc,ind]=numpy.unique(vkc,return_index=True,axis=0) - iknr=iknr[ind] - nk=vkc.shape[0] - #sort the indices for output in decending order - iksrt=numpy.lexsort(([vkc[:,i] for i in range(0,vkc.shape[1], 1)])) - #rearrange the vkc and iknr arrays - vkc=vkc[iksrt] - iknr=iknr[iksrt] - - # Write to files - if save_to_file and mpi.is_master_node(): - for sp in self.spin_block_names[self.SO]: - if FS: - #Output default FS spectral function - f = open('Akw_FS_%s.dat' % sp, 'w') - for ik in range(nk): - jk=iknr[ik] - f.write("%s %s %s %s\n" % (vkc[ik,0], vkc[ik,1], vkc[ik,2], Akw[bname][jk, jw[0]])) - f.close() - else: - #Output spectral function from multiple frequencies - for iom in jw: - #output the energy contours in multiple files with mesh index. - f = open('Akw_%s_omega_%s.dat' % (sp, iom), 'w') - for ik in range(nk): - jk=iknr[ik] - f.write("%s %s %s %s %s\n" % (vkc[ik,0], vkc[ik,1], vkc[ik,2], om_mesh[iom], Akw[bname][jk, iom])) - f.close() - return nk, vkc, Akw, iknr - - - - # Uses .data of only GfReFreq objects. - def spaghettis(self, broadening=None, plot_shift=0.0, plot_range=None, ishell=None, mu=None, save_to_file='Akw_'): - """ - Calculates the correlated band structure using a real-frequency self energy. - - Parameters - ---------- - mu : double, optional - Chemical potential, overrides the one stored in the hdf5 archive. - broadening : double, optional - Lorentzian broadening of the spectra. If not given, standard value of lattice_gf is used. - plot_shift : double, optional - Offset for each A(k,w) for stacked plotting of spectra. - plot_range : list of double, optional - Sets the energy window for plotting to (plot_range[0],plot_range[1]). If not provided, the energy mesh of the self energy is used. - ishell : integer, optional - Contains the index of the shell on which the spectral function is projected. If ishell=None, the total spectrum without projection is calculated. - save_to_file : string, optional - Filename where the spectra are stored. - - Returns - ------- - Akw : Dict of numpy arrays - Data as it is also written to the files. - """ - - # check if ReFreqMesh is given - assert isinstance(self.mesh, MeshReFreq) - - things_to_read = ['n_k', 'n_orbitals', 'proj_mat', - 'hopping', 'n_parproj', 'proj_mat_all'] - subgroup_present, values_not_read = self.read_input_from_hdf( - subgrp=self.bands_data, things_to_read=things_to_read) - if len(values_not_read) > 0 and mpi.is_master_node: - raise ValueError( - 'ERROR: One or more necessary SumK input properties have not been found in the given h5 archive:', self.values_not_read) - if ishell is not None: - things_to_read = ['rot_mat_all', 'rot_mat_all_time_inv'] - subgroup_present, values_not_read = self.read_input_from_hdf( - subgrp=self.parproj_data, things_to_read=things_to_read) - if len(values_not_read) > 0 and mpi.is_master_node: - raise ValueError( - 'ERROR: One or more necessary SumK input properties have not been found in the given h5 archive:', self.values_not_read) - - if mu is None: - mu = self.chemical_potential - spn = self.spin_block_names[self.SO] - mesh = numpy.array([x.value for x in self.mesh]) - n_om = len(mesh) - - if plot_range is None: - om_minplot = mesh[0] - 0.001 - om_maxplot = mesh[-1] + 0.001 - else: - om_minplot = plot_range[0] - om_maxplot = plot_range[1] - n_om = len(mesh[(mesh > om_minplot)&(mesh < om_maxplot)]) - - if ishell is None: - Akw = {sp: numpy.zeros([self.n_k, n_om], float) - for sp in spn} - else: - Akw = {sp: numpy.zeros( - [self.shells[ishell]['dim'], self.n_k, n_om], float) for sp in spn} - - if ishell is not None: - assert isinstance(ishell, int) and ishell in range(len(self.shells)), "ishell must be of type integer and consistent with number of shells." - gf_struct_parproj = [ - (sp, self.shells[ishell]['dim']) for sp in spn] - G_loc = BlockGf(name_block_generator=[(block, GfReFreq(target_shape=(block_dim, block_dim), mesh=self.Sigma_imp[0].mesh)) - for block, block_dim in gf_struct_parproj], make_copies=False) - G_loc.zero() - - ikarray = numpy.array(list(range(self.n_k))) - for ik in mpi.slice_array(ikarray): - - G_latt_w = self.lattice_gf(ik=ik, mu=mu, broadening=broadening) - - if ishell is None: - # Non-projected A(k,w) - for bname, gf in G_latt_w: - Akw[bname][ik] = -gf.data[numpy.where((mesh > om_minplot)&(mesh < om_maxplot))].imag.trace(axis1=1, axis2=2)/numpy.pi - # shift Akw for plotting stacked k-resolved eps(k) - # curves - Akw[bname][ik] += ik * plot_shift - - else: # ishell not None - # Projected A(k,w): - G_loc.zero() - tmp = G_loc.copy() - for ir in range(self.n_parproj[ishell]): - for bname, gf in tmp: - tmp[bname] << self.downfold(ik, ishell, bname, G_latt_w[ - bname], gf, shells='all', ir=ir) - G_loc += tmp - - # Rotate to local frame - if self.use_rotations: - for bname, gf in G_loc: - G_loc[bname] << self.rotloc( - ishell, gf, direction='toLocal', shells='all') - - for ish in range(self.shells[ishell]['dim']): - for sp in spn: - Akw[sp][ish, ik] = -G_loc[sp].data[numpy.where((mesh > om_minplot)&(mesh < om_maxplot)),ish,ish].imag/numpy.pi - # Collect data from mpi - for sp in spn: - Akw[sp] = mpi.all_reduce(mpi.world, Akw[sp], lambda x, y: x + y) - mpi.barrier() - - if save_to_file and mpi.is_master_node(): - if ishell is None: - for sp in spn: # loop over GF blocs: - # Open file for storage: - f = open(save_to_file + sp + '.dat', 'w') - for ik in range(self.n_k): - for iom in range(n_om): - if (mesh[iom] > om_minplot) and (mesh[iom] < om_maxplot): - if plot_shift > 0.0001: - f.write('%s %s\n' % - (mesh[iom], Akw[sp][ik, iom])) - else: - f.write('%s %s %s\n' % - (ik, mesh[iom], Akw[sp][ik, iom])) - f.write('\n') - f.close() - - else: # ishell is not None - for sp in spn: - for ish in range(self.shells[ishell]['dim']): - # Open file for storage: - f = open(save_to_file + str(ishell) + '_' + - sp + '_proj' + str(ish) + '.dat', 'w') - for ik in range(self.n_k): - for iom in range(n_om): - if (mesh[iom] > om_minplot) and (mesh[iom] < om_maxplot): - if plot_shift > 0.0001: - f.write('%s %s\n' % ( - mesh[iom], Akw[sp][ish, ik, iom])) - else: - f.write('%s %s %s\n' % ( - ik, mesh[iom], Akw[sp][ish, ik, iom])) - f.write('\n') - f.close() - - return Akw - - def partial_charges(self, mu=None, with_Sigma=True, with_dc=True): - """ - Calculates the orbitally-resolved density matrix for all the orbitals considered in the input, consistent with - the definition of Wien2k. Hence, (possibly non-orthonormal) projectors have to be provided in the partial projectors subgroup of - the hdf5 archive. - - Parameters - ---------- - - with_Sigma : boolean, optional - If True, the self energy is used for the calculation. If false, partial charges are calculated without self-energy correction. - mu : double, optional - Chemical potential, overrides the one stored in the hdf5 archive. - with_dc : boolean, optional - If True the double counting correction is used. - - Returns - ------- - dens_mat : list of numpy array - A list of density matrices projected to all shells provided in the input. - """ - assert self.dft_code in ('wien2k'), "This routine has only been implemented for wien2k inputs" - - things_to_read = ['dens_mat_below', 'n_parproj', - 'proj_mat_all', 'rot_mat_all', 'rot_mat_all_time_inv'] - subgroup_present, values_not_read = self.read_input_from_hdf( - subgrp=self.parproj_data, things_to_read=things_to_read) - if len(values_not_read) > 0 and mpi.is_master_node: - raise ValueError( - 'ERROR: One or more necessary SumK input properties have not been found in the given h5 archive:', self.values_not_read) - if self.symm_op: - self.symmpar = Symmetry(self.hdf_file, subgroup=self.symmpar_data) - - spn = self.spin_block_names[self.SO] - ntoi = self.spin_names_to_ind[self.SO] - # Density matrix in the window - self.dens_mat_window = [[numpy.zeros([self.shells[ish]['dim'], self.shells[ish]['dim']], complex) - for ish in range(self.n_shells)] - for isp in range(len(spn))] - # Set up G_loc - gf_struct_parproj = [[(sp, self.shells[ish]['dim']) for sp in spn] - for ish in range(self.n_shells)] - G_loc = [BlockGf(name_block_generator=[(block, GfImFreq(target_shape=(block_dim, block_dim), mesh=self.mesh)) - for block, block_dim in gf_struct_parproj[ish]], make_copies=False) - for ish in range(self.n_shells)] - for ish in range(self.n_shells): - G_loc[ish].zero() - - ikarray = numpy.array(list(range(self.n_k))) - for ik in mpi.slice_array(ikarray): - - G_latt_iw = self.lattice_gf(ik=ik, mu=mu, with_Sigma=with_Sigma, with_dc=with_dc) - G_latt_iw *= self.bz_weights[ik] - for ish in range(self.n_shells): - tmp = G_loc[ish].copy() - for ir in range(self.n_parproj[ish]): - for bname, gf in tmp: - tmp[bname] << self.downfold(ik, ish, bname, G_latt_iw[ - bname], gf, shells='all', ir=ir) - G_loc[ish] += tmp - - # Collect data from mpi: - for ish in range(self.n_shells): - G_loc[ish] << mpi.all_reduce( - mpi.world, G_loc[ish], lambda x, y: x + y) - mpi.barrier() - - # Symmetrize and rotate to local coord. system if needed: - if self.symm_op != 0: - G_loc = self.symmpar.symmetrize(G_loc) - if self.use_rotations: - for ish in range(self.n_shells): - for bname, gf in G_loc[ish]: - G_loc[ish][bname] << self.rotloc( - ish, gf, direction='toLocal', shells='all') - - for ish in range(self.n_shells): - isp = 0 - for bname, gf in G_loc[ish]: - self.dens_mat_window[isp][ish] = G_loc[ish].density()[bname] - isp += 1 - - # Add density matrices to get the total: - dens_mat = [[self.dens_mat_below[ntoi[spn[isp]]][ish] + self.dens_mat_window[isp][ish] - for ish in range(self.n_shells)] - for isp in range(len(spn))] - - return dens_mat - - def print_hamiltonian(self): - """ - Prints the Kohn-Sham Hamiltonian to the text files hamup.dat and hamdn.dat (no spin orbit-coupling), or to ham.dat (with spin-orbit coupling). - """ - - if self.SP == 1 and self.SO == 0: - f1 = open('hamup.dat', 'w') - f2 = open('hamdn.dat', 'w') - for ik in range(self.n_k): - for i in range(self.n_orbitals[ik, 0]): - f1.write('%s %s\n' % - (ik, self.hopping[ik, 0, i, i].real)) - for i in range(self.n_orbitals[ik, 1]): - f2.write('%s %s\n' % - (ik, self.hopping[ik, 1, i, i].real)) - f1.write('\n') - f2.write('\n') - f1.close() - f2.close() - else: - f = open('ham.dat', 'w') - for ik in range(self.n_k): - for i in range(self.n_orbitals[ik, 0]): - f.write('%s %s\n' % - (ik, self.hopping[ik, 0, i, i].real)) - f.write('\n') - f.close() - - diff --git a/test/python/elk/elk_spectralcontours_convert/elk_spectralcontours_convert.ref_orig.h5 b/test/python/elk/elk_spectralcontours_convert/elk_spectralcontours_convert.ref_orig.h5 deleted file mode 100644 index 9d34e53effe619d381502e26eee0006f92b9caf9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 608945 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 P;=S6tkK6;?`y2ls)tGjJ