• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Ruberhauptmann / quant-met / 13719467866

07 Mar 2025 11:12AM UTC coverage: 86.915% (-13.1%) from 100.0%
13719467866

Pull #93

github

web-flow
Merge 1eff8e237 into 17b683f9d
Pull Request #93: Add DMFT

87 of 100 branches covered (87.0%)

Branch coverage included in aggregate %.

44 of 182 new or added lines in 7 files covered. (24.18%)

916 of 1054 relevant lines covered (86.91%)

0.87 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

22.92
/src/quant_met/cli/dmft.py
1
# SPDX-FileCopyrightText: 2024 Tjark Sievers
2
#
3
# SPDX-License-Identifier: MIT
4

5
"""Functions to run self-consistent calculation for the order parameter."""
6

7
import logging
1✔
8
from pathlib import Path
1✔
9

10
import numpy as np
1✔
11
from h5 import HDFArchive
1✔
12
from triqs.gf import Gf, Idx
1✔
13

14
from quant_met.cli._utils import _hamiltonian_factory, _tbl_factory
1✔
15
from quant_met.dmft.dmft_loop import dmft_loop
1✔
16
from quant_met.dmft.utils import get_gloc
1✔
17
from quant_met.parameters import Parameters
1✔
18

19
logger = logging.getLogger(__name__)
1✔
20

21

22
def dmft_scf(parameters: Parameters) -> None:
1✔
23
    """Self-consistent calculation for the order parameter.
24

25
    Parameters
26
    ----------
27
    parameters: Parameters
28
        An instance of Parameters containing control settings, the model,
29
        and k-point specifications for the self-consistency calculation.
30
    """
NEW
31
    result_path = Path(parameters.control.outdir)
×
NEW
32
    result_path.mkdir(exist_ok=True, parents=True)
×
33

NEW
34
    h = _hamiltonian_factory(parameters=parameters.model, classname=parameters.model.name)
×
NEW
35
    tbl = _tbl_factory(h=h)
×
36

NEW
37
    kmesh = tbl.get_kmesh(n_k=(parameters.k_points.nk1, parameters.k_points.nk2, 1))
×
38

NEW
39
    enk = tbl.fourier(kmesh)
×
NEW
40
    n_orbitals = tbl.n_orbitals
×
NEW
41
    nambu_shape = (2 * n_orbitals, 2 * n_orbitals)
×
NEW
42
    h0_nambu_k = Gf(mesh=kmesh, target_shape=nambu_shape)
×
NEW
43
    for k in kmesh:
×
NEW
44
        h0_nambu_k[k][:n_orbitals, :n_orbitals] = enk(k)
×
NEW
45
        h0_nambu_k[k][n_orbitals:, n_orbitals:] = -enk(-k)
×
46

NEW
47
    xmu = h.hubbard_int_orbital_basis[0] / 2
×
48

NEW
49
    initial_gaps = np.array([0, 0, 0])
×
50

NEW
51
    solver = dmft_loop(
×
52
        tbl=tbl,
53
        h=h,
54
        h0_nambu_k=h0_nambu_k,
55
        n_bath=parameters.control.n_bath,
56
        n_iw=parameters.control.n_iw,
57
        broadening=parameters.control.broadening,
58
        n_w=parameters.control.n_w,
59
        w_mixing=parameters.control.wmixing,
60
        n_success=parameters.control.n_success,
61
        xmu=xmu,
62
        kmesh=kmesh,
63
        epsilon=parameters.control.conv_treshold,
64
        max_iter=parameters.control.max_iter,
65
        initial_gaps=initial_gaps,
66
    )
67

68
    # Calculate local Green's function on the real axis
NEW
69
    s_w = solver.Sigma_w["up"]
×
NEW
70
    s_an_w = solver.Sigma_an_w["up_dn"]
×
NEW
71
    s_iw = solver.Sigma_iw["up"]
×
NEW
72
    s_an_iw = solver.Sigma_an_iw["up_dn"]
×
NEW
73
    g_iw, g_an_iw = get_gloc(s_iw, s_an_iw, h0_nambu_k, xmu, parameters.control.broadening, kmesh)
×
NEW
74
    g_w, g_an_w = get_gloc(s_w, s_an_w, h0_nambu_k, xmu, parameters.control.broadening, kmesh)
×
75

NEW
76
    n_iw0 = int(0.5 * len(s_iw.mesh))
×
NEW
77
    iw_0 = s_iw.mesh[n_iw0].value.imag
×
78

NEW
79
    gap = s_an_iw[Idx(0)][0, 0].real / (1 - (s_iw[Idx(0)][0, 0].imag / iw_0))
×
80

NEW
81
    data_dir = Path("data/DressedGraphene/dmft/sweep_V/")
×
NEW
82
    data_dir.mkdir(parents=True, exist_ok=True)
×
83

84
    # Save calculation results
NEW
85
    result_file = result_path / f"{parameters.control.prefix}.hdf5"
×
NEW
86
    with HDFArchive(f"{result_file}", "w") as ar:
×
NEW
87
        ar["s_iw"] = s_iw
×
NEW
88
        ar["s_an_iw"] = s_an_iw
×
NEW
89
        ar["g_iw"] = g_iw
×
NEW
90
        ar["g_an_iw"] = g_an_iw
×
NEW
91
        ar["g_w"] = g_w
×
NEW
92
        ar["g_an_w"] = g_an_w
×
NEW
93
        ar["gap"] = gap
×
94

NEW
95
    logger.info("Results saved to %s", result_file)
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc