Skip to content
Snippets Groups Projects
Commit ed382724 authored by Johanna Zijderveld's avatar Johanna Zijderveld
Browse files

fix tests by fixing imports of generate_guess

parent a7520f38
No related branches found
No related tags found
1 merge request!4Interface refactoring
...@@ -26,37 +26,6 @@ def density_matrix(kham, fermi_energy): ...@@ -26,37 +26,6 @@ def density_matrix(kham, fermi_energy):
return density_matrix_kgrid return density_matrix_kgrid
def fermi_on_grid(kham, filling):
"""
Compute the Fermi energy on a grid of k-points.
Parameters
----------
hkfunc : function
Function that returns the Hamiltonian at a given k-point.
nk : int
Number of k-points in the grid.
Returns
-------
fermi_energy : float
Fermi energy
"""
vals = np.linalg.eigvalsh(kham)
norbs = vals.shape[-1]
vals_flat = np.sort(vals.flatten())
ne = len(vals_flat)
ifermi = int(round(ne * filling / norbs))
if ifermi >= ne:
return vals_flat[-1]
elif ifermi == 0:
return vals_flat[0]
else:
fermi = (vals_flat[ifermi - 1] + vals_flat[ifermi]) / 2
return fermi
def meanfield(density_matrix_tb, h_int, n=2): def meanfield(density_matrix_tb, h_int, n=2):
""" """
Compute the mean-field in k-space. Compute the mean-field in k-space.
...@@ -95,3 +64,34 @@ def meanfield(density_matrix_tb, h_int, n=2): ...@@ -95,3 +64,34 @@ def meanfield(density_matrix_tb, h_int, n=2):
for vec in frozenset(h_int) for vec in frozenset(h_int)
} }
return add_tb(direct, exchange) return add_tb(direct, exchange)
def fermi_on_grid(kham, filling):
"""
Compute the Fermi energy on a grid of k-points.
Parameters
----------
hkfunc : function
Function that returns the Hamiltonian at a given k-point.
nk : int
Number of k-points in the grid.
Returns
-------
fermi_energy : float
Fermi energy
"""
vals = np.linalg.eigvalsh(kham)
norbs = vals.shape[-1]
vals_flat = np.sort(vals.flatten())
ne = len(vals_flat)
ifermi = int(round(ne * filling / norbs))
if ifermi >= ne:
return vals_flat[-1]
elif ifermi == 0:
return vals_flat[0]
else:
fermi = (vals_flat[ifermi - 1] + vals_flat[ifermi]) / 2
return fermi
# %% # %%
from codes.params.rparams import mf_to_rparams, rparams_to_mf from codes.params.rparams import mf_to_rparams, rparams_to_mf
from codes.kwant_helper.utils import generate_guess from codes.tb.utils import generate_guess
from codes.tb.tb import compare_dicts from codes.tb.tb import compare_dicts
import pytest import pytest
......
# %% # %%
import numpy as np import numpy as np
from codes.tb.tb import compare_dicts from codes.tb.tb import compare_dicts
from codes.kwant_helper import utils
import itertools as it import itertools as it
from codes.tb.utils import generate_guess
from codes.tb.transforms import kfunc_to_tb, tb_to_kfunc, tb_to_kham, tb_to_khamvector from codes.tb.transforms import kfunc_to_tb, tb_to_kfunc, tb_to_kham, tb_to_khamvector
import pytest import pytest
...@@ -39,7 +39,7 @@ def test_tbkham_transform(): ...@@ -39,7 +39,7 @@ def test_tbkham_transform():
(-1, -1), (-1, -1),
) )
ndof = 10 ndof = 10
h_0 = utils.generate_guess(vectors, ndof) h_0 = generate_guess(vectors, ndof)
assert np.allclose( assert np.allclose(
tb_to_kham(h_0, nk=nk, ndim=2), tb_to_khamvector(h_0, nk=nk, ndim=2) tb_to_kham(h_0, nk=nk, ndim=2), tb_to_khamvector(h_0, nk=nk, ndim=2)
......
...@@ -4,7 +4,7 @@ from codes.model import Model ...@@ -4,7 +4,7 @@ from codes.model import Model
from codes.solvers import solver from codes.solvers import solver
from codes import kwant_examples from codes import kwant_examples
from codes.kwant_helper import utils from codes.kwant_helper import utils
from codes.tb.utils import compute_gap from codes.tb.utils import compute_gap, generate_guess
from codes.tb.tb import add_tb from codes.tb.tb import add_tb
import pytest import pytest
...@@ -46,7 +46,7 @@ def gap_prediction(U, V): ...@@ -46,7 +46,7 @@ def gap_prediction(U, V):
nk = 20 nk = 20
h_int = utils.builder_to_tb(int_builder, params) h_int = utils.builder_to_tb(int_builder, params)
guess = utils.generate_guess(frozenset(h_int), len(list(h_0.values())[0])) guess = generate_guess(frozenset(h_int), len(list(h_0.values())[0]))
model = Model(h_0, h_int, filling) model = Model(h_0, h_int, filling)
mf_sol = solver(model, guess, nk=nk, optimizer_kwargs={"verbose": True, "M": 0}) mf_sol = solver(model, guess, nk=nk, optimizer_kwargs={"verbose": True, "M": 0})
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment