3
0
mirror of https://github.com/triqs/dft_tools synced 2024-12-23 04:43:42 +01:00

Fixed DC formulas with SOC (#227)

This commit is contained in:
merkelm 2022-10-26 18:55:18 +02:00 committed by GitHub
parent 031ba1ea40
commit a072a5450f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1730,6 +1730,11 @@ class SumkDFT(object):
elif self.SP == 1 and self.SO == 1: elif self.SP == 1 and self.SO == 1:
Ncr[sp] = Ncrtot / 2.0 Ncr[sp] = Ncrtot / 2.0
# Uses "orbital" dimension with SO for double counting
if self.SP == 1 and self.SO == 1:
assert dim % 2 == 0
dim //= 2
if use_dc_value is None: if use_dc_value is None:
if U_interact is None and J_hund is None: if U_interact is None and J_hund is None:
@ -1744,7 +1749,7 @@ class SumkDFT(object):
J_hund * (Ncr[sp] - 0.5) J_hund * (Ncr[sp] - 0.5)
self.dc_imp[icrsh][sp] *= Uav self.dc_imp[icrsh][sp] *= Uav
self.dc_energ[icrsh] -= J_hund / \ self.dc_energ[icrsh] -= J_hund / \
2.0 * (Ncr[sp]) * (Ncr[sp] - 1.0) len(spn) * (Ncr[sp]) * (Ncr[sp] - 1.0)
mpi.report( mpi.report(
"DC for shell %(icrsh)i and block %(sp)s = %(Uav)f" % locals()) "DC for shell %(icrsh)i and block %(sp)s = %(Uav)f" % locals())
@ -1768,7 +1773,7 @@ class SumkDFT(object):
J_hund * (Ncr[sp] - Ncr[sp] / dim) J_hund * (Ncr[sp] - Ncr[sp] / dim)
self.dc_imp[icrsh][sp] *= Uav self.dc_imp[icrsh][sp] *= Uav
self.dc_energ[ self.dc_energ[
icrsh] -= (U_interact + (dim - 1) * J_hund) / dim * 0.5 * Ncr[sp] * Ncr[sp] icrsh] -= (U_interact + (dim - 1) * J_hund) / dim / len(spn) * Ncr[sp] * Ncr[sp]
mpi.report( mpi.report(
"DC for shell %(icrsh)i and block %(sp)s = %(Uav)f" % locals()) "DC for shell %(icrsh)i and block %(sp)s = %(Uav)f" % locals())