Skip to content

Commit c5c5f62

Browse files
committed
[pybs] adapol fix and connected/full pp Sigma flag
1 parent 0b49571 commit c5c5f62

1 file changed

Lines changed: 9 additions & 6 deletions

File tree

python/triqs_xca/block_sparse_solver.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from triqs.gf import Gf, MeshDLRImTime, BlockGf, make_gf_dlr, make_gf_dlr_imfreq
99
from triqs.atom_diag import AtomDiag, AtomDiagReal, AtomDiagComplex
1010

11-
from .diag import all_connected_pairings
11+
from .diag import all_pairings, all_connected_pairings
1212

1313
from .dlr_dyson_ppsc import DysonItPPSC
1414

@@ -152,7 +152,7 @@ def fit_hybridization(self, tol=None, compression=False, verbose=True):
152152

153153
assert( tol is not None and tol > 0 ), 'Error: tol must be provided and positive when compression is enabled.'
154154

155-
from adapol.triqs_xca import TriqsDLRCompression
155+
from adapol.triqs import TriqsDLRCompression
156156

157157
try:
158158
tdc = TriqsDLRCompression(Delta_tau_dense, tol=tol, verbose=verbose and is_root())
@@ -291,6 +291,7 @@ def solve(self, max_order, tol=1e-4, maxiter=10, mix=1., hyb_tol=None, hyb_comp=
291291
self.fit_hybridization(tol=self.hyb_tol, compression=self.hyb_comp, verbose=verbose)
292292
self.init_diagram_evaluator() # FIXME! Evaluator takes hyb poles and coeffs in constructor
293293

294+
iter = 0
294295
for iter in range(1, maxiter+1):
295296

296297
#if is_root(): print(f'Sigma max_order = {self.max_order}')
@@ -594,22 +595,24 @@ def pseudo_particle_self_energy(self):
594595

595596

596597
@timer('Sigma')
597-
def eval_pseudo_particle_self_energy(self, G, max_order, verbose=False):
598+
def eval_pseudo_particle_self_energy(self, G, max_order, connected=True, verbose=False):
598599

599600
self.Sigma = self.get_zero_pseudo_particle_propagator()
600601

601602
for order in range(1, max_order+1):
602603
with self.timer(f'Order {order}'):
603-
self.Sigma += self.__eval_pseudo_particle_self_energy_order(G, order, verbose=verbose)
604+
self.Sigma += self.__eval_pseudo_particle_self_energy_order(G, order, connected, verbose=verbose)
604605

605606
return self.Sigma
606607

607608

608-
def __eval_pseudo_particle_self_energy_order(self, G, order, verbose=False):
609+
def __eval_pseudo_particle_self_energy_order(self, G, order, connected, verbose=False):
609610

610611
Sigma = self.get_zero_pseudo_particle_propagator()
611612

612-
for sign, topology in all_connected_pairings(order):
613+
pairings = all_connected_pairings if connected else all_pairings
614+
615+
for sign, topology in pairings(order):
613616
if verbose and is_root(): print(f'SIGMA: O{order} topo {topology} sign {sign:+d}')
614617
topology = np.array(topology, dtype=np.int32)
615618
Sigma += pow(-1, order) * sign * \

0 commit comments

Comments
 (0)