quant-met 0.0.26__py3-none-any.whl → 0.0.27__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. quant_met/__init__.py +5 -0
  2. quant_met/cli/__init__.py +1 -0
  3. quant_met/cli/_utils.py +2 -36
  4. quant_met/cli/crit_temp.py +1 -0
  5. quant_met/cli/main.py +1 -4
  6. quant_met/cli/scf.py +1 -0
  7. quant_met/geometry/__init__.py +1 -0
  8. quant_met/geometry/base_lattice.py +1 -0
  9. quant_met/geometry/bz_path.py +1 -0
  10. quant_met/geometry/graphene.py +1 -0
  11. quant_met/geometry/square.py +1 -0
  12. quant_met/mean_field/__init__.py +1 -2
  13. quant_met/mean_field/_utils.py +1 -0
  14. quant_met/mean_field/hamiltonians/__init__.py +1 -0
  15. quant_met/mean_field/hamiltonians/base_hamiltonian.py +3 -2
  16. quant_met/mean_field/hamiltonians/dressed_graphene.py +1 -0
  17. quant_met/mean_field/hamiltonians/graphene.py +1 -0
  18. quant_met/mean_field/hamiltonians/one_band_tight_binding.py +1 -0
  19. quant_met/mean_field/hamiltonians/three_band_tight_binding.py +1 -0
  20. quant_met/mean_field/hamiltonians/two_band_tight_binding.py +1 -0
  21. quant_met/mean_field/search_crit_temp.py +1 -0
  22. quant_met/mean_field/self_consistency.py +2 -1
  23. quant_met/parameters/__init__.py +1 -0
  24. quant_met/parameters/hamiltonians.py +1 -0
  25. quant_met/parameters/main.py +1 -0
  26. quant_met/plotting/__init__.py +1 -0
  27. quant_met/plotting/plotting.py +1 -0
  28. quant_met/utils.py +1 -0
  29. {quant_met-0.0.26.dist-info → quant_met-0.0.27.dist-info}/METADATA +5 -3
  30. quant_met-0.0.27.dist-info/RECORD +33 -0
  31. quant_met/cli/dmft.py +0 -96
  32. quant_met/dmft/__init__.py +0 -5
  33. quant_met/dmft/dmft_loop.py +0 -178
  34. quant_met/dmft/utils.py +0 -207
  35. quant_met-0.0.26.dist-info/RECORD +0 -37
  36. {quant_met-0.0.26.dist-info → quant_met-0.0.27.dist-info}/WHEEL +0 -0
  37. {quant_met-0.0.26.dist-info → quant_met-0.0.27.dist-info}/entry_points.txt +0 -0
  38. {quant_met-0.0.26.dist-info → quant_met-0.0.27.dist-info}/licenses/LICENSE.txt +0 -0
quant_met/__init__.py CHANGED
@@ -1,5 +1,10 @@
1
1
  # SPDX-FileCopyrightText: 2024 Tjark Sievers
2
+ # SPDX-FileCopyrightText: 2025 Tjark Sievers
2
3
  #
3
4
  # SPDX-License-Identifier: MIT
4
5
 
5
6
  """quant-met, a package to treat superconductivity in flat-band systems."""
7
+
8
+ from . import cli, geometry, mean_field, parameters, plotting
9
+
10
+ __all__ = ["cli", "geometry", "mean_field", "parameters", "plotting"]
quant_met/cli/__init__.py CHANGED
@@ -1,4 +1,5 @@
1
1
  # SPDX-FileCopyrightText: 2024 Tjark Sievers
2
+ # SPDX-FileCopyrightText: 2025 Tjark Sievers
2
3
  #
3
4
  # SPDX-License-Identifier: MIT
4
5
 
quant_met/cli/_utils.py CHANGED
@@ -1,12 +1,10 @@
1
1
  # SPDX-FileCopyrightText: 2024 Tjark Sievers
2
+ # SPDX-FileCopyrightText: 2025 Tjark Sievers
2
3
  #
3
4
  # SPDX-License-Identifier: MIT
4
5
 
5
- import numpy as np
6
- from triqs.lattice.tight_binding import TBLattice
7
-
8
6
  from quant_met.mean_field.hamiltonians import BaseHamiltonian
9
- from quant_met.parameters import GenericParameters, HamiltonianParameters
7
+ from quant_met.parameters import HamiltonianParameters
10
8
 
11
9
 
