From 373764f680cd67dd677467ac57092bf01e63701c Mon Sep 17 00:00:00 2001 From: Manuel Zingl Date: Wed, 18 Feb 2015 00:27:00 +0100 Subject: [PATCH] Fix error in transport code, some modifications --- doc/Transport.rst | 8 +++-- python/converters/wien2k_converter.py | 14 ++++----- python/sumk_dft_tools.py | 41 ++++++++++++++------------ test/SrVO3.h5 | Bin 760784 -> 859481 bytes test/srvo3_transp.output.h5 | Bin 7352 -> 7352 bytes 5 files changed, 34 insertions(+), 29 deletions(-) diff --git a/doc/Transport.rst b/doc/Transport.rst index c3ac7591..a122c60d 100644 --- a/doc/Transport.rst +++ b/doc/Transport.rst @@ -85,10 +85,12 @@ First we have to read the Wien2k files and store the relevant information in the SK = SumkDFTTools(hdf_file='case.h5', use_dft_blocks=True) -Additionally we need to read and set the self energy:: +Additionally we need to read and set the self energy, the chemical potential and the double counting:: ar = HDFArchive('case_Sigma.h5', 'a') SK.put_Sigma(Sigma_imp = [ar['dmft_transp_output']['Sigma_w']]) + SK.chemical_potential = ar['dmft_transp_output']['chemical_potential'] + SK.dc_imp = ar['dmft_transp_output']['dc_imp'] del ar As next step we can calculate the transport distribution :math:`\Gamma_{\alpha\beta}(\omega)`:: @@ -100,8 +102,8 @@ The parameters are: * `directions`: :math:`\alpha` and :math:`\beta` (e.g. xx, yy, xz, ...) * `Om_mesh`: :math:`\Omega`-mesh for the optical conductivity. Note that the code repines this mesh to the closest values on the self energy mesh! The new mesh is stored in `Om_meshr`. The Seebeck coefficient is only calculated if :math:`\Omega=0.0` is included. - * `energy_window`: Limits for the integration over :math:`\omega`. (Due to the Fermi functions the integrand is only of considerable size in a small - window around the Fermi energy.) + * `energy_window`: Limits for the integration over :math:`\omega` (Due to the Fermi functions the integrand is only of considerable size in a small + window around the Fermi energy). For optical conductivity calculations the window is automatically enlarged by :math:`\Omega` . * `with_Sigma`: If this parameter is set to False then Sigma is set to 0 (i.e. the DFT band structure :math:`A(k,\omega)` is taken). * `broadening`: The numerical broadening should be set to a finite value for with_Sigma = False. diff --git a/python/converters/wien2k_converter.py b/python/converters/wien2k_converter.py index 33d4f33e..1f8ba28f 100644 --- a/python/converters/wien2k_converter.py +++ b/python/converters/wien2k_converter.py @@ -221,7 +221,7 @@ class Wien2kConverter(ConverterTools): """ if not (mpi.is_master_node()): return - mpi.report("Reading parproj input from %s..."%self.parproj_file) + mpi.report("Reading input from %s..."%self.parproj_file) dens_mat_below = [ [numpy.zeros([self.shells[ish]['dim'],self.shells[ish]['dim']],numpy.complex_) for ish in range(self.n_shells)] for isp in range(self.n_spin_blocs) ] @@ -396,7 +396,7 @@ class Wien2kConverter(ConverterTools): band_window = [numpy.zeros((n_k, 2), dtype=int) for isp in range(SP + 1 - SO)] for isp, f in enumerate(files): if not os.path.exists(f): raise IOError, "convert_misc_input: File %s does not exist" %f - print "Reading input from %s..."%f, + mpi.report("Reading input from %s..."%f) R = ConverterTools.read_fortran_file(self, f, self.fortran_to_replace) assert int(R.next()) == n_k, "convert_misc_input: Number of k-points is inconsistent in oubwin file!" @@ -416,7 +416,7 @@ class Wien2kConverter(ConverterTools): # lattice_angles: unit cell angles in rad if not (os.path.exists(self.struct_file)) : raise IOError, "convert_misc_input: File %s does not exist" %self.struct_file - print "Reading input from %s..."%self.struct_file, + mpi.report("Reading input from %s..."%self.struct_file) with open(self.struct_file) as R: try: @@ -434,7 +434,7 @@ class Wien2kConverter(ConverterTools): # rot_symmetries: matrix representation of all (space group) symmetry operations if not (os.path.exists(self.outputs_file)) : raise IOError, "convert_misc_input: File %s does not exist" %self.outputs_file - print "Reading input from %s..."%self.outputs_file, + mpi.report("Reading input from %s..."%self.outputs_file) rot_symmetries = [] with open(self.outputs_file) as R: @@ -499,7 +499,7 @@ class Wien2kConverter(ConverterTools): band_window_optics = [] for isp, f in enumerate(files): if not os.path.exists(f) : raise IOError, "convert_transport_input: File %s does not exist" %f - print "Reading input from %s..."%f, + mpi.report("Reading input from %s..."%f) R = ConverterTools.read_fortran_file(self, f, {'D':'E','(':'',')':'',',':' '}) band_window_optics_isp = [] @@ -521,7 +521,7 @@ class Wien2kConverter(ConverterTools): if (nu_i != nu_j): velocity_xyz[nu_j][nu_i][i] = velocity_xyz[nu_i][nu_j][i].conjugate() velocities_k[isp].append(velocity_xyz) band_window_optics.append(numpy.array(band_window_optics_isp)) - print "DONE!" + R.close() # Reading done! # Put data to HDF5 file ar = HDFArchive(self.hdf_file, 'a') @@ -537,7 +537,7 @@ class Wien2kConverter(ConverterTools): """ if not (mpi.is_master_node()): return - mpi.report("Reading symmetry input from %s..."%symm_file) + mpi.report("Reading input from %s..."%symm_file) n_orbits = len(orbits) diff --git a/python/sumk_dft_tools.py b/python/sumk_dft_tools.py index 2789c005..f9d207c3 100644 --- a/python/sumk_dft_tools.py +++ b/python/sumk_dft_tools.py @@ -480,7 +480,7 @@ class SumkDFTTools(SumkDFT): return volumecc, volumepc - def transport_distribution(self, directions=['xx'], energy_window=None, Om_mesh=[0.0], beta=40, with_Sigma=False, n_om=None, broadening=0.01): + def transport_distribution(self, directions=['xx'], energy_window=None, Om_mesh=[0.0], beta=40.0, with_Sigma=False, n_om=None, broadening=0.0): """ calculate Tr A(k,w) v(k) A(k, w+Om) v(k). energy_window: regime for omega integral @@ -496,13 +496,16 @@ class SumkDFTTools(SumkDFT): if not (self.transp_data in ar): raise IOError, "transport_distribution: No %s subgroup in hdf file found! Call convert_transp_input first." %self.transp_data self.read_transport_input_from_hdf() + if mpi.is_master_node(): + # k-dependent-projections. + assert self.k_dep_projection == 1, "transport_distribution: k dependent projection is not implemented!" + # positive Om_mesh + assert all(Om >= 0.0 for Om in Om_mesh), "transport_distribution: Om_mesh should not contain negative values!" + n_inequiv_spin_blocks = self.SP + 1 - self.SO # up and down are equivalent if SP = 0 self.directions = directions - dir_to_int = {'x':0, 'y':1, 'z':2} + dir_to_int = {'x':0, 'y':1, 'z':2} - # k-dependent-projections. - assert self.k_dep_projection == 1, "transport_distribution: k dependent projection is not implemented!" - # calculate A(k,w) ####################################### @@ -515,14 +518,14 @@ class SumkDFTTools(SumkDFT): print "Using omega mesh provided by Sigma!" if energy_window is not None: - # Find according window in Sigma mesh - ioffset = numpy.sum(self.omega < energy_window[0]) - self.omega = self.omega[numpy.logical_and(self.omega >= energy_window[0], self.omega <= energy_window[1])] + # Find according window in Sigma mesh + ioffset = numpy.sum(self.omega < energy_window[0]-max(Om_mesh)) + self.omega = self.omega[numpy.logical_and(self.omega >= energy_window[0]-max(Om_mesh), self.omega <= energy_window[1]+max(Om_mesh))] n_om = len(self.omega) # Truncate Sigma to given omega window - # In the future there should be an option in gf to manipulate the mesh (e.g. truncate) directly. - # For we stick with this: + # In the future there should be an option in gf to manipulate the mesh (e.g. truncate) directly. + # For now we stick with this: for icrsh in range(self.n_corr_shells): Sigma_save = self.Sigma_imp_w[icrsh].copy() spn = self.spin_block_names[self.corr_shells[icrsh]['SO']] @@ -536,10 +539,10 @@ class SumkDFTTools(SumkDFT): else: assert n_om is not None, "transport_distribution: Number of omega points (n_om) needed to calculate transport distribution!" assert energy_window is not None, "transport_distribution: Energy window needed to calculate transport distribution!" - assert broadening != 0.0 and broadening is not None, "transport_distribution: Broadening necessary to calculate transport distribution!" - self.omega = numpy.linspace(energy_window[0],energy_window[1],n_om) - mesh = [energy_window[0], energy_window[1], n_om] - mu = 0.0 + assert broadening != 0.0 and broadening is not None, "transport_distribution: Broadening necessary to calculate transport distribution!" + self.omega = numpy.linspace(energy_window[0]-max(Om_mesh),energy_window[1]+max(Om_mesh),n_om) + mesh = [energy_window[0]-max(Om_mesh), energy_window[1]+max(Om_mesh), n_om] + mu = 0.0 # Check if energy_window is sufficiently large if (abs(self.fermi_dis(self.omega[0]*beta)*self.fermi_dis(-self.omega[0]*beta)) > 1e-5 @@ -550,7 +553,7 @@ class SumkDFTTools(SumkDFT): # Define mesh for optic conductivity d_omega = round(numpy.abs(self.omega[0] - self.omega[1]), 12) - iOm_mesh = numpy.array([int(Om / d_omega) for Om in Om_mesh]) + iOm_mesh = numpy.array([round((Om / d_omega),0) for Om in Om_mesh]) self.Om_mesh = iOm_mesh * d_omega if mpi.is_master_node(): @@ -571,7 +574,7 @@ class SumkDFTTools(SumkDFT): A_kw = [numpy.zeros((self.n_orbitals[ik][isp], self.n_orbitals[ik][isp], n_om), dtype=numpy.complex_) for isp in range(n_inequiv_spin_blocks)] - for isp in range(n_inequiv_spin_blocks): + for isp in range(n_inequiv_spin_blocks): # Obtain A_kw from G_w (swapaxes is used to have omega in the 3rd dimension) A_kw[isp].real = -copy.deepcopy(G_w[self.spin_block_names[self.SO][isp]].data.swapaxes(0,1).swapaxes(1,2)).imag / numpy.pi b_min = max(self.band_window[isp][ik, 0], self.band_window_optics[isp][ik, 0]) @@ -588,10 +591,10 @@ class SumkDFTTools(SumkDFT): vel_R[nu1][nu2][:] = numpy.dot(R, vel_R[nu1][nu2][:]) # calculate Gamma_w for each direction from the velocities vel_R and the spectral function A_kw - for direction in self.directions: + for direction in self.directions: for iw in xrange(n_om): for iq in range(len(self.Om_mesh)): - if(iw + iOm_mesh[iq] >= n_om): continue + if(iw + iOm_mesh[iq] >= n_om or self.omega[iw] < -self.Om_mesh[iq] + energy_window[0] or self.omega[iw] > self.Om_mesh[iq] + energy_window[1]): continue self.Gamma_w[direction][iq, iw] += (numpy.dot(numpy.dot(numpy.dot(vel_R[v_i, v_i, dir_to_int[direction[0]]], A_kw[isp][A_i, A_i, iw]), vel_R[v_i, v_i, dir_to_int[direction[1]]]), A_kw[isp][A_i, A_i, iw + iOm_mesh[iq]]).trace().real * self.bz_weights[ik]) @@ -649,7 +652,7 @@ class SumkDFTTools(SumkDFT): if ~numpy.isnan(A1[direction][iq]): # Seebeck is overwritten if there is more than one Omega = 0 in Om_mesh self.seebeck[direction] = - A1[direction][iq] / A0[direction][iq] * 86.17 - self.optic_cond[direction] = A0[direction] * 10700.0 + self.optic_cond[direction] = beta * A0[direction] * 10700.0 / numpy.pi for iq in xrange(n_q): print "Conductivity in direction %s for Omega = %.2f %f x 10^4 Ohm^-1 cm^-1" % (direction, self.Om_mesh[iq], self.optic_cond[direction][iq]) if not (numpy.isnan(A1[direction][iq])): diff --git a/test/SrVO3.h5 b/test/SrVO3.h5 index 20db985d5d7c7a84a8446ca466eb5386e3c09aee..1d923255d92e4c7a67027ed8c0b743a98986519c 100644 GIT binary patch delta 45206 zcmdUY3w%_?)%f0fH_6>ikPRqo5-}T~vVcMm{fuBWfZ7BUg7^pzWdXqe0^y+sP!gop zfDaO{GC{NkDG~uSF)bUQ)kRwk;3G&MQNC)BssZ#fXj>zw{Lh>-vwJ7GM81FJ*M9td zWM}S~IdkTmGiT1c8^QzL+i`JO&=}vNQ%(Peb=H(=daPagi^Hlk7yb)gK)>1axLn7O z!0K|{NAbYVbt^IcA6DUo9#09SZJJ~4Ngr*MjPhSll_0W-N@8NJ?^dGF&BsQeS0ac})*i;&YpZ>uCyib(^W#7gO1?LRHBWukTu3 z^R`u(7pSdIF4Dc4E5U_HG;8zO*RZmFaYL>C=VZA5^yZ-(Sg1i8uK5AIRd}9H%dVYr z&ZU}_eRilzvdf3q{JjZj<#pDMO*8!dkrWNl4Fp_oytbU0u7g(8IcUc~k1?VV=2QdLd6aPN)n@<=XRlbEzczZy+Qg z`f-KIYr1nbd0Nuxi&;D0_*&zfNU0D7O5PTwQId!?WlZ||i1z4YQ+H`rzXx-z*@27% z&P$i8ti0xNt0~S*42lxW=ee}3P=;yvU%+6Q&(yOr%4^QEeDJY#3re$LL7c}r7D)G+ zB45*a3+|AD!a5hHmk<8409lTF>5mhbk>d1{w_9jgm$47%FIM;g%61QOUlgqT}B2&*CTvKzF%(!`nk!y{*Sjh;gXtkd0GkJ;8rc)-` zG8OJ}{ZP}XZN7MskD72`ffmYb$f2B)o`1!rM#a9Pmpj+$nyXOH#UA+?iaq;mGqLh& zDz|L3i%q;l&nw30xY1*-(p+v=P*f)YRJmwDENQQgvmqNET(T+pj|NNPa8pRvGVO z{%XD3C5Ee#a=G$_RhFdKM20DGfJafByb8Zx+xY&-h z`aml;Gu@>A#^tK5yzz3c0T$JoeDw%Z_Fe4ABzK9`WqMDCeoGI8qIM{&S`=nYDNpxg zza(PiHR)F9Su?RwlpFaqR<=+urRhl?Wq~fHX;i+%!=6e3%Cb_X^)d2(1s@;h+|V

tOLm4yB#3!&jH95 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 delta 29095 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

-Omnc>8 z{7kaZ4}Je*dkD=zS*%fWfJi8L;KjF^gNjY4dsK0U!RnOFp@J=xJQ)k6)Zw56_L-BV z`CK5a(&fm^{F8Il$1%dxOXc~=8Ss|BoU(qX3n_6@AxbI z<)F)`9~IPdgkn#?+N4z6X%r6@93}AwMlpU2$J#0^&3Xd1HU7T-~Ns|87%Hr>Y%8`gne4O>csqh0&mPi}xzmt|>c?8A$fITDMP<@^uc95Fnx_*Bm9UnTsl zIjx!**E@@^0>)L&Xr|n zzscd7qjlCRl>mH9Z>qsz9P>cI6!GCzT2E*EKdQ4Zk^hA8qh|Vg!b_a043F@yGa~L5 z!V7;et)}K&5GmgfneLNsUr)6BY$T_`Mv;MEtcY90sUM6RQtu3J{gGx&n-A(OBJ$5G z=<5yf*nf<^XQltf61)ywY+U9VDCD_hvF4Paw!&c_Fu&XdyCm{Z+$lru#zbzmmFg`x zR#ZH&!j-E0u9m&7AC0IUFA-1wX!z6()GfA*3!6H+@UJ!(#u}+9&As1sgQ)+n;WNE^ z;7|0uXm#tCxx~-+yZWkIt3CI_Mo@5oy?9MBoQRh=lT)|&_PQ#!{M3*;KH)2I$Hxj} ziQQ}~W`Nev?_J^#KN@}8A+&}X+Fm&WNlLl(%U!6}P#fj?&INeA+z2n@Z)Z4C@AfYd zqorzNaznY~zo1Xp*@F#bYw~`VY&V?`n^DWK=@}32ZcU1#k{xz{;S9tw7o4zyFMq=y z{Ya~4Z@DXNaqrJrERKIlq~K@c95E*Xf7Vc%Tm%L=s>R0MXVujtz1o&=t+O%_SZ~C~ KCO|RCk^c`u8kXh& diff --git a/test/srvo3_transp.output.h5 b/test/srvo3_transp.output.h5 index 96de377b9ca8ffaee368f3acf9b8c9cdbbdabc0f..e452ea33812190d308248dc0b2f44d66c46dcbe9 100644 GIT binary patch delta 42 vcmdmCxx;e99uel7XC80fFJj9KX8adl$s+Kss(69p_qq1nJPnszBf9JX$nzAV delta 42 vcmdmCxx;e99ueluXU8}17qMjqGyaROWDz*O>XGQb%Srah=QJ$cngZ+rvfUG`