Skip to content
Snippets Groups Projects
Commit e3f1ee69 authored by Antonio Manesco's avatar Antonio Manesco
Browse files

remove line label

parent fa38b895
No related branches found
No related tags found
1 merge request!3create solvers and interface modules
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
import numpy as np import numpy as np
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
from codes import utils, model, interface, solvers, hf from codes import utils, model, interface, solvers, hf
``` ```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
U0 = 1 U0 = 1
nk = 100 nk = 100
filling = 2 filling = 2
hopp = np.kron(np.array([[0, 1], [0, 0]]), np.eye(2)) hopp = np.kron(np.array([[0, 1], [0, 0]]), np.eye(2))
tb_model = {(0,): hopp + hopp.T.conj(), (1,): hopp, (-1,): hopp.T.conj()} tb_model = {(0,): hopp + hopp.T.conj(), (1,): hopp, (-1,): hopp.T.conj()}
def model_U(U): def model_U(U):
int_model = { int_model = {
(0,): U * np.kron(np.ones((2, 2)), np.eye(2)), (0,): U * np.kron(np.ones((2, 2)), np.eye(2)),
} }
return model.Model(tb_model=tb_model, int_model=int_model) return model.Model(tb_model=tb_model, int_model=int_model)
model0 = model_U(U0) model0 = model_U(U0)
model0.vectors = [*model0.int_model.keys()] model0.vectors = [*model0.int_model.keys()]
model0.random_guess(model0.vectors) model0.random_guess(model0.vectors)
model0.kgrid_evaluation(nk=100) model0.kgrid_evaluation(nk=100)
``` ```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
hamiltonians_0 = utils.kgrid_hamiltonian( hamiltonians_0 = utils.kgrid_hamiltonian(
nk=nk, hk=utils.model2hk(tb_model=tb_model), dim=1 nk=nk, hk=utils.model2hk(tb_model=tb_model), dim=1
) )
def groundstate(U): def groundstate(U):
tb_mf_k = interface.find_groundstate_ham( tb_mf_k = interface.find_groundstate_ham(
model_U(U), model_U(U),
filling=filling, filling=filling,
nk=nk, nk=nk,
solver=solvers.rspace_solver, solver=solvers.rspace_solver,
cost_function=solvers.real_space_cost, cost_function=solvers.real_space_cost,
return_kspace=True, return_kspace=True,
) )
vals, vecs = np.linalg.eigh(tb_mf_k) vals, vecs = np.linalg.eigh(tb_mf_k)
EF = utils.get_fermi_energy(vals, filling) EF = utils.get_fermi_energy(vals, filling)
densityMatrix = hf.density_matrix(vals, vecs, EF) densityMatrix = hf.density_matrix(vals, vecs, EF)
return tb_mf_k - EF * np.eye(hamiltonians_0.shape[-1]), densityMatrix return tb_mf_k - EF * np.eye(hamiltonians_0.shape[-1]), densityMatrix
tb_mf0, densityMatrix0 = groundstate(U0) tb_mf0, densityMatrix0 = groundstate(U0)
mf0 = tb_mf0 - hamiltonians_0 mf0 = tb_mf0 - hamiltonians_0
@np.vectorize @np.vectorize
def mfRescaled(alpha, mf0=mf0): def mfRescaled(alpha, mf0=mf0):
hamiltonian = hamiltonians_0 + mf0 * alpha hamiltonian = hamiltonians_0 + mf0 * alpha
vals, vecs = np.linalg.eigh(hamiltonian) vals, vecs = np.linalg.eigh(hamiltonian)
EF = utils.get_fermi_energy(vals, filling) EF = utils.get_fermi_energy(vals, filling)
densityMatrix = hf.density_matrix(vals, vecs, EF) densityMatrix = hf.density_matrix(vals, vecs, EF)
return hf.total_energy(tb_mf0, densityMatrix) return hf.total_energy(tb_mf0, densityMatrix)
``` ```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
alphas = np.linspace(0.5, 1.5, 21) alphas = np.linspace(0.5, 1.5, 21)
plt.plot(alphas, mfRescaled(alphas), label="MF groundstate from U=1") plt.plot(alphas, mfRescaled(alphas))
plt.axvline(x=1, c="k", ls="--") plt.axvline(x=1, c="k", ls="--")
plt.ylabel("Total Energy") plt.ylabel("Total Energy")
plt.xlabel(r"$\alpha$") plt.xlabel(r"$\alpha$")
plt.legend() plt.legend()
``` ```
%% Output %% Output
<matplotlib.legend.Legend at 0x123524050> <matplotlib.legend.Legend at 0x123524050>
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
``` ```
......
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