mirror of
https://github.com/triqs/dft_tools
synced 2024-12-23 04:43:42 +01:00
block_structure: effective_transformation_solver
This commit is contained in:
parent
bc78560ee1
commit
e9bfb3ed2c
@ -251,6 +251,28 @@ class BlockStructure(object):
|
||||
trans[icrsh][block][iorb, :] = 0.0
|
||||
return trans
|
||||
|
||||
@property
|
||||
def effective_transformation_solver(self):
|
||||
eff_trans_sumk = self.effective_transformation_sumk
|
||||
|
||||
ets = []
|
||||
for ish in range(len(self.gf_struct_solver)):
|
||||
icrsh = self.inequiv_to_corr[ish]
|
||||
ets.append(dict())
|
||||
for block in self.gf_struct_solver[ish]:
|
||||
block_sumk = self.solver_to_sumk_block[ish][block]
|
||||
T = eff_trans_sumk[icrsh][block_sumk]
|
||||
ets[ish][block] = np.zeros((len(self.gf_struct_solver[ish][block]),
|
||||
len(T)),
|
||||
dtype=T.dtype)
|
||||
for i in self.gf_struct_solver[ish][block]:
|
||||
i_sumk = self.solver_to_sumk[ish][block, i]
|
||||
assert i_sumk[0] == block_sumk,\
|
||||
"Wrong block in solver_to_sumk"
|
||||
i_sumk = i_sumk[1]
|
||||
ets[ish][block][i, :] = T[i_sumk, :]
|
||||
return ets
|
||||
|
||||
|
||||
@classmethod
|
||||
def full_structure(cls,gf_struct,corr_to_inequiv):
|
||||
|
@ -22,6 +22,14 @@ cmp(original_bs.effective_transformation_sumk,
|
||||
'up': np.array([[1., 0., 0.],
|
||||
[0., 1., 0.],
|
||||
[0., 0., 1.]])}])
|
||||
cmp(original_bs.effective_transformation_solver,
|
||||
[{'up_0': np.array([[1., 0., 0.],
|
||||
[0., 1., 0.]]),
|
||||
'up_1': np.array([[0., 0., 1.]]),
|
||||
'down_1': np.array([[0., 0., 1.]]),
|
||||
'down_0': np.array([[1., 0., 0.],
|
||||
[0., 1., 0.]])}])
|
||||
|
||||
|
||||
# check pick_gf_struct_solver
|
||||
pick1 = original_bs.copy()
|
||||
@ -34,6 +42,10 @@ cmp(pick1.effective_transformation_sumk,
|
||||
'up': np.array([[0., 0., 0.],
|
||||
[0., 1., 0.],
|
||||
[0., 0., 1.]])}])
|
||||
cmp(pick1.effective_transformation_solver,
|
||||
[{'up_0': np.array([[0., 1., 0.]]),
|
||||
'up_1': np.array([[0., 0., 1.]]),
|
||||
'down_1': np.array([[0., 0., 1.]])}])
|
||||
|
||||
# check loading a block_structure from file
|
||||
SK.block_structure = SK.load(['block_structure'], 'mod')[0]
|
||||
@ -56,6 +68,10 @@ cmp(pick1.effective_transformation_sumk,
|
||||
'up': np.array([[0., 0., 0.],
|
||||
[0., 1., 0.],
|
||||
[0., 0., 1.]])}])
|
||||
cmp(pick1.effective_transformation_solver,
|
||||
[{'up_0': np.array([[0., 1., 0.]]),
|
||||
'up_1': np.array([[0., 0., 1.]]),
|
||||
'down_1': np.array([[0., 0., 1.]])}])
|
||||
|
||||
# check pick_gf_struct_sumk
|
||||
pick2 = original_bs.copy()
|
||||
@ -68,6 +84,11 @@ cmp(pick2.effective_transformation_sumk,
|
||||
'up': np.array([[0., 0., 0.],
|
||||
[0., 1., 0.],
|
||||
[0., 0., 1.]])}])
|
||||
cmp(pick2.effective_transformation_solver,
|
||||
[{'up_0': np.array([[0., 1., 0.]]),
|
||||
'up_1': np.array([[0., 0., 1.]]),
|
||||
'down_0': np.array([[1., 0., 0.],
|
||||
[0., 1., 0.]])}])
|
||||
|
||||
pick3 = pick2.copy()
|
||||
pick3.transformation = [np.reshape(range(9), (3, 3))]
|
||||
@ -78,6 +99,11 @@ cmp(pick3.effective_transformation_sumk,
|
||||
'up': np.array([[0, 0, 0],
|
||||
[3, 4, 5],
|
||||
[6, 7, 8]])}])
|
||||
cmp(pick3.effective_transformation_solver,
|
||||
[{'up_0': np.array([[3, 4, 5]]),
|
||||
'up_1': np.array([[6, 7, 8]]),
|
||||
'down_0': np.array([[0, 1, 2],
|
||||
[3, 4, 5]])}])
|
||||
|
||||
# check map_gf_struct_solver
|
||||
mapping = [{('down_0', 0): ('down', 0),
|
||||
|
Loading…
Reference in New Issue
Block a user