|
8 | 8 | from triqs.gf import Gf, MeshDLRImTime, BlockGf, make_gf_dlr, make_gf_dlr_imfreq |
9 | 9 | from triqs.atom_diag import AtomDiag, AtomDiagReal, AtomDiagComplex |
10 | 10 |
|
11 | | -from .diag import all_connected_pairings |
| 11 | +from .diag import all_pairings, all_connected_pairings |
12 | 12 |
|
13 | 13 | from .dlr_dyson_ppsc import DysonItPPSC |
14 | 14 |
|
@@ -152,7 +152,7 @@ def fit_hybridization(self, tol=None, compression=False, verbose=True): |
152 | 152 |
|
153 | 153 | assert( tol is not None and tol > 0 ), 'Error: tol must be provided and positive when compression is enabled.' |
154 | 154 |
|
155 | | - from adapol.triqs_xca import TriqsDLRCompression |
| 155 | + from adapol.triqs import TriqsDLRCompression |
156 | 156 |
|
157 | 157 | try: |
158 | 158 | 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= |
291 | 291 | self.fit_hybridization(tol=self.hyb_tol, compression=self.hyb_comp, verbose=verbose) |
292 | 292 | self.init_diagram_evaluator() # FIXME! Evaluator takes hyb poles and coeffs in constructor |
293 | 293 |
|
| 294 | + iter = 0 |
294 | 295 | for iter in range(1, maxiter+1): |
295 | 296 |
|
296 | 297 | #if is_root(): print(f'Sigma max_order = {self.max_order}') |
@@ -594,22 +595,24 @@ def pseudo_particle_self_energy(self): |
594 | 595 |
|
595 | 596 |
|
596 | 597 | @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): |
598 | 599 |
|
599 | 600 | self.Sigma = self.get_zero_pseudo_particle_propagator() |
600 | 601 |
|
601 | 602 | for order in range(1, max_order+1): |
602 | 603 | 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) |
604 | 605 |
|
605 | 606 | return self.Sigma |
606 | 607 |
|
607 | 608 |
|
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): |
609 | 610 |
|
610 | 611 | Sigma = self.get_zero_pseudo_particle_propagator() |
611 | 612 |
|
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): |
613 | 616 | if verbose and is_root(): print(f'SIGMA: O{order} topo {topology} sign {sign:+d}') |
614 | 617 | topology = np.array(topology, dtype=np.int32) |
615 | 618 | Sigma += pow(-1, order) * sign * \ |
|
0 commit comments