12
10
  def _hamiltonian_factory(
@@ -32,35 +30,3 @@ def _hamiltonian_factory(
32
30
  cls = getattr(hamiltonians, classname)
33
31
  h: BaseHamiltonian[HamiltonianParameters] = cls(parameters)
34
32
  return h
35
-
36
-
37
- def _tbl_factory(h: BaseHamiltonian[GenericParameters]) -> TBLattice:
38
- lattice_constant = np.sqrt(3)
39
-
40
- basis_vectors = [
41
- 0.5 * lattice_constant * np.array([1, np.sqrt(3), 0]),
42
- 0.5 * lattice_constant * np.array([1, -np.sqrt(3), 0]),
43
- ]
44
- orbital_positions = [
45
- (0.5 * (np.sqrt(3) - 1), 0, 0),
46
- (0.5 * (np.sqrt(3) + 1), 0, 0),
47
- (0.5 * (np.sqrt(3) - 1), 0, 0),
48
- ]
49
- hoppings = {
50
- (0, 0): [
51
- [0, h.hopping_gr, h.hopping_x_gr_a],
52
- [h.hopping_gr, 0, 0],
53
- [h.hopping_x_gr_a, 0, 0],
54
- ],
55
- (1, 0): [[0, 0, 0], [h.hopping_gr, 0, 0], [0, 0, 0]],
56
- (-1, 0): [[0, h.hopping_gr, 0], [0, 0, 0], [0, 0, 0]],
57
- (0, 1): [[0, h.hopping_gr, 0], [0, 0, 0], [0, 0, 0]],
58
- (0, -1): [[0, 0, 0], [h.hopping_gr, 0, 0], [0, 0, 0]],
59
- }
60
-
61
- return TBLattice(
62
- units=basis_vectors,
63
- hoppings=hoppings,
64
- orbital_positions=orbital_positions,
65
- orbital_names=["A", "B", "X"],
66
- )
@@ -1,4 +1,5 @@
1
1
  # SPDX-FileCopyrightText: 2024 Tjark Sievers
2
+ # SPDX-FileCopyrightText: 2025 Tjark Sievers
2
3
  #
3
4
  # SPDX-License-Identifier: MIT
4
5
 
quant_met/cli/main.py CHANGED
@@ -1,4 +1,5 @@
1
1
  # SPDX-FileCopyrightText: 2024 Tjark Sievers
2
+ # SPDX-FileCopyrightText: 2025 Tjark Sievers
2
3
  #
3
4
  # SPDX-License-Identifier: MIT
4
5
 
@@ -14,7 +15,6 @@ import yaml
14
15
  from quant_met.parameters import Parameters
15
16
 
16
17
  from .crit_temp import crit_temp
17
- from .dmft import dmft_scf
18
18
  from .scf import scf
19
19
 
20
20
  logger = logging.getLogger(__name__)
@@ -61,9 +61,6 @@ def cli(input_file: TextIO, *, debug: bool) -> None:
61
61
  case "crit-temp":
62
62
  logger.info("Starting T_C calculation.")
63
63
  crit_temp(params)
64
- case "dmft-scf":
65
- logger.info("Starting DMFT SCF calculation.")
66
- dmft_scf(params)
67
64
  case _:
68
65
  logger.error("Calculation %s not found.", params.control.calculation)
69
66
  sys.exit(1)
quant_met/cli/scf.py CHANGED
@@ -1,4 +1,5 @@
1
1
  # SPDX-FileCopyrightText: 2024 Tjark Sievers
2
+ # SPDX-FileCopyrightText: 2025 Tjark Sievers
2
3
  #
3
4
  # SPDX-License-Identifier: MIT
4
5
 
@@ -1,4 +1,5 @@
1
1
  # SPDX-FileCopyrightText: 2024 Tjark Sievers
2
+ # SPDX-FileCopyrightText: 2025 Tjark Sievers
2
3
  #
3
4
  # SPDX-License-Identifier: MIT
4
5
 
@@ -1,4 +1,5 @@
1
1
  # SPDX-FileCopyrightText: 2024 Tjark Sievers
2
+ # SPDX-FileCopyrightText: 2025 Tjark Sievers
2
3
  #
3
4
  # SPDX-License-Identifier: MIT
4
5
 
@@ -1,4 +1,5 @@
1
1
  # SPDX-FileCopyrightText: 2024 Tjark Sievers
2
+ # SPDX-FileCopyrightText: 2025 Tjark Sievers
2
3
  #
3
4
  # SPDX-License-Identifier: MIT
4
5
 
@@ -1,4 +1,5 @@
1
1
  # SPDX-FileCopyrightText: 2024 Tjark Sievers
2
+ # SPDX-FileCopyrightText: 2025 Tjark Sievers
2
3
  #
3
4
  # SPDX-License-Identifier: MIT
4
5
 
@@ -1,4 +1,5 @@
1
1
  # SPDX-FileCopyrightText: 2024 Tjark Sievers
2
+ # SPDX-FileCopyrightText: 2025 Tjark Sievers
2
3
  #
3
4
  # SPDX-License-Identifier: MIT
4
5
 
@@ -1,4 +1,5 @@
1
1
  # SPDX-FileCopyrightText: 2024 Tjark Sievers
2
+ # SPDX-FileCopyrightText: 2025 Tjark Sievers
2
3
  #
3
4
  # SPDX-License-Identifier: MIT
4
5
 
@@ -21,8 +22,6 @@ Functions
21
22
  .. autosummary::
22
23
  :toctree: generated/
23
24
 
24
- superfluid_weight
25
- quantum_metric
26
25
  self_consistency_loop
27
26
  search_crit_temp
28
27
  """ # noqa: D205, D400
@@ -1,4 +1,5 @@
1
1
  # SPDX-FileCopyrightText: 2024 Tjark Sievers
2
+ # SPDX-FileCopyrightText: 2025 Tjark Sievers
2
3
  #
3
4
  # SPDX-License-Identifier: MIT
4
5
 
@@ -1,4 +1,5 @@
1
1
  # SPDX-FileCopyrightText: 2024 Tjark Sievers
2
+ # SPDX-FileCopyrightText: 2025 Tjark Sievers
2
3
  #
3
4
  # SPDX-License-Identifier: MIT
4
5
 
@@ -1,4 +1,5 @@
1
1
  # SPDX-FileCopyrightText: 2024 Tjark Sievers
2
+ # SPDX-FileCopyrightText: 2025 Tjark Sievers
2
3
  #
3
4
  # SPDX-License-Identifier: MIT
4
5
 
@@ -6,7 +7,7 @@
6
7
 
7
8
  import pathlib
8
9
  from abc import ABC, abstractmethod
9
- from typing import Generic, TypeVar
10
+ from typing import Generic, Self, TypeVar
10
11
 
11
12
  import h5py
12
13
  import numpy as np
@@ -152,7 +153,7 @@ class BaseHamiltonian(Generic[GenericParameters], ABC):
152
153
  f.attrs["lattice_constant"] = self.lattice.lattice_constant
153
154
 
154
155
  @classmethod
155
- def from_file(cls: type[GenericHamiltonian], filename: pathlib.Path) -> GenericHamiltonian:
156
+ def from_file(cls, filename: pathlib.Path) -> Self:
156
157
  """Initialize a Hamiltonian from a previously saved HDF5 file.
157
158
 
158
159
  This class method allows users to reconstruct a Hamiltonian object
@@ -1,4 +1,5 @@
1
1
  # SPDX-FileCopyrightText: 2024 Tjark Sievers
2
+ # SPDX-FileCopyrightText: 2025 Tjark Sievers
2
3
  #
3
4
  # SPDX-License-Identifier: MIT
4
5
 
@@ -1,4 +1,5 @@
1
1
  # SPDX-FileCopyrightText: 2024 Tjark Sievers
2
+ # SPDX-FileCopyrightText: 2025 Tjark Sievers
2
3
  #
3
4
  # SPDX-License-Identifier: MIT
4
5
 
@@ -1,4 +1,5 @@
1
1
  # SPDX-FileCopyrightText: 2024 Tjark Sievers
2
+ # SPDX-FileCopyrightText: 2025 Tjark Sievers
2
3
  #
3
4
  # SPDX-License-Identifier: MIT
4
5
 
@@ -1,4 +1,5 @@
1
1
  # SPDX-FileCopyrightText: 2024 Tjark Sievers
2
+ # SPDX-FileCopyrightText: 2025 Tjark Sievers
2
3
  #
3
4
  # SPDX-License-Identifier: MIT
4
5
 
@@ -1,4 +1,5 @@
1
1
  # SPDX-FileCopyrightText: 2024 Tjark Sievers
2
+ # SPDX-FileCopyrightText: 2025 Tjark Sievers
2
3
  #
3
4
  # SPDX-License-Identifier: MIT
4
5
 
@@ -1,4 +1,5 @@
1
1
  # SPDX-FileCopyrightText: 2024 Tjark Sievers
2
+ # SPDX-FileCopyrightText: 2025 Tjark Sievers
2
3
  #
3
4
  # SPDX-License-Identifier: MIT
4
5
 
@@ -1,4 +1,5 @@
1
1
  # SPDX-FileCopyrightText: 2024 Tjark Sievers
2
+ # SPDX-FileCopyrightText: 2025 Tjark Sievers
2
3
  #
3
4
  # SPDX-License-Identifier: MIT
4
5
 
@@ -89,6 +90,6 @@ def self_consistency_loop(
89
90
  return h
90
91
 
91
92
  mixing_greed = 0.2
92
- h.delta_orbital_basis = mixing_greed * new_gap + (1 - mixing_greed) * h.delta_orbital_basis
93
+ h.delta_orbital_basis = mixing_greed * new_gap + (1 - mixing_greed) * h.delta_orbital_basis # type: ignore[assignment]
93
94
  logger.debug("Updated gaps: %s", h.delta_orbital_basis)
94
95
  logger.debug("Change in gaps: %s", np.abs(h.delta_orbital_basis - new_gap))
@@ -1,4 +1,5 @@
1
1
  # SPDX-FileCopyrightText: 2024 Tjark Sievers
2
+ # SPDX-FileCopyrightText: 2025 Tjark Sievers
2
3
  #
3
4
  # SPDX-License-Identifier: MIT
4
5
 
@@ -1,4 +1,5 @@
1
1
  # SPDX-FileCopyrightText: 2024 Tjark Sievers
2
+ # SPDX-FileCopyrightText: 2025 Tjark Sievers
2
3
  #
3
4
  # SPDX-License-Identifier: MIT
4
5
 
@@ -1,4 +1,5 @@
1
1
  # SPDX-FileCopyrightText: 2024 Tjark Sievers
2
+ # SPDX-FileCopyrightText: 2025 Tjark Sievers
2
3
  #
3
4
  # SPDX-License-Identifier: MIT
4
5
 
@@ -1,4 +1,5 @@
1
1
  # SPDX-FileCopyrightText: 2024 Tjark Sievers
2
+ # SPDX-FileCopyrightText: 2025 Tjark Sievers
2
3
  #
3
4
  # SPDX-License-Identifier: MIT
4
5
 
@@ -1,4 +1,5 @@
1
1
  # SPDX-FileCopyrightText: 2024 Tjark Sievers
2
+ # SPDX-FileCopyrightText: 2025 Tjark Sievers
2
3
  #
3
4
  # SPDX-License-Identifier: MIT
4
5
 
quant_met/utils.py CHANGED
@@ -1,4 +1,5 @@
1
1
  # SPDX-FileCopyrightText: 2024 Tjark Sievers
2
+ # SPDX-FileCopyrightText: 2025 Tjark Sievers
2
3
  #
3
4
  # SPDX-License-Identifier: MIT
4
5
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: quant-met
3
- Version: 0.0.26
3
+ Version: 0.0.27
4
4
  Summary: Calculate superconductivity in flat-band systems.
5
5
  Author-email: Tjark Sievers <tsievers@physnet.uni-hamburg.de>
6
6
  License-File: LICENSE.txt
@@ -8,11 +8,12 @@ Requires-Python: >=3.11
8
8
  Requires-Dist: click>=8.1.8
9
9
  Requires-Dist: h5py>=3.12.1
10
10
  Requires-Dist: matplotlib>=3.10.0
11
- Requires-Dist: numba>=0.60.0
12
- Requires-Dist: numpy<2.1
11
+ Requires-Dist: numba>=0.61.0
12
+ Requires-Dist: numpy>=2.1
13
13
  Requires-Dist: numpydantic>=1.6.6
14
14
  Requires-Dist: pandas>=2.2.3
15
15
  Requires-Dist: pydantic>=2.10.4
16
+ Requires-Dist: pythtb>=1.8.0
16
17
  Requires-Dist: pyyaml>=6.0.2
17
18
  Requires-Dist: scipy>=1.15.0
18
19
  Requires-Dist: tables>=3.10.2
@@ -20,6 +21,7 @@ Description-Content-Type: text/markdown
20
21
 
21
22
  <!--
22
23
  SPDX-FileCopyrightText: 2024 Tjark Sievers
24
+ SPDX-FileCopyrightText: 2025 Tjark Sievers
23
25
 
24
26
  SPDX-License-Identifier: MIT
25
27
  -->
@@ -0,0 +1,33 @@
1
+ quant_met/__init__.py,sha256=gRG4ktbxayIWQc5JjSZcZaUpNhPhQ9CjZ1EbZthocaw,334
2
+ quant_met/utils.py,sha256=evF4BBhfElXK0sj4eUTIfF_vRyyzW6XYK44VZaLexE8,2112
3
+ quant_met/cli/__init__.py,sha256=OHV3Ia-aXPP2kGYoEQsSbqQaLMaOd07K7jdE-u6u2y0,299
4
+ quant_met/cli/_utils.py,sha256=211xxeO1a24AGMg6H-7Ls3gJhjP54Tws7OTmzW2-Q0Q,986
5
+ quant_met/cli/crit_temp.py,sha256=DVdxw_lLZPA7Eu_NvCKxcDLrKBJBOe0W6df4Js2Su9U,2072
6
+ quant_met/cli/main.py,sha256=myDASJvAhFp5olOy0sbilijyCYkztUMUkPfAiblhTo0,1916
7
+ quant_met/cli/scf.py,sha256=eU6h6BPqB19-1r2tGhHOhG_nT5xUxmu57uzlEDkicJs,2658
8
+ quant_met/geometry/__init__.py,sha256=Cxp0-SnqgAwUov0z1xWJ3r2JCL1eiYOX96g73O4X8x4,637
9
+ quant_met/geometry/base_lattice.py,sha256=OF6diQaryrm5RI7z8Eq-fYibzxaAriJSMQZItoi-qAw,2694
10
+ quant_met/geometry/bz_path.py,sha256=HcBENq6LoGxZ8p3H6qMG-gmJ0H3oS5qpMv8T5Rm5aaw,2548
11
+ quant_met/geometry/graphene.py,sha256=XikDAtNCCBHDbTEJXyu3U18I1adGEKek8B_ArridrpA,1672
12
+ quant_met/geometry/square.py,sha256=DWNGRU2K0uXIKkIgDiY9dmXIfz5u3S2sQ950FTQCeWY,1610
13
+ quant_met/mean_field/__init__.py,sha256=jDz2DU8D9WeRKu2fWtJMhxeVUg511LZDLBX9jH3dfrk,603
14
+ quant_met/mean_field/_utils.py,sha256=wMF0dpVGVYsVjx7Brot7eqqyUqZrl03KUfF1nvCSTXA,401
15
+ quant_met/mean_field/search_crit_temp.py,sha256=iEHAJFKuULUuZnoxHyyXIBUKLAVX44rZPLja4Wuavp0,8962
16
+ quant_met/mean_field/self_consistency.py,sha256=1KQEhnCBrNYRzIj4TnC9sQPlp9hXR_jBPDA3VrGprPw,3444
17
+ quant_met/mean_field/hamiltonians/__init__.py,sha256=bjbkP4kC9yuTAsRJnVSSMDdjvi8P0AQp_00Sg0JMIrs,726
18
+ quant_met/mean_field/hamiltonians/base_hamiltonian.py,sha256=uEL4Nk7EdL8Bf73pDtw85JvfHPh2jlJQyq37GceT1iE,29385
19
+ quant_met/mean_field/hamiltonians/dressed_graphene.py,sha256=e6m51P2JQvwUhx-OP7RIQfAZUQoNxeM0S9wpElBttT8,4093
20
+ quant_met/mean_field/hamiltonians/graphene.py,sha256=bOIYGGoUwtqtWr1nqLD1lRKngjgtsmXVyxbig0luPeQ,3321
21
+ quant_met/mean_field/hamiltonians/one_band_tight_binding.py,sha256=P0N6upQCloRCorrB-Tsapkc681hetLR3SgEB-cnS508,2557
22
+ quant_met/mean_field/hamiltonians/three_band_tight_binding.py,sha256=6SWjjExppXURnsuRM8CX7rAKt-sxmgKBuOg2d4dzwdg,3340
23
+ quant_met/mean_field/hamiltonians/two_band_tight_binding.py,sha256=PSX2TsS3J2afKvKcurwhq-2XC2gbIle3iN4hQM_lq9E,2910
24
+ quant_met/parameters/__init__.py,sha256=8bTFW1owqGixUYjrT5K4XT5YTmrVtGlLS5UBHp7gnBA,1052
25
+ quant_met/parameters/hamiltonians.py,sha256=FLfRpNX3uA0MV1e3Obyb_J7VM5xwk9E4z6NKMmFd6Cw,6091
26
+ quant_met/parameters/main.py,sha256=j9-G-UgEuv9YYmDB7MPhlr67kpHhoCC5GtYN5FVkcgc,2370
27
+ quant_met/plotting/__init__.py,sha256=PrGNm8fVY4WafQPiNgE22boaG7HXoeeG_u82jFv8Npg,568
28
+ quant_met/plotting/plotting.py,sha256=vxfzYdrKIIrjC79GHb61AU_Ngu3TFrbOFujqsgitb0A,6637
29
+ quant_met-0.0.27.dist-info/METADATA,sha256=Mohh2BTtINTLuG0S7uF6e_VSvpW7Zi85DL2r0Z1DUGU,2051
30
+ quant_met-0.0.27.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
31
+ quant_met-0.0.27.dist-info/entry_points.txt,sha256=1Al3Kt-cMeQxwMp84ZSNL0qFwlbOVBu1o8A19MH8lEU,48
32
+ quant_met-0.0.27.dist-info/licenses/LICENSE.txt,sha256=QO_duPQihSJlaxSLxPAXo52X3esROP5wBkhxqBd1Z4E,1104
33
+ quant_met-0.0.27.dist-info/RECORD,,
quant_met/cli/dmft.py DELETED
@@ -1,96 +0,0 @@
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
8
- from pathlib import Path
9
-
10
- from h5 import HDFArchive
11
- from mpi4py import MPI
12
- from triqs.gf import Gf
13
-
14
- from quant_met.cli._utils import _hamiltonian_factory, _tbl_factory
15
- from quant_met.dmft.dmft_loop import dmft_loop
16
- from quant_met.dmft.utils import get_gloc
17
- from quant_met.parameters import Parameters
18
-
19
- logger = logging.getLogger(__name__)
20
-
21
-
22
- def dmft_scf(parameters: Parameters) -> None:
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
- """
31
- result_path = Path(parameters.control.outdir)
32
- result_path.mkdir(exist_ok=True, parents=True)
33
-
34
- h = _hamiltonian_factory(parameters=parameters.model, classname=parameters.model.name)
35
- tbl = _tbl_factory(h=h)
36
-
37
- kmesh = tbl.get_kmesh(n_k=(parameters.k_points.nk1, parameters.k_points.nk2, 1))
38
-
39
- enk = tbl.fourier(kmesh)
40
- n_orbitals = tbl.n_orbitals
41
- nambu_shape = (2 * n_orbitals, 2 * n_orbitals)
42
- h0_nambu_k = Gf(mesh=kmesh, target_shape=nambu_shape)
43
- for k in kmesh:
44
- h0_nambu_k[k][:n_orbitals, :n_orbitals] = enk(k)
45
- h0_nambu_k[k][n_orbitals:, n_orbitals:] = -enk(-k)
46
-
47
- ust = 0
48
- jh = 0
49
- xmu = (
50
- h.hubbard_int_orbital_basis[0] / 2
51
- + (tbl.n_orbitals - 1) * ust / 2
52
- + (tbl.n_orbitals - 1) * (ust - jh) / 2
53
- )
54
-
55
- solver = dmft_loop(
56
- tbl=tbl,
57
- h=h,
58
- h0_nambu_k=h0_nambu_k,
59
- n_bath=parameters.control.n_bath,
60
- n_iw=parameters.control.n_iw,
61
- broadening=parameters.control.broadening,
62
- n_w=parameters.control.n_w,
63
- w_mixing=parameters.control.wmixing,
64
- n_success=parameters.control.n_success,
65
- xmu=xmu,
66
- kmesh=kmesh,
67
- epsilon=parameters.control.conv_treshold,
68
- max_iter=parameters.control.max_iter,
69
- )
70
-
71
- # Calculate local Green's function on the real axis
72
- s_w = solver.Sigma_w["up"]
73
- s_an_w = solver.Sigma_an_w["up_dn"]
74
- s_iw = solver.Sigma_iw["up"]
75
- s_an_iw = solver.Sigma_an_iw["up_dn"]
76
- g_iw, g_an_iw = get_gloc(s_iw, s_an_iw, h0_nambu_k, xmu, parameters.control.broadening, kmesh)
77
- g_w, g_an_w = get_gloc(s_w, s_an_w, h0_nambu_k, xmu, parameters.control.broadening, kmesh)
78
-
79
- comm = MPI.COMM_WORLD
80
- rank = comm.Get_rank()
81
-
82
- if rank == 0:
83
- data_dir = Path("data/DressedGraphene/dmft/sweep_V/")
84
- data_dir.mkdir(parents=True, exist_ok=True)
85
-
86
- # Save calculation results
87
- result_file = result_path / f"{parameters.control.prefix}.hdf5"
88
- with HDFArchive(f"{result_file}", "w") as ar:
89
- ar["s_iw"] = s_iw
90
- ar["s_an_iw"] = s_an_iw
91
- ar["g_iw"] = g_iw
92
- ar["g_an_iw"] = g_an_iw
93
- ar["g_w"] = g_w
94
- ar["g_an_w"] = g_an_w
95
-
96
- logger.info("Results saved to %s", result_file)
@@ -1,5 +0,0 @@
1
- # SPDX-FileCopyrightText: 2025 Tjark Sievers
2
- #
3
- # SPDX-License-Identifier: MIT
4
-
5
- """DMFT package."""
@@ -1,178 +0,0 @@
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
8
- from itertools import product
9
-
10
- import numpy as np
11
- import numpy.typing as npt
12
- from edipack2triqs.fit import BathFittingParams
13
- from edipack2triqs.solver import EDIpackSolver
14
- from triqs.gf import BlockGf, Gf, MeshBrZone
15
- from triqs.lattice.tight_binding import TBLattice
16
- from triqs.operators import c, c_dag, dagger, n
17
-
18
- from quant_met.mean_field.hamiltonians import BaseHamiltonian
19
- from quant_met.parameters import GenericParameters
20
-
21
- from .utils import _check_convergence, _dmft_weiss_field, get_gloc
22
-
23
- logger = logging.getLogger(__name__)
24
-
25
-
26
- def dmft_loop(
27
- tbl: TBLattice,
28
- h: BaseHamiltonian[GenericParameters],
29
- h0_nambu_k: Gf,
30
- n_bath: float,
31
- n_iw: int,
32
- broadening: float,
33
- n_w: int,
34
- w_mixing: float,
35
- n_success: int,
36
- xmu: npt.NDArray[np.float64],
37
- kmesh: MeshBrZone,
38
- epsilon: float,
39
- max_iter: int,
40
- ) -> EDIpackSolver:
41
- """DMFT loop.
42
-
43
- Parameters
44
- ----------
45
- tbl
46
- h
47
- h0_nambu_k
48
- n_bath
49
- n_iw
50
- broadening
51
- n_w
52
- w_mixing
53
- n_success
54
- xmu
55
- kmesh
56
- epsilon
57
- max_iter
58
-
59
- Returns
60
- -------
61
- EDIpackSolver
62
-
63
- """
64
- energy_window = (-2.0 * h.hopping_gr, 2.0 * h.hopping_gr)
65
-
66
- spins = ("up", "dn")
67
- orbs = range(tbl.n_orbitals)
68
-
69
- # Fundamental sets for impurity degrees of freedom
70
- fops_imp_up = [("up", o) for o in orbs]
71
- fops_imp_dn = [("dn", o) for o in orbs]
72
-
73
- # Fundamental sets for bath degrees of freedom
74
- fops_bath_up = [("B_up", i) for i in range(tbl.n_orbitals * n_bath)]
75
- fops_bath_dn = [("B_dn", i) for i in range(tbl.n_orbitals * n_bath)]
76
-
77
- # Non-interacting part of the impurity Hamiltonian
78
- h_loc = -xmu * np.eye(tbl.n_orbitals)
79
- hamiltonian = sum(
80
- h_loc[o1, o2] * c_dag(spin, o1) * c(spin, o2) for spin, o1, o2 in product(spins, orbs, orbs)
81
- )
82
-
83
- ust = 0
84
- jh = 0
85
- jx = 0
86
- jp = 0
87
-
88
- # Interaction part
89
- hamiltonian += h.hubbard_int_orbital_basis[0] * sum(n("up", o) * n("dn", o) for o in orbs)
90
- hamiltonian += ust * sum(
91
- int(o1 != o2) * n("up", o1) * n("dn", o2) for o1, o2 in product(orbs, orbs)
92
- )
93
- hamiltonian += (ust - jh) * sum(
94
- int(o1 < o2) * n(s, o1) * n(s, o2) for s, o1, o2 in product(spins, orbs, orbs)
95
- )
96
- hamiltonian -= jx * sum(
97
- int(o1 != o2) * c_dag("up", o1) * c("dn", o1) * c_dag("dn", o2) * c("up", o2)
98
- for o1, o2 in product(orbs, orbs)
99
- )
100
- hamiltonian += jp * sum(
101
- int(o1 != o2) * c_dag("up", o1) * c_dag("dn", o1) * c("dn", o2) * c("up", o2)
102
- for o1, o2 in product(orbs, orbs)
103
- )
104
-
105
- # Matrix dimensions of eps and V: 3 orbitals x 2 bath states
106
- eps = np.array([[-1.0, -0.5, 0.5, 1.0] for _ in range(tbl.n_orbitals)])
107
- v = 0.5 * np.ones((tbl.n_orbitals, n_bath))
108
- d = -0.2 * np.eye(tbl.n_orbitals * n_bath)
109
-
110
- # Bath
111
- hamiltonian += sum(
112
- eps[o, nu] * c_dag("B_" + s, o * n_bath + nu) * c("B_" + s, o * n_bath + nu)
113
- for s, o, nu in product(spins, orbs, range(n_bath))
114
- )
115
-
116
- hamiltonian += sum(
117
- v[o, nu]
118
- * (c_dag(s, o) * c("B_" + s, o * n_bath + nu) + c_dag("B_" + s, o * n_bath + nu) * c(s, o))
119
- for s, o, nu in product(spins, orbs, range(n_bath))
120
- )
121
-
122
- # Anomalous bath
123
- hamiltonian += sum(
124
- d[o, q] * (c("B_up", o) * c("B_dn", q)) + dagger(d[o, q] * (c("B_up", o) * c("B_dn", q)))
125
- for o, q in product(range(tbl.n_orbitals * n_bath), range(tbl.n_orbitals * n_bath))
126
- )
127
-
128
- # Create solver object
129
- fit_params = BathFittingParams(method="minimize", grad="numeric")
130
- solver = EDIpackSolver(
131
- hamiltonian,
132
- fops_imp_up,
133
- fops_imp_dn,
134
- fops_bath_up,
135
- fops_bath_dn,
136
- lanc_dim_threshold=1024,
137
- verbose=1,
138
- bath_fitting_params=fit_params,
139
- )
140
-
141
- for iloop in range(max_iter):
142
- print(f"\nLoop {iloop + 1} of {max_iter}")
143
-
144
- # Solve the effective impurity problem
145
- solver.solve(
146
- beta=h.beta,
147
- n_iw=n_iw,
148
- energy_window=energy_window,
149
- n_w=n_w,
150
- broadening=broadening,
151
- )
152
-
153
- # Normal and anomalous components of computed self-energy
154
- s_iw = solver.Sigma_iw["up"]
155
- s_an_iw = solver.Sigma_an_iw["up_dn"]
156
-
157
- # Compute local Green's function
158
- g_iw, g_an_iw = get_gloc(s_iw, s_an_iw, h0_nambu_k, xmu, broadening, kmesh)
159
- # Compute Weiss field
160
- g0_iw, g0_an_iw = _dmft_weiss_field(g_iw, g_an_iw, s_iw, s_an_iw)
161
-
162
- # Bath fitting and mixing
163
- g0_iw_full = BlockGf(name_list=spins, block_list=[g0_iw, g0_iw])
164
- g0_an_iw_full = BlockGf(name_list=["up_dn"], block_list=[g0_an_iw])
165
-
166
- bath_new = solver.chi2_fit_bath(g0_iw_full, g0_an_iw_full)[0]
167
- solver.bath = w_mixing * bath_new + (1 - w_mixing) * solver.bath
168
-
169
- # Check convergence of the Weiss field
170
- g0 = np.asarray([g0_iw.data, g0_an_iw.data])
171
- # Check convergence of the Weiss field
172
- g0 = np.asarray([g0_iw.data, g0_an_iw.data])
173
- err, converged = _check_convergence(g0, epsilon, n_success, max_iter)
174
-
175
- if converged:
176
- break
177
-
178
- return solver
quant_met/dmft/utils.py DELETED
@@ -1,207 +0,0 @@
1
- # SPDX-FileCopyrightText: 2025 Tjark Sievers
2
- #
3
- # SPDX-License-Identifier: MIT
4
-
5
- """Utility functions used in DMFT."""
6
-
7
- import sys
8
- from pathlib import Path
9
-
10
- import numpy as np
11
- import numpy.typing as npt
12
- from mpi4py import MPI
13
- from triqs.gf import Gf, MeshBrZone, MeshImFreq, MeshProduct, conjugate, dyson, inverse, iOmega_n
14
-
15
-
16
- def _check_convergence(
17
- func: npt.NDArray[np.complex128], threshold: float = 1e-6, nsuccess: int = 1, nloop: int = 100
18
- ) -> tuple[float, bool]:
19
- comm = MPI.COMM_WORLD
20
- rank = comm.Get_rank()
21
-
22
- func = np.asarray(func)
23
- err = 1.0
24
- conv_bool = False
25
- outfile = "error.err"
26
-
27
- if globals().get("_whichiter") is None:
28
- global _whichiter
29
- global _gooditer
30
- global _oldfunc
31
-
32
- _whichiter = 0
33
- _gooditer = 0
34
- _oldfunc = np.zeros_like(func)
35
-
36
- green = "\033[92m"
37
- yellow = "\033[93m"
38
- red = "\033[91m"
39
- bold = "\033[1m"
40
- colorend = "\033[0m"
41
-
42
- # only the master does the calculation
43
- if rank == 0:
44
- errvec = np.real(np.sum(abs(func - _oldfunc), axis=-1) / np.sum(abs(func), axis=-1))
45
- # first iteration
46
- if _whichiter == 0:
47
- errvec = np.ones_like(errvec)
48
- # remove nan compoments, if some component is divided by zero
49
- if np.prod(np.shape(errvec)) > 1:
50
- errvec = errvec[~np.isnan(errvec)]
51
- errmax = np.max(errvec)
52
- errmin = np.min(errvec)
53
- err = np.average(errvec)
54
- _oldfunc = np.copy(func)
55
- if err < threshold:
56
- _gooditer += 1 # increase good iterations count
57
- else:
58
- _gooditer = 0 # reset good iterations count
59
- _whichiter += 1
60
- conv_bool = ((err < threshold) and (_gooditer > nsuccess) and (_whichiter < nloop)) or (
61
- _whichiter >= nloop
62
- )
63
-
64
- # write out
65
- with Path(outfile).open("a") as file:
66
- file.write(f"{_whichiter} {err:.6e}\n")
67
- if np.prod(np.shape(errvec)) > 1:
68
- with Path(outfile + ".max").open("a") as file:
69
- file.write(f"{_whichiter} {errmax:.6e}\n")
70
- with Path(outfile + ".min").open("a") as file:
71
- file.write(f"{_whichiter} {errmin:.6e}\n")
72
- with Path(outfile + ".distribution").open("a") as file:
73
- file.write(
74
- f"{_whichiter}" + " ".join([f"{x:.6e}" for x in errvec.flatten()]) + "\n"
75
- )
76
-
77
- # print convergence message:
78
- if conv_bool:
79
- colorprefix = bold + green
80
- elif (err < threshold) and (_gooditer <= nsuccess):
81
- colorprefix = bold + yellow
82
- else:
83
- colorprefix = bold + red
84
-
85
- if _whichiter < nloop:
86
- if np.prod(np.shape(errvec)) > 1:
87
- print(colorprefix + "max error=" + colorend + f"{errmax:.6e}")
88
- print(
89
- colorprefix
90
- + " " * (np.prod(np.shape(errvec)) > 1)
91
- + "error="
92
- + colorend
93
- + f"{err:.6e}"
94
- )
95
- if np.prod(np.shape(errvec)) > 1:
96
- print(colorprefix + "min error=" + colorend + f"{errmin:.6e}")
97
- else:
98
- if np.prod(np.shape(errvec)) > 1:
99
- print(colorprefix + "max error=" + colorend + f"{errmax:.6e}")
100
- print(
101
- colorprefix
102
- + " " * (np.prod(np.shape(errvec)) > 1)
103
- + "error="
104
- + colorend
105
- + f"{err:.6e}"
106
- )
107
- if np.prod(np.shape(errvec)) > 1:
108
- print(colorprefix + "min error=" + colorend + f"{errmin:.6e}")
109
- print("Not converged after " + str(nloop) + " iterations.")
110
- with Path("ERROR.README").open("a") as file:
111
- file.write("Not converged after " + str(nloop) + " iterations.")
112
- print("\n")
113
-
114
- # pass to other cores:
115
- conv_bool = comm.bcast(conv_bool, root=0)
116
- err = comm.bcast(err, root=0)
117
- sys.stdout.flush()
118
- return err, conv_bool
119
-
120
-
121
- def get_gloc(
122
- s: Gf,
123
- s_an: Gf,
124
- h0_nambu_k: Gf,
125
- xmu: npt.NDArray[np.complex128],
126
- broadening: float,
127
- kmesh: MeshBrZone,
128
- ) -> tuple[Gf, Gf]:
129
- """Compute local GF from bare lattice Hamiltonian and self-energy.
130
-
131
- Parameters
132
- ----------
133
- s
134
- s_an
135
- h0_nambu_k
136
-
137
- Returns
138
- -------
139
- tuple[Gf, Gf]
140
-
141
- """
142
- z = Gf(mesh=s.mesh, target_shape=h0_nambu_k.target_shape)
143
- n_orbitals = z.target_shape[0] // 2
144
- if isinstance(s.mesh, MeshImFreq):
145
- z[:n_orbitals, :n_orbitals] << iOmega_n + xmu - s
146
- z[:n_orbitals, n_orbitals:] << -s_an
147
- z[n_orbitals:, :n_orbitals] << -s_an
148
- z[n_orbitals:, n_orbitals:] << iOmega_n - xmu + conjugate(s)
149
- else:
150
- z[:n_orbitals, n_orbitals:] << -s_an
151
- z[n_orbitals:, :n_orbitals] << -s_an
152
- for w in z.mesh:
153
- z[w][:n_orbitals, :n_orbitals] = (w + 1j * broadening + xmu) * np.eye(n_orbitals) - s[w]
154
- z[w][n_orbitals:, n_orbitals:] = (w + 1j * broadening - xmu) * np.eye(
155
- n_orbitals
156
- ) + conjugate(s(-w))
157
-
158
- g_k = Gf(mesh=MeshProduct(kmesh, z.mesh), target_shape=h0_nambu_k.target_shape)
159
- for k in kmesh:
160
- g_k[k, :] << inverse(z - h0_nambu_k[k])
161
-
162
- g_loc_nambu = sum(g_k[k, :] for k in kmesh) / len(kmesh)
163
-
164
- g_loc = s.copy()
165
- g_loc_an = s_an.copy()
166
- g_loc[:] = g_loc_nambu[:n_orbitals, :n_orbitals]
167
- g_loc_an[:] = g_loc_nambu[:n_orbitals, n_orbitals:]
168
- return g_loc, g_loc_an
169
-
170
-
171
- def _dmft_weiss_field(g_iw: Gf, g_an_iw: Gf, s_iw: Gf, s_an_iw: Gf) -> tuple[Gf, Gf]:
172
- """Compute Weiss field from local GF and self-energy.
173
-
174
- Parameters
175
- ----------
176
- g_iw
177
- g_an_iw
178
- s_iw
179
- s_an_iw
180
-
181
- Returns
182
- -------
183
- tuple[Gf, Gf]
184
-
185
- """
186
- n_orbitals = g_iw.target_shape[0]
187
- nambu_shape = (2 * n_orbitals, 2 * n_orbitals)
188
- g_nambu_iw = Gf(mesh=g_iw.mesh, target_shape=nambu_shape)
189
- s_nambu_iw = Gf(mesh=s_iw.mesh, target_shape=nambu_shape)
190
-
191
- g_nambu_iw[:n_orbitals, :n_orbitals] = g_iw
192
- g_nambu_iw[:n_orbitals, n_orbitals:] = g_an_iw
193
- g_nambu_iw[n_orbitals:, :n_orbitals] = g_an_iw
194
- g_nambu_iw[n_orbitals:, n_orbitals:] = -conjugate(g_iw)
195
-
196
- s_nambu_iw[:n_orbitals, :n_orbitals] = s_iw
197
- s_nambu_iw[:n_orbitals, n_orbitals:] = s_an_iw
198
- s_nambu_iw[n_orbitals:, :n_orbitals] = s_an_iw
199
- s_nambu_iw[n_orbitals:, n_orbitals:] = -conjugate(s_iw)
200
-
201
- g0_nambu_iw = dyson(G_iw=g_nambu_iw, Sigma_iw=s_nambu_iw)
202
-
203
- g0_iw = g_iw.copy()
204
- g0_an_iw = g_an_iw.copy()
205
- g0_iw[:] = g0_nambu_iw[:n_orbitals, :n_orbitals]
206
- g0_an_iw[:] = g0_nambu_iw[:n_orbitals, n_orbitals:]
207
- return g0_iw, g0_an_iw
@@ -1,37 +0,0 @@
1
- quant_met/__init__.py,sha256=ZO1UFz1awUYTI7B9ZkBwucvDz7GMGXnLLUGnEwLBhkc,155
2
- quant_met/utils.py,sha256=J3kCbKg0tPEoGJExX04QwifHn4ch482J8IcmRQxIfP4,2067
3
- quant_met/cli/__init__.py,sha256=nGFXhK8zWyEKQtsQTyJWfEOLFOHTCjZnfEcrVb2dARc,254
4
- quant_met/cli/_utils.py,sha256=MKHvkxudWH-px07lDz0_V1AWiCCvj_IsBYbocfL-r7Y,2036
5
- quant_met/cli/crit_temp.py,sha256=t9sPZKORl6dpa1UNAOMH2gDmeQxf80iFH7p_L3FI5q8,2027
6
- quant_met/cli/dmft.py,sha256=ct6e1Wd8o7V3VP7DB7pqPxyF5pbrR2mb-J8pUkP9UPE,3101
7
- quant_met/cli/main.py,sha256=1D1-KhGkzibts9b7Cv3JsR5Q-PnkowBWKE1Owc8tdD8,2010
8
- quant_met/cli/scf.py,sha256=3_rwtQHwypFjAwjrsO2r2sqjJKpNiDLAj6svU52CCcU,2613
9
- quant_met/dmft/__init__.py,sha256=2H0bN40Tvn-VnZgix6MugN0Q6iNwD_9AQxUC_LVLh70,99
10
- quant_met/dmft/dmft_loop.py,sha256=fH8v39I5yIY2iY5RaID43El1V0nxLewAfohNsq987_A,5272
11
- quant_met/dmft/utils.py,sha256=JO66kuTXruYCwNoVL0aFS55D3tV7Ii3v7hC9OpuWfF8,6636
12
- quant_met/geometry/__init__.py,sha256=2N8l0-2-PhEOQxaUO7e8Dqy5oaxt2y9343XENDTCGPE,592
13
- quant_met/geometry/base_lattice.py,sha256=OJNDMyzJB-0hK1BLgF-SV4jUYfOSUksIv1XG1bH-zyY,2649
14
- quant_met/geometry/bz_path.py,sha256=vwN5RxyrgFkHTSqm_6cWuOigICgxa-FX5NZ7SkgKScw,2503
15
- quant_met/geometry/graphene.py,sha256=ZLE55wV1E-jRCkGxW66pca2y5VWaNtMmXiXi-HB6bgs,1627
16
- quant_met/geometry/square.py,sha256=17XZH79lK9TeeDtXiBBa8rd2d9kv5yt2S9F6te0YZPU,1565
17
- quant_met/mean_field/__init__.py,sha256=Unweog9Tst1NxUMQ4X1OYiUQtyxI2ho-OQoCaekoMFk,597
18
- quant_met/mean_field/_utils.py,sha256=7hr0DDSdIqjft5Jjluvbw_HGoNLWgYJTxyuPJJvhBnc,356
19
- quant_met/mean_field/search_crit_temp.py,sha256=-A1ZegUOQXxh_SwmQeqMZCptnSLWuxDJsjdZK9XK-zE,8917
20
- quant_met/mean_field/self_consistency.py,sha256=YY_zhCurxOK3RLkK-Hglfkx33uhsvqpoAKOP4FuPdfo,3371
21
- quant_met/mean_field/hamiltonians/__init__.py,sha256=r-8TaLqRnRbAro-TMIyxzCCZHwVqyKrausODpQJb2tw,681
22
- quant_met/mean_field/hamiltonians/base_hamiltonian.py,sha256=0qRfSpiE5jybv4GmBGmuNKFl1fkE4fzXG15II1IyIu8,29374
23
- quant_met/mean_field/hamiltonians/dressed_graphene.py,sha256=Q5LiA3rgK88ZZV1V7JflgjlkEpve7uNZFzFCIoQND-w,4048
24
- quant_met/mean_field/hamiltonians/graphene.py,sha256=sa3H8jVq9Fkc_qcz5gJTCMgN8YD3N18JWLRBImhLyxo,3276
25
- quant_met/mean_field/hamiltonians/one_band_tight_binding.py,sha256=DZXaD95yWv1VZSMqgxkqEZv3PGihNGy7PuqupnN75ew,2512
26
- quant_met/mean_field/hamiltonians/three_band_tight_binding.py,sha256=g8XNImzCn_6CRYKDYI6sy3q6_TBYUDxDmQZ-AqenXTE,3295
27
- quant_met/mean_field/hamiltonians/two_band_tight_binding.py,sha256=DMySc94YQ1M2nPIKZjfc-Ax5Ysf7inwSuVKyd6dfqr0,2865
28
- quant_met/parameters/__init__.py,sha256=9yu7i0J-O3QxSicnLEh2ci7FSMwB8bPW0pbl8KWHJUs,1007
29
- quant_met/parameters/hamiltonians.py,sha256=PiWVV-miCdT4Z9GWloDVvIU_1QpRHHV-zVOga7DWwCw,6046
30
- quant_met/parameters/main.py,sha256=QP7Z24-QePMcy6txujqxbx5ztQTdC67m6elNsJtGtXQ,2325
31
- quant_met/plotting/__init__.py,sha256=IDgV6juJ0VfcJHppD-vnPH6w8wVuAC35eSeLxKzqyBc,523
32
- quant_met/plotting/plotting.py,sha256=4ZYclWJH3hlE8S7b7bL_JJlP3CKaCGcVzdIsqolCAaM,6592
33
- quant_met-0.0.26.dist-info/METADATA,sha256=rYIEO8Po6rucwi13B3pfOyZJgP4mso81gOfjYJYuosk,1978
34
- quant_met-0.0.26.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
35
- quant_met-0.0.26.dist-info/entry_points.txt,sha256=1Al3Kt-cMeQxwMp84ZSNL0qFwlbOVBu1o8A19MH8lEU,48
36
- quant_met-0.0.26.dist-info/licenses/LICENSE.txt,sha256=QO_duPQihSJlaxSLxPAXo52X3esROP5wBkhxqBd1Z4E,1104
37
- quant_met-0.0.26.dist-info/RECORD,,