From 10bf947083175ea72563d17c02c4baab0e1abb32 Mon Sep 17 00:00:00 2001 From: Alexander Hampel Date: Mon, 13 May 2024 12:00:37 -0400 Subject: [PATCH] [feat] introduce dc_imp_dyn for dynamic part of interaction --- python/triqs_dft_tools/sumk_dft.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/python/triqs_dft_tools/sumk_dft.py b/python/triqs_dft_tools/sumk_dft.py index ad7dc1ce..9aeceae4 100644 --- a/python/triqs_dft_tools/sumk_dft.py +++ b/python/triqs_dft_tools/sumk_dft.py @@ -1657,11 +1657,13 @@ class SumkDFT(object): """ self.dc_imp = [{} for icrsh in range(self.n_corr_shells)] + self.dc_imp_dyn = [{} for icrsh in range(self.n_corr_shells)] for icrsh in range(self.n_corr_shells): dim = self.corr_shells[icrsh]['dim'] spn = self.spin_block_names[self.corr_shells[icrsh]['SO']] for sp in spn: self.dc_imp[icrsh][sp] = np.zeros([dim, dim], float) + self.dc_imp_dyn[icrsh][sp] = None self.dc_energ = [0.0 for icrsh in range(self.n_corr_shells)] def set_dc(self, dc_imp, dc_energ): @@ -1812,14 +1814,16 @@ class SumkDFT(object): for bname, gf in sigma_minus_dc[icrsh]: # Transform dc_imp to global coordinate system if self.use_rotations: - # if dc_imp is an numpy array simple rotate by hand, otherwise assume it is a triqs Gf - if isinstance(self.dc_imp[icrsh][bname], np.ndarray): - gf -= np.dot(self.rot_mat[icrsh], np.dot(self.dc_imp[icrsh][bname], self.rot_mat[icrsh].conjugate().transpose())) - else: - gf -= self.rotloc(icrsh, self.dc_imp[icrsh][bname], direction='toGlobal') + gf -= np.dot(self.rot_mat[icrsh], np.dot(self.dc_imp[icrsh][bname], self.rot_mat[icrsh].conjugate().transpose())) else: gf -= self.dc_imp[icrsh][bname] + if self.dc_imp_dyn[icrsh][bname] is not None: + if self.use_rotations: + gf -= self.rotloc(icrsh, self.dc_imp_dyn[icrsh][bname], direction='toGlobal') + else: + gf -= self.dc_imp_dyn[icrsh][bname] + return sigma_minus_dc def symm_deg_gf(self, gf_to_symm, ish=0):