mirror of
https://github.com/triqs/dft_tools
synced 2025-01-08 20:33:16 +01:00
Fixes issue with projected A(k,w) (#225)
* projected Akw fixed * assert statement on ishell for PR #225 Co-authored-by: Harrison LaBollita <hlabolli@asu.edu>
This commit is contained in:
parent
3b635aaa31
commit
031ba1ea40
@ -831,7 +831,7 @@ class SumkDFTTools(SumkDFT):
|
|||||||
subgrp=self.bands_data, things_to_read=things_to_read)
|
subgrp=self.bands_data, things_to_read=things_to_read)
|
||||||
if not value_read:
|
if not value_read:
|
||||||
return value_read
|
return value_read
|
||||||
if ishell:
|
if ishell is not None:
|
||||||
things_to_read = ['rot_mat_all', 'rot_mat_all_time_inv']
|
things_to_read = ['rot_mat_all', 'rot_mat_all_time_inv']
|
||||||
value_read = self.read_input_from_hdf(
|
value_read = self.read_input_from_hdf(
|
||||||
subgrp=self.parproj_data, things_to_read=things_to_read)
|
subgrp=self.parproj_data, things_to_read=things_to_read)
|
||||||
@ -860,6 +860,7 @@ class SumkDFTTools(SumkDFT):
|
|||||||
[self.shells[ishell]['dim'], self.n_k, n_om], numpy.float_) for sp in spn}
|
[self.shells[ishell]['dim'], self.n_k, n_om], numpy.float_) for sp in spn}
|
||||||
|
|
||||||
if ishell is not None:
|
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 = [
|
gf_struct_parproj = [
|
||||||
(sp, self.shells[ishell]['dim']) for sp in spn]
|
(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))
|
G_loc = BlockGf(name_block_generator=[(block, GfReFreq(target_shape=(block_dim, block_dim), mesh=self.Sigma_imp[0].mesh))
|
||||||
@ -897,7 +898,7 @@ class SumkDFTTools(SumkDFT):
|
|||||||
|
|
||||||
for ish in range(self.shells[ishell]['dim']):
|
for ish in range(self.shells[ishell]['dim']):
|
||||||
for sp in spn:
|
for sp in spn:
|
||||||
Akw[sp][ish, ik] = -gf.data[numpy.where((mesh > om_minplot)&(mesh < om_maxplot))].imag.trace(axis1=1, axis2=2)/numpy.pi
|
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
|
# Collect data from mpi
|
||||||
for sp in spn:
|
for sp in spn:
|
||||||
Akw[sp] = mpi.all_reduce(mpi.world, Akw[sp], lambda x, y: x + y)
|
Akw[sp] = mpi.all_reduce(mpi.world, Akw[sp], lambda x, y: x + y)
|
||||||
|
Loading…
Reference in New Issue
Block a user