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
|
trans[icrsh][block][iorb, :] = 0.0
|
||||||
return trans
|
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
|
@classmethod
|
||||||
def full_structure(cls,gf_struct,corr_to_inequiv):
|
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.],
|
'up': np.array([[1., 0., 0.],
|
||||||
[0., 1., 0.],
|
[0., 1., 0.],
|
||||||
[0., 0., 1.]])}])
|
[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
|
# check pick_gf_struct_solver
|
||||||
pick1 = original_bs.copy()
|
pick1 = original_bs.copy()
|
||||||
@ -34,6 +42,10 @@ cmp(pick1.effective_transformation_sumk,
|
|||||||
'up': np.array([[0., 0., 0.],
|
'up': np.array([[0., 0., 0.],
|
||||||
[0., 1., 0.],
|
[0., 1., 0.],
|
||||||
[0., 0., 1.]])}])
|
[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
|
# check loading a block_structure from file
|
||||||
SK.block_structure = SK.load(['block_structure'], 'mod')[0]
|
SK.block_structure = SK.load(['block_structure'], 'mod')[0]
|
||||||
@ -56,6 +68,10 @@ cmp(pick1.effective_transformation_sumk,
|
|||||||
'up': np.array([[0., 0., 0.],
|
'up': np.array([[0., 0., 0.],
|
||||||
[0., 1., 0.],
|
[0., 1., 0.],
|
||||||
[0., 0., 1.]])}])
|
[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
|
# check pick_gf_struct_sumk
|
||||||
pick2 = original_bs.copy()
|
pick2 = original_bs.copy()
|
||||||
@ -68,6 +84,11 @@ cmp(pick2.effective_transformation_sumk,
|
|||||||
'up': np.array([[0., 0., 0.],
|
'up': np.array([[0., 0., 0.],
|
||||||
[0., 1., 0.],
|
[0., 1., 0.],
|
||||||
[0., 0., 1.]])}])
|
[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 = pick2.copy()
|
||||||
pick3.transformation = [np.reshape(range(9), (3, 3))]
|
pick3.transformation = [np.reshape(range(9), (3, 3))]
|
||||||
@ -78,6 +99,11 @@ cmp(pick3.effective_transformation_sumk,
|
|||||||
'up': np.array([[0, 0, 0],
|
'up': np.array([[0, 0, 0],
|
||||||
[3, 4, 5],
|
[3, 4, 5],
|
||||||
[6, 7, 8]])}])
|
[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
|
# check map_gf_struct_solver
|
||||||
mapping = [{('down_0', 0): ('down', 0),
|
mapping = [{('down_0', 0): ('down', 0),
|
||||||
|
Loading…
Reference in New Issue
Block a user