quant-met 0.0.8__py3-none-any.whl → 0.0.10__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 (31) hide show
  1. quant_met/cli/__init__.py +2 -5
  2. quant_met/cli/main.py +30 -3
  3. quant_met/cli/scf.py +40 -10
  4. quant_met/geometry/__init__.py +1 -1
  5. quant_met/geometry/base_lattice.py +18 -4
  6. quant_met/geometry/graphene.py +10 -2
  7. quant_met/geometry/square.py +11 -3
  8. quant_met/mean_field/__init__.py +3 -5
  9. quant_met/mean_field/_utils.py +0 -11
  10. quant_met/mean_field/hamiltonians/__init__.py +7 -8
  11. quant_met/mean_field/hamiltonians/base_hamiltonian.py +202 -176
  12. quant_met/mean_field/hamiltonians/dressed_graphene.py +21 -108
  13. quant_met/mean_field/hamiltonians/graphene.py +14 -93
  14. quant_met/mean_field/hamiltonians/one_band_tight_binding.py +17 -97
  15. quant_met/mean_field/hamiltonians/three_band_tight_binding.py +84 -0
  16. quant_met/mean_field/hamiltonians/two_band_tight_binding.py +75 -0
  17. quant_met/mean_field/quantum_metric.py +18 -57
  18. quant_met/mean_field/self_consistency.py +54 -20
  19. quant_met/mean_field/superfluid_weight.py +6 -3
  20. quant_met/parameters/__init__.py +28 -5
  21. quant_met/parameters/hamiltonians.py +146 -16
  22. quant_met/parameters/main.py +35 -6
  23. quant_met/plotting/__init__.py +0 -3
  24. quant_met/plotting/plotting.py +0 -34
  25. {quant_met-0.0.8.dist-info → quant_met-0.0.10.dist-info}/METADATA +1 -1
  26. quant_met-0.0.10.dist-info/RECORD +33 -0
  27. quant_met-0.0.8.dist-info/RECORD +0 -31
  28. {quant_met-0.0.8.dist-info → quant_met-0.0.10.dist-info}/LICENSE.txt +0 -0
  29. {quant_met-0.0.8.dist-info → quant_met-0.0.10.dist-info}/LICENSES/MIT.txt +0 -0
  30. {quant_met-0.0.8.dist-info → quant_met-0.0.10.dist-info}/WHEEL +0 -0
  31. {quant_met-0.0.8.dist-info → quant_met-0.0.10.dist-info}/entry_points.txt +0 -0
@@ -8,26 +8,36 @@ import numpy as np
8
8
  import numpy.typing as npt
9
9
 
10
10
  from quant_met.mean_field.hamiltonians.base_hamiltonian import BaseHamiltonian
11
+ from quant_met.parameters import GenericParameters
11
12
 
12
13
 
13
14
  def quantum_metric(
14
- h: BaseHamiltonian, k_grid: npt.NDArray[np.float64], bands: list[int]
15
+ h: BaseHamiltonian[GenericParameters], k_grid: npt.NDArray[np.float64], bands: list[int]
15
16
  ) -> npt.NDArray[np.float64]:
16
- """Calculate the quantum metric in the normal state.
17
+ """Calculate the quantum metric (geometric tensor) for specified bands.
18
+
19
+ This function computes the quantum geometric tensor associated with
20
+ the specified bands of a given Hamiltonian over a grid of k-points.
21
+ The output is a 2x2 matrix representing the quantum metric.
17
22
 
18
23
  Parameters
19
24
  ----------
20
- bands
21
- h : :class:`~quant_met.BaseHamiltonian`
22
- Hamiltonian object.
23
- k_grid : :class:`numpy.ndarray`
24
- List of k points.
25
+ h : BaseHamiltonian
26
+ Hamiltonian object used to compute Bloch states and their derivatives.
27
+ k_grid : numpy.ndarray
28
+ Array of k points in the Brillouin zone.
29
+ bands : list of int
30
+ Indices of the bands for which the quantum metric is to be calculated.
25
31
 
26
32
  Returns
27
33
  -------
28
34
  :class:`numpy.ndarray`
29
- Quantum metric in the normal state.
35
+ A 2x2 matrix representing the quantum metric.
30
36
 
37
+ Raises
38
+ ------
39
+ ValueError
40
+ If `bands` contains invalid indices or `k_grid` is empty.
31
41
  """
32
42
  energies, bloch = h.diagonalize_nonint(k_grid)
33
43
 
@@ -57,52 +67,3 @@ def quantum_metric(
57
67
  )
58
68
 
59
69
  return np.real(quantum_geom_tensor) / number_k_points
60
-
61
-
62
- def quantum_metric_bdg(
63
- h: BaseHamiltonian, k_grid: npt.NDArray[np.float64], bands: list[int]
64
- ) -> npt.NDArray[np.float64]:
65
- """Calculate the quantum metric in the BdG state.
66
-
67
- Parameters
68
- ----------
69
- bands
70
- h : :class:`~quant_met.BaseHamiltonian`
71
- Hamiltonian object.
72
- k_grid : :class:`numpy.ndarray`
73
- List of k points.
74
-
75
- Returns
76
- -------
77
- :class:`numpy.ndarray`
78
- Quantum metric in the normal state.
79
-
80
- """
81
- energies, bdg_functions = h.diagonalize_bdg(k_grid)
82
-
83
- number_k_points = len(k_grid)
84
-
85
- quantum_geom_tensor = np.zeros(shape=(2, 2), dtype=np.complex64)
86
-
87
- for band in bands:
88
- for i, direction_1 in enumerate(["x", "y"]):
89
- h_derivative_dir_1 = h.bdg_hamiltonian_derivative(k=k_grid, direction=direction_1)
90
- for j, direction_2 in enumerate(["x", "y"]):
91
- h_derivative_dir_2 = h.bdg_hamiltonian_derivative(k=k_grid, direction=direction_2)
92
- for k_index in range(len(k_grid)):
93
- for n in [i for i in range(2 * h.number_of_bands) if i != band]:
94
- quantum_geom_tensor[i, j] += (
95
- (
96
- bdg_functions[k_index][:, band].conjugate()
97
- @ h_derivative_dir_1[k_index]
98
- @ bdg_functions[k_index][:, n]
99
- )
100
- * (
101
- bdg_functions[k_index][:, n].conjugate()
102
- @ h_derivative_dir_2[k_index]
103
- @ bdg_functions[k_index][:, band]
104
- )
105
- / (energies[k_index][band] - energies[k_index][n]) ** 2
106
- )
107
-
108
- return np.real(quantum_geom_tensor) / number_k_points
@@ -4,46 +4,80 @@
4
4
 
5
5
  """Self-consistency loop."""
6
6
 
7
+ import logging
8
+
7
9
  import numpy as np
8
10
  import numpy.typing as npt
9
11
 
10
12
  from quant_met.mean_field.hamiltonians.base_hamiltonian import BaseHamiltonian
13
+ from quant_met.parameters import GenericParameters
14
+
15
+ logger = logging.getLogger(__name__)
11
16
 
12
17
 
13
18
  def self_consistency_loop(
14
- h: BaseHamiltonian,
19
+ h: BaseHamiltonian[GenericParameters],
15
20
  k_space_grid: npt.NDArray[np.float64],
16
- beta: np.float64,
17
21
  epsilon: float,
18
- q: npt.NDArray[np.float64] | None = None,
19
- ) -> BaseHamiltonian:
20
- """Self-consistency loop.
22
+ ) -> BaseHamiltonian[GenericParameters]:
23
+ """Self-consistently solves the gap equation for a given Hamiltonian.
24
+
25
+ This function performs a self-consistency loop to solve the gap equation
26
+ for a Hamiltonian `h`.
27
+ The gaps in the orbital basis are iteratively updated until the change is within
28
+ a specified tolerance `epsilon`.
21
29
 
22
30
  Parameters
23
31
  ----------
24
- lattice
25
- q
26
- beta
27
- number_of_k_points
28
- h
29
- epsilon
32
+ h : :class:`BaseHamiltonian<quant_met.mean_field.hamiltonians.BaseHamiltonian>`
33
+ The Hamiltonian object with the parameters for the calculation.
34
+
35
+ k_space_grid : :class:`numpy.ndarray`
36
+ A grid of points in the Brillouin zone at which the gap equation is evaluated.
37
+ See
38
+
39
+ epsilon : float
40
+ The convergence criterion. The loop will terminate when the change
41
+ in the delta orbital basis is less than this value.
42
+
43
+ Returns
44
+ -------
45
+ :class:`quant_met.mean_field.BaseHamiltonian`
46
+ The updated Hamiltonian object with the new gaps.
47
+
48
+ Notes
49
+ -----
50
+ The function initializes the gaps with random complex numbers before entering the
51
+ self-consistency loop.
52
+ The mixing parameter is set to 0.2, which controls how much of the new gaps is taken
53
+ relative to the previous value in each iteration.
30
54
  """
31
- if q is None:
32
- q = np.array([0, 0])
55
+ logger.info("Starting self-consistency loop.")
33
56
 
34
57
  rng = np.random.default_rng()
35
58
  delta_init = np.zeros(shape=h.delta_orbital_basis.shape, dtype=np.complex64)
36
- delta_init += (
37
- 2 * rng.random(size=h.delta_orbital_basis.shape)
38
- - 1
39
- + 1.0j * (2 * rng.random(size=h.delta_orbital_basis.shape) - 1)
59
+ delta_init += (0.2 * rng.random(size=h.delta_orbital_basis.shape) - 1) + 1.0j * (
60
+ 0.2 * rng.random(size=h.delta_orbital_basis.shape) - 1
40
61
  )
41
62
  h.delta_orbital_basis = delta_init
63
+ logger.debug("Initial gaps set to: %s", h.delta_orbital_basis)
42
64
 
65
+ iteration_count = 0
43
66
  while True:
44
- new_gap = h.gap_equation(k=k_space_grid, q=q, beta=beta)
45
- if (np.abs(h.delta_orbital_basis - new_gap) < epsilon).all():
67
+ iteration_count += 1
68
+ logger.debug("Iteration %d: Computing new gaps.", iteration_count)
69
+
70
+ new_gap = h.gap_equation(k=k_space_grid)
71
+
72
+ delta_change = np.abs(h.delta_orbital_basis - new_gap)
73
+ logger.debug("New gaps computed: %s", new_gap)
74
+
75
+ if (delta_change < epsilon).all():
46
76
  h.delta_orbital_basis = new_gap
77
+ logger.info("Convergence achieved after %d iterations.", iteration_count)
47
78
  return h
48
- mixing_greed = 0.1
79
+
80
+ mixing_greed = 0.2
49
81
  h.delta_orbital_basis = mixing_greed * new_gap + (1 - mixing_greed) * h.delta_orbital_basis
82
+ logger.debug("Updated gaps: %s", h.delta_orbital_basis)
83
+ logger.debug("Change in gaps: %s", delta_change)
@@ -8,10 +8,11 @@ import numpy as np
8
8
  import numpy.typing as npt
9
9
 
10
10
  from quant_met.mean_field.hamiltonians.base_hamiltonian import BaseHamiltonian
11
+ from quant_met.parameters import GenericParameters
11
12
 
12
13
 
13
14
  def superfluid_weight(
14
- h: BaseHamiltonian,
15
+ h: BaseHamiltonian[GenericParameters],
15
16
  k_grid: npt.NDArray[np.float64],
16
17
  ) -> tuple[npt.NDArray[np.complex64], npt.NDArray[np.complex64]]:
17
18
  """Calculate the superfluid weight.
@@ -54,7 +55,7 @@ def superfluid_weight(
54
55
 
55
56
 
56
57
  def _current_operator(
57
- h: BaseHamiltonian, direction: str, k: npt.NDArray[np.float64]
58
+ h: BaseHamiltonian[GenericParameters], direction: str, k: npt.NDArray[np.float64]
58
59
  ) -> npt.NDArray[np.complex64]:
59
60
  j = np.zeros(shape=(h.number_of_bands, h.number_of_bands), dtype=np.complex64)
60
61
 
@@ -71,7 +72,9 @@ def _current_operator(
71
72
  return j
72
73
 
73
74
 
74
- def _c_factor(h: BaseHamiltonian, k: npt.NDArray[np.float64]) -> npt.NDArray[np.complex64]:
75
+ def _c_factor(
76
+ h: BaseHamiltonian[GenericParameters], k: npt.NDArray[np.float64]
77
+ ) -> npt.NDArray[np.complex64]:
75
78
  bdg_energies, bdg_functions = h.diagonalize_bdg(k)
76
79
  c_mnpq = np.zeros(
77
80
  shape=(
@@ -3,19 +3,42 @@
3
3
  # SPDX-License-Identifier: MIT
4
4
 
5
5
  """
6
- Parameters (:mod:`quant_met.parameters`)
7
- ========================================
6
+ Parameter Classes
7
+ =================
8
+
9
+ Main class holding all the parameters for the calculation.
10
+
11
+ - :class:`Parameters<quant_met.parameters.Parameters>`
12
+
13
+ Classes holding the configuration for the Hamiltonians.
8
14
 
9
15
  .. autosummary::
10
16
  :toctree: generated/parameters/
11
17
 
18
+ Parameters # noqa
12
19
  DressedGrapheneParameters
13
20
  GrapheneParameters
14
21
  OneBandParameters
15
- Parameters
22
+ TwoBandParameters
23
+ ThreeBandParameters
16
24
  """ # noqa: D205, D400
17
25
 
18
- from .hamiltonians import DressedGrapheneParameters, GrapheneParameters, OneBandParameters
26
+ from .hamiltonians import (
27
+ DressedGrapheneParameters,
28
+ GenericParameters,
29
+ GrapheneParameters,
30
+ OneBandParameters,
31
+ ThreeBandParameters,
32
+ TwoBandParameters,
33
+ )
19
34
  from .main import Parameters
20
35
 
21
- __all__ = ["Parameters", "DressedGrapheneParameters", "GrapheneParameters", "OneBandParameters"]
36
+ __all__ = [
37
+ "Parameters",
38
+ "DressedGrapheneParameters",
39
+ "GrapheneParameters",
40
+ "OneBandParameters",
41
+ "TwoBandParameters",
42
+ "ThreeBandParameters",
43
+ "GenericParameters",
44
+ ]
@@ -4,44 +4,174 @@
4
4
 
5
5
  """Pydantic models to hold parameters for Hamiltonians."""
6
6
 
7
- from typing import Literal
7
+ from typing import Literal, TypeVar
8
8
 
9
9
  import numpy as np
10
10
  from numpydantic import NDArray, Shape
11
- from pydantic import BaseModel
11
+ from pydantic import BaseModel, Field, field_validator
12
+ from pydantic_core.core_schema import ValidationInfo
12
13
 
14
+ GenericParameters = TypeVar("GenericParameters", bound="HamiltonianParameters")
13
15
 
14
- class DressedGrapheneParameters(BaseModel):
15
- """Parameters for the dressed Graphene model."""
16
+
17
+ def check_positive_values(value: float, info: ValidationInfo) -> float:
18
+ """Check for positive values."""
19
+ if value < 0:
20
+ msg = f"{info.field_name} must be positive"
21
+ raise ValueError(msg)
22
+ return value
23
+
24
+
25
+ def validate_float(value: float, info: ValidationInfo) -> float:
26
+ """Check for valid floats."""
27
+ if np.isinf(value):
28
+ msg = f"{info.field_name} must not be Infinity"
29
+ raise ValueError(msg)
30
+ if np.isnan(value):
31
+ msg = f"{info.field_name} must not be NaN"
32
+ raise ValueError(msg)
33
+ return value
34
+
35
+
36
+ class HamiltonianParameters(BaseModel):
37
+ """Base class for Hamiltonian parameters.
38
+
39
+ Attributes
40
+ ----------
41
+ name : str
42
+ The name of the Hamiltonian model (e.g., "Graphene", "DressedGraphene").
43
+ beta : float
44
+ The inverse temperature; default is set to infinity.
45
+ q : :class:`numpy.ndarray` | None
46
+ An optional numpy array representing the momentum of Cooper pairs.
47
+ hubbard_int_orbital_basis : :class:`numpy.ndarray`
48
+ A numpy array representing the Hubbard interactions in the orbital basis.
49
+ """
50
+
51
+ name: str
52
+ beta: float = Field(default=np.inf, description="Inverse temperature")
53
+ q: NDArray[Shape["2"], int | float] | None = Field(
54
+ default=None, description="Momentum of Cooper pairs"
55
+ )
56
+ hubbard_int_orbital_basis: NDArray = Field(
57
+ ..., description="Hubbard interaction in orbital basis"
58
+ )
59
+
60
+
61
+ class DressedGrapheneParameters(HamiltonianParameters):
62
+ """Parameters for the Dressed Graphene model.
63
+
64
+ Attributes
65
+ ----------
66
+ hopping_gr : float
67
+ Hopping parameter in the graphene layer.
68
+ hopping_x : float
69
+ Hopping parameter at the impurity site.
70
+ hopping_x_gr_a : float
71
+ Hybridization parameter.
72
+ lattice_constant : float
73
+ The lattice constant of the model.
74
+ chemical_potential : float
75
+ The chemical potential.
76
+ hubbard_int_orbital_basis : npt.NDArray[np.float64]
77
+ Hubbard interaction in the orbital basis.
78
+ delta : npt.NDArray[np.complex64] | None
79
+ Initial value for gaps in orbital space.
80
+ """
16
81
 
17
82
  name: Literal["DressedGraphene"] = "DressedGraphene"
18
- hopping_gr: float
19
- hopping_x: float
20
- hopping_x_gr_a: float
21
- lattice_constant: float
22
- chemical_potential: float
23
- hubbard_int_gr: float
24
- hubbard_int_x: float
25
- delta: NDArray[Shape["3"], np.complex64] | None = None
83
+ hopping_gr: float = Field(..., description="Hopping in graphene")
84
+ hopping_x: float = Field(..., description="Hopping in impurity")
85
+ hopping_x_gr_a: float = Field(..., description="Hybridization")
86
+ lattice_constant: float = Field(..., description="Lattice constant")
87
+ chemical_potential: float = Field(..., description="Chemical potential")
88
+ hubbard_int_orbital_basis: NDArray[Shape["3"], np.float64] = Field(
89
+ ..., description="Hubbard interaction in orbital basis"
90
+ )
91
+ delta: NDArray[Shape["3"], np.complex64] | None = Field(
92
+ default=None, description="Initial value for gaps in orbital space"
93
+ )
94
+
95
+ _check_positive_values = field_validator(
96
+ "hopping_gr", "hopping_x", "hopping_x_gr_a", "lattice_constant"
97
+ )(check_positive_values)
98
+
99
+ _check_valid_floats = field_validator(
100
+ "hopping_gr", "hopping_x", "hopping_x_gr_a", "lattice_constant", "chemical_potential"
101
+ )(validate_float)
26
102
 
27
103
 
28
- class GrapheneParameters(BaseModel):
104
+ class GrapheneParameters(HamiltonianParameters):
29
105
  """Parameters for Graphene model."""
30
106
 
31
107
  name: Literal["Graphene"] = "Graphene"
32
108
  hopping: float
33
109
  lattice_constant: float
34
110
  chemical_potential: float
35
- hubbard_int: float
111
+ hubbard_int_orbital_basis: NDArray[Shape["2"], np.float64] = Field(
112
+ ..., description="Hubbard interaction in orbital basis"
113
+ )
36
114
  delta: NDArray[Shape["2"], np.complex64] | None = None
37
115
 
116
+ _check_positive_values = field_validator("hopping", "lattice_constant")(check_positive_values)
38
117
 
39
- class OneBandParameters(BaseModel):
118
+ _check_valid_floats = field_validator("hopping", "lattice_constant", "chemical_potential")(
119
+ validate_float
120
+ )
121
+
122
+
123
+ class OneBandParameters(HamiltonianParameters):
40
124
  """Parameters for Graphene model."""
41
125
 
42
126
  name: Literal["OneBand"] = "OneBand"
43
127
  hopping: float
44
128
  lattice_constant: float
45
129
  chemical_potential: float
46
- hubbard_int: float
130
+ hubbard_int_orbital_basis: NDArray[Shape["1"], np.float64] = Field(
131
+ ..., description="Hubbard interaction in orbital basis"
132
+ )
47
133
  delta: NDArray[Shape["1"], np.complex64] | None = None
134
+
135
+ _check_positive_values = field_validator("hopping", "lattice_constant")(check_positive_values)
136
+
137
+ _check_valid_floats = field_validator("hopping", "lattice_constant", "chemical_potential")(
138
+ validate_float
139
+ )
140
+
141
+
142
+ class TwoBandParameters(HamiltonianParameters):
143
+ """Parameters for Graphene model."""
144
+
145
+ name: Literal["TwoBand"] = "TwoBand"
146
+ hopping: float
147
+ lattice_constant: float
148
+ chemical_potential: float
149
+ hubbard_int_orbital_basis: NDArray[Shape["2"], np.float64] = Field(
150
+ ..., description="Hubbard interaction in orbital basis"
151
+ )
152
+ delta: NDArray[Shape["2"], np.complex64] | None = None
153
+
154
+ _check_positive_values = field_validator("hopping", "lattice_constant")(check_positive_values)
155
+
156
+ _check_valid_floats = field_validator("hopping", "lattice_constant", "chemical_potential")(
157
+ validate_float
158
+ )
159
+
160
+
161
+ class ThreeBandParameters(HamiltonianParameters):
162
+ """Parameters for Graphene model."""
163
+
164
+ name: Literal["ThreeBand"] = "ThreeBand"
165
+ hopping: float
166
+ lattice_constant: float
167
+ chemical_potential: float
168
+ hubbard_int_orbital_basis: NDArray[Shape["3"], np.float64] = Field(
169
+ ..., description="Hubbard interaction in orbital basis"
170
+ )
171
+ delta: NDArray[Shape["3"], np.complex64] | None = None
172
+
173
+ _check_positive_values = field_validator("hopping", "lattice_constant")(check_positive_values)
174
+
175
+ _check_valid_floats = field_validator("hopping", "lattice_constant", "chemical_potential")(
176
+ validate_float
177
+ )
@@ -6,32 +6,61 @@
6
6
 
7
7
  import pathlib
8
8
 
9
- from numpydantic import NDArray, Shape
10
9
  from pydantic import BaseModel, Field
11
10
 
12
11
  from .hamiltonians import DressedGrapheneParameters, GrapheneParameters, OneBandParameters
13
12
 
14
13
 
15
14
  class Control(BaseModel):
16
- """Control for the calculation."""
15
+ """Control for the calculation.
16
+
17
+ Attributes
18
+ ----------
19
+ calculation : str
20
+ Specifies the type of calculation to be performed.
21
+ prefix : str
22
+ A string used as a prefix for naming output files generated by the simulation.
23
+ outdir : :class:`pathlib.Path`
24
+ A path indicating the output directory where results will be saved.
25
+ conv_treshold : float
26
+ A float value representing the convergence threshold.
27
+ The calculation will stop when changes in the results drop below this threshold.
28
+ """
17
29
 
18
30
  calculation: str
19
31
  prefix: str
20
32
  outdir: pathlib.Path
21
33
  conv_treshold: float
22
- beta: float
23
- q: NDArray[Shape["2"], int | float] | None = None
24
34
 
25
35
 
26
36
  class KPoints(BaseModel):
27
- """Control for k points."""
37
+ """Control for k points.
38
+
39
+ Attributes
40
+ ----------
41
+ nk1 : int
42
+ The number of k-points in the first dimension of the k-space grid.
43
+ nk2 : int
44
+ The number of k-points in the second dimension of the k-space grid.
45
+ """
28
46
 
29
47
  nk1: int
30
48
  nk2: int
31
49
 
32
50
 
33
51
  class Parameters(BaseModel):
34
- """Class to hold the parameters for a calculation."""
52
+ """Class to hold the parameters for a calculation.
53
+
54
+ Attributes
55
+ ----------
56
+ control : Control
57
+ An instance of the `Control` class containing settings for the calculation.
58
+ model :
59
+ An instance of one of the Hamiltonian parameter classes, holding the specific parameters
60
+ of the selected Hamiltonian model.
61
+ k_points : KPoints
62
+ An instance of the `KPoints` class that specifies the number of k-points for the simulation.
63
+ """
35
64
 
36
65
  control: Control
37
66
  model: DressedGrapheneParameters | GrapheneParameters | OneBandParameters = Field(
@@ -18,13 +18,11 @@ Functions
18
18
  scatter_into_bz
19
19
  plot_bandstructure
20
20
  plot_superfluid_weight
21
- plot_quantum_metric
22
21
  """ # noqa: D205, D400
23
22
 
24
23
  from .plotting import (
25
24
  format_plot,
26
25
  plot_bandstructure,
27
- plot_quantum_metric,
28
26
  plot_superfluid_weight,
29
27
  scatter_into_bz,
30
28
  )
@@ -34,5 +32,4 @@ __all__ = [
34
32
  "format_plot",
35
33
  "plot_bandstructure",
36
34
  "plot_superfluid_weight",
37
- "plot_quantum_metric",
38
35
  ]
@@ -212,37 +212,3 @@ def plot_superfluid_weight(
212
212
  ax.set_ylabel(r"$D_S\ [t]$")
213
213
 
214
214
  return fig
215
-
216
-
217
- def plot_quantum_metric(
218
- x_data: npt.NDArray[np.float64],
219
- quantum_metric: npt.NDArray[np.float64],
220
- fig_in: matplotlib.figure.Figure | None = None,
221
- ax_in: matplotlib.axes.Axes | None = None,
222
- ) -> matplotlib.figure.Figure:
223
- """Plot quantum metric against some parameter.
224
-
225
- Parameters
226
- ----------
227
- x_data : :class:`numpy.ndarray`
228
- quantum_metric : :class:`numpy.ndarray`
229
- fig_in : :class:`matplotlib.figure.Figure`, optional
230
- ax_in : :class:`matplotlib.axes.Axes`, optional
231
-
232
- Returns
233
- -------
234
- :obj:`matplotlib.figure.Figure`
235
- Figure with the data plotted onto the axis.
236
-
237
- """
238
- if fig_in is None or ax_in is None:
239
- fig, ax = plt.subplots()
240
- else:
241
- fig, ax = fig_in, ax_in
242
-
243
- ax.plot(x_data, quantum_metric, "x--")
244
-
245
- ax = format_plot(ax)
246
- ax.set_ylabel(r"$M\ [t]$")
247
-
248
- return fig
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: quant-met
3
- Version: 0.0.8
3
+ Version: 0.0.10
4
4
  Summary: Calculate superconductivity in flat-band systems.
5
5
  Home-page: https://quant-met.tjarksievers.de
6
6
  Author: Tjark Sievers
@@ -0,0 +1,33 @@
1
+ quant_met/__init__.py,sha256=ZO1UFz1awUYTI7B9ZkBwucvDz7GMGXnLLUGnEwLBhkc,155
2
+ quant_met/cli/__init__.py,sha256=nGFXhK8zWyEKQtsQTyJWfEOLFOHTCjZnfEcrVb2dARc,254
3
+ quant_met/cli/main.py,sha256=VyOu4FhpDR_CsSDaFcY4FlYrRxnRRCBFpwhLLB2GP2Y,1729
4
+ quant_met/cli/scf.py,sha256=8Ph13lcJcRg5vhqT4Ugf0HJ9FSt6huK0oS4SvTPgnVw,2355
5
+ quant_met/geometry/__init__.py,sha256=5BLliTnMzlzPrjzmphQ_EpTE6f6dF-uXgQU_Qj8sBoI,592
6
+ quant_met/geometry/base_lattice.py,sha256=dUBk3167cppy5nUNSEbXq57rwgbVnIen20jC_vrhomA,2642
7
+ quant_met/geometry/bz_path.py,sha256=q_eNhKYjhKLeFNjio8BdKVsseO6slQKlwKKSQQYTVJQ,2497
8
+ quant_met/geometry/graphene.py,sha256=AIKI2ice7LiKk5LHS27w97FkUds0UFV7EVNML3W5D28,1623
9
+ quant_met/geometry/square.py,sha256=lAEJ2R_2VBBPI_Bc-x-KhPE5r8AGoY1RgAx8GdoqdNY,1561
10
+ quant_met/mean_field/__init__.py,sha256=JgF26LUDI6LqOZdws6uZnilqdrEhj_3ysq-zElsL4DU,645
11
+ quant_met/mean_field/_utils.py,sha256=7hr0DDSdIqjft5Jjluvbw_HGoNLWgYJTxyuPJJvhBnc,356
12
+ quant_met/mean_field/hamiltonians/__init__.py,sha256=kLe31GiWYvPshl2-tpjEz0AHct2S1AuwRakAK2XDNSg,681
13
+ quant_met/mean_field/hamiltonians/base_hamiltonian.py,sha256=_GZLmNAcRAu6NGCM8PnwacPV9AlOxrGLo0vdgrcoBvM,18295
14
+ quant_met/mean_field/hamiltonians/dressed_graphene.py,sha256=sTApzorTj0jeXdEzeDxNUxuvSWq44UtVPwDzRawbvXs,4035
15
+ quant_met/mean_field/hamiltonians/graphene.py,sha256=tnmaaBka3G_vAMrg8ZsVcNGYjPPMPB3Z3NQfTbGRJNM,3263
16
+ quant_met/mean_field/hamiltonians/one_band_tight_binding.py,sha256=SXHPoVd_zyevNvUvmHuK85cfs2Y-_8phBbE7qM62RIE,2499
17
+ quant_met/mean_field/hamiltonians/three_band_tight_binding.py,sha256=MuOxUTPPBENjKBotPVQH-8343y4dv73jtZXo-w8mJsA,3282
18
+ quant_met/mean_field/hamiltonians/two_band_tight_binding.py,sha256=Vk01wY1UP4V1yYHZ9RmlbB0cybPJjGlrBUkR8d3o3j8,2852
19
+ quant_met/mean_field/quantum_metric.py,sha256=jjttOnLKR18oqX5yweHdgn17nfJCFbp932lq3yRh1pE,2615
20
+ quant_met/mean_field/self_consistency.py,sha256=MNPDopLcPs8v77AQCJot54SIWVazqaMxVIc4w4JgS6w,2906
21
+ quant_met/mean_field/superfluid_weight.py,sha256=c7fNcq7JQQBpKt0R5JjkGlO-pAoznblPkA__5rNCyVw,4118
22
+ quant_met/parameters/__init__.py,sha256=Pt2iI2y0donTs3IMVo30pQdMFChSciqxhwD_Gs-zysQ,917
23
+ quant_met/parameters/hamiltonians.py,sha256=c-POY9q38CBMzEnlUzkx17uH4lGnFa8dbX4h-QOiS08,6115
24
+ quant_met/parameters/main.py,sha256=acLuOLn5KD9_h5cbnd5H3akkF9XwcwAhLqV7jYJh0OA,1932
25
+ quant_met/plotting/__init__.py,sha256=HEt2KKhUOR1he2cKL9GLfGfqN87Q6jl_AKylGC20U4g,544
26
+ quant_met/plotting/plotting.py,sha256=ueFKhGK2mo-_JKifhRlgT6WDuEbKSMwDaTNnl70tCZQ,6583
27
+ quant_met/utils.py,sha256=JG_tShSL1JIi-Fn-N6mVD6J0sl7Egf-zuHnOSEKu7VA,1666
28
+ quant_met-0.0.10.dist-info/LICENSE.txt,sha256=QO_duPQihSJlaxSLxPAXo52X3esROP5wBkhxqBd1Z4E,1104
29
+ quant_met-0.0.10.dist-info/LICENSES/MIT.txt,sha256=QO_duPQihSJlaxSLxPAXo52X3esROP5wBkhxqBd1Z4E,1104
30
+ quant_met-0.0.10.dist-info/METADATA,sha256=xSLhNGqt2f7KGpg-Yj74M_h6QpFYr3PDbv0YFwNt798,2954
31
+ quant_met-0.0.10.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
32
+ quant_met-0.0.10.dist-info/entry_points.txt,sha256=fuVnEk5wiqPMEhn-Cc7q0Hdk2s_OniOn0zfdFPicH4Y,47
33
+ quant_met-0.0.10.dist-info/RECORD,,
@@ -1,31 +0,0 @@
1
- quant_met/__init__.py,sha256=ZO1UFz1awUYTI7B9ZkBwucvDz7GMGXnLLUGnEwLBhkc,155
2
- quant_met/cli/__init__.py,sha256=If5Jdi7mG-5PbIyjQGxnt9o2bsY5VyE3qtdcO5yTGnQ,321
3
- quant_met/cli/main.py,sha256=EZTRRTfrN3z-srgbG2BoDg64iYBjzZLuuMtrxTdZU8s,698
4
- quant_met/cli/scf.py,sha256=x9qxjQizXAKH7217dBuHTlA26eGenzcC2LDpN1q7030,1435
5
- quant_met/geometry/__init__.py,sha256=uCLEDBrYuMUkEgJmPnLAvR2WlmvoM9X9_cV_Q2zMzoA,620
6
- quant_met/geometry/base_lattice.py,sha256=QVHuZVy6bOvBSITY_mKhr7hYW1jHJ5UAm3sMCFClYZ0,2276
7
- quant_met/geometry/bz_path.py,sha256=q_eNhKYjhKLeFNjio8BdKVsseO6slQKlwKKSQQYTVJQ,2497
8
- quant_met/geometry/graphene.py,sha256=86C1LiYFunoSGSS1_A79dPq24FiiOxpHvOLUVrdRq_E,1271
9
- quant_met/geometry/square.py,sha256=1fSrHab07uB6ildNzlbTwINJvPa5C2Az0B0uuOVJmMc,1216
10
- quant_met/mean_field/__init__.py,sha256=yH_UovKDaP5c06cb1uWPtvIO2WQ76pi6ZTsNBzE8oso,793
11
- quant_met/mean_field/_utils.py,sha256=plkx6eYjyYV3CT3BWwlulqW7L-Q0t1TzZTLR4k7u0dg,666
12
- quant_met/mean_field/hamiltonians/__init__.py,sha256=FcqhV5fG_gzngVuiVfBucripdbNTzOxPRafu7sZ4ueA,644
13
- quant_met/mean_field/hamiltonians/base_hamiltonian.py,sha256=fL1dl1ZX3I_4gzARiQl5o2eCTIr-udRA23qZo4VWq0k,13622
14
- quant_met/mean_field/hamiltonians/dressed_graphene.py,sha256=zzHRVmp8749I2ll5N-wjks8l5dJLdtmhWR7smR7ezM0,6542
15
- quant_met/mean_field/hamiltonians/graphene.py,sha256=Zg_S9xTMYi_7v_6PBK7NUdiwgmyqyCPElUfezuiozm0,5611
16
- quant_met/mean_field/hamiltonians/one_band_tight_binding.py,sha256=kBYqthKUPby754PhOwf0mzHLTHNVbdKZbtJhvp2yc3E,4766
17
- quant_met/mean_field/quantum_metric.py,sha256=5FC3NU_ObbHlUUZMCAP1DyZuyifgnEr3s2cSH6cA8-8,3903
18
- quant_met/mean_field/self_consistency.py,sha256=xkZIWkOopekhDufJnSGK6ARsro6XaIuVhhrnJmb6sk8,1291
19
- quant_met/mean_field/superfluid_weight.py,sha256=m_x2uVYcEVdbItwEV3-Ml80Qad7X-YWLgb38fJKLJsY,4004
20
- quant_met/parameters/__init__.py,sha256=DvzEtTAnHcRcJufZV7bwYGZUeA-0Q2B8N9syGA9uNRM,552
21
- quant_met/parameters/hamiltonians.py,sha256=Q5uGTzxM8kIdUnRuIpEJNPmSHF27Zj7LBV3kgKd5dP4,1213
22
- quant_met/parameters/main.py,sha256=yrDME_KfDZ_9xf3ofTt7V8kw_8qbgD9EfVlxLcymcNE,899
23
- quant_met/plotting/__init__.py,sha256=s-DS22impzozKiS7p-v3yCmeccDQfXmBbtPiYMKwH0Y,620
24
- quant_met/plotting/plotting.py,sha256=_SqL8GrDqlBtccHnUWpZPqdSJy0Yd_4dhFdUOxOzPpY,7447
25
- quant_met/utils.py,sha256=JG_tShSL1JIi-Fn-N6mVD6J0sl7Egf-zuHnOSEKu7VA,1666
26
- quant_met-0.0.8.dist-info/LICENSE.txt,sha256=QO_duPQihSJlaxSLxPAXo52X3esROP5wBkhxqBd1Z4E,1104
27
- quant_met-0.0.8.dist-info/LICENSES/MIT.txt,sha256=QO_duPQihSJlaxSLxPAXo52X3esROP5wBkhxqBd1Z4E,1104
28
- quant_met-0.0.8.dist-info/METADATA,sha256=vh99nVcyAhUECV32kkXxfDjne2LvBufs6ekW60m8pYs,2953
29
- quant_met-0.0.8.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
30
- quant_met-0.0.8.dist-info/entry_points.txt,sha256=fuVnEk5wiqPMEhn-Cc7q0Hdk2s_OniOn0zfdFPicH4Y,47
31
- quant_met-0.0.8.dist-info/RECORD,,