Postprocessing#
# Enable Jupyter Widget support for matplotlib.
%matplotlib widget
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
Find QMC data#
The variable dirs
is a list of all directories containing an ALF results file data.h5
.
from py_alf.utils import find_sim_dirs
dirs = find_sim_dirs()
dirs
['./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=10_L2=10_beta=40.0_xi=0.25_h=2.5/Temp_0',
'./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=10_L2=10_beta=40.0_xi=0.25_h=2.5/Temp_1',
'./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=10_L2=10_beta=40.0_xi=0.25_h=2.5/Temp_2',
'./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=10_L2=10_beta=40.0_xi=0.25_h=2.5/Temp_3',
'./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=4_L2=4_beta=16.0_xi=0.25_h=2.5/Temp_0',
'./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=4_L2=4_beta=16.0_xi=0.25_h=2.5/Temp_1',
'./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=4_L2=4_beta=16.0_xi=0.25_h=2.5/Temp_2',
'./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=4_L2=4_beta=16.0_xi=0.25_h=2.5/Temp_3',
'./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=6_L2=6_beta=24.0_xi=0.25_h=2.5/Temp_0',
'./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=6_L2=6_beta=24.0_xi=0.25_h=2.5/Temp_1',
'./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=6_L2=6_beta=24.0_xi=0.25_h=2.5/Temp_2',
'./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=6_L2=6_beta=24.0_xi=0.25_h=2.5/Temp_3',
'./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=8_L2=8_beta=32.0_xi=0.25_h=2.5/Temp_0',
'./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=8_L2=8_beta=32.0_xi=0.25_h=2.5/Temp_1',
'./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=8_L2=8_beta=32.0_xi=0.25_h=2.5/Temp_2',
'./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=8_L2=8_beta=32.0_xi=0.25_h=2.5/Temp_3']
Custom observables#
Defining some observables derived from measurements done during the simulations (cf. Section 4.2.3.2).
Correlation ratio \(1 - \frac{O(\boldsymbol{k}+\boldsymbol{\delta})}{O(\boldsymbol{k})}\). RG-invariant quantity
def R_k(obs, back, sign, N_orb, N_tau, dtau, latt,
ks=[(0., 0.)], mat=None, NNs=[(1, 0), (0, 1), (-1, 0), (0, -1)]):
"""RG-invariant quantity derived from a correlation function.
obs.shape = (N_orb, N_orb, N_tau, latt.N)
back.shape = (N_orb,)
"""
if mat is None:
mat = np.identity(N_orb, dtype=np.double)
out = 0.
for k in ks:
n = latt.k_to_n(k)
J1 = (obs[..., n].sum(axis=-1) * mat).sum()
J2 = 0
for NN in NNs:
i = latt.nnlistk[n, NN[0], NN[1]]
J2 += (obs[..., i].sum(axis=-1) * mat).sum() / len(NNs)
out += (1 - J2/J1)
return out / len(ks)
Binder cumulant \(\left(3 - \frac{\langle s^4 \rangle}{\langle s^2 \rangle^2}\right)/2\). RG-invariant quantity
def binder(obs, sign, N_obs):
return (3 - obs[2] / obs[1]**2 * sign)/2
Susceptibility \(\int_{0}^{\beta}\!\text{d}\tau\, C\left(\boldsymbol{k},\tau\right)\)
def susceptibility(obs, back, sign, N_orb, N_tau, dtau, latt,
ks=[[0., 0.]]):
"""Susceptibility of a time-displaced correlation function.
obs.shape = (N_orb, N_orb, N_tau, latt.N)
back.shape = (N_orb,)
"""
out = 0.
for k in ks:
n = latt.k_to_n(k)
out += dtau*obs[..., n].trace().sum() / sign
return out / len(ks)
Fermionic single particle gap determined through a quick and dirty fit of the time-displaced Green function (cf. Section 2.7.2.1).
from scipy.optimize import curve_fit
def fit_gap_lazy(obs, back, sign, N_orb, N_tau, dtau, latt):
"""Lazily fit Green function to determin gap.
obs.shape = (N_orb, N_orb, N_tau, latt.N)
"""
i1 = (2*N_tau)//24
i2 = (4*N_tau)//24
green = obs[0, 0, i1:i2, :]/sign
def func(x, a, b):
return a*np.exp(-b*x)
taus = np.arange(0., N_tau*dtau, dtau)
res = np.empty((latt.N,), dtype=np.cdouble)
for n in range(latt.N):
popt, pcov = curve_fit(func, taus[i1:i2], green[:, n])
res[n] = popt[1]
return res
custom_obs = {}
# Structure factor correlation ratio
custom_obs['R_S']= {
'needs': ['IsingZ_eq'],
'function': R_k,
'kwargs': {}
}
# Susceptibility correlation ratio
custom_obs['R_chi']= {
'needs': ['IsingZT_tau'],
'function': R_k,
'kwargs': {}
}
# Binder cumulant
custom_obs['B']= {
'needs': ['m_scal'],
'function': binder,
'kwargs': {}
}
# Susceptibility
custom_obs['chi']= {
'needs': ['IsingZT_tau'],
'function': susceptibility,
'kwargs': {}
}
# Susceptibility
custom_obs['gap_lazy']= {
'needs': ['Green_tau'],
'function': fit_gap_lazy,
'kwargs': {}
}
Check warmup and autocorrelation times#
C.f. Section 4.2.3.3.
from py_alf import check_warmup, check_rebin
check_warmup(dirs, ['m_scal', 'ising_x_scal', 'chi', 'R_S', 'B', 'R_chi'],
custom_obs=custom_obs, gui='ipy')
check_rebin(dirs, ['m_scal', 'ising_x_scal', 'chi', 'R_S', 'B', 'R_chi'],
custom_obs=custom_obs, gui='ipy')
Error analysis#
The analysis results are saved in each simulation directory, both in plain text in the folder res
and as a pickled
Python dictionary in the file res.pkl
.
Due to its length, the text printed out during the analysis is hidden, but can be viewed in the website version of this document.
from py_alf.analysis import analysis
for directory in dirs:
analysis(directory, custom_obs=custom_obs, always=True)
Show code cell output
### Analyzing ./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=10_L2=10_beta=40.0_xi=0.25_h=2.5/Temp_0 ###
/home/jonas/dissertation/jb/appendix_nematic/pyalf
Custom observables:
custom R_S ['IsingZ_eq']
custom R_chi ['IsingZT_tau']
custom B ['m_scal']
custom chi ['IsingZT_tau']
custom gap_lazy ['Green_tau']
Scalar observables:
Acc_Temp_scal
Kin_Pot_E_scal
Part_scal
chi2_scal
ising_x_alt_scal
ising_x_scal
ising_z_alt_scal
ising_z_scal
m_alt_scal
m_scal
Histogram observables:
B_hist
X_hist
m_hist
Equal time observables:
Green_eq
IsingX_eq
IsingZ_eq
Time displaced observables:
Green_tau
IsingXT_tau
IsingZT_tau
### Analyzing ./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=10_L2=10_beta=40.0_xi=0.25_h=2.5/Temp_1 ###
/home/jonas/dissertation/jb/appendix_nematic/pyalf
Custom observables:
custom R_S ['IsingZ_eq']
custom R_chi ['IsingZT_tau']
custom B ['m_scal']
custom chi ['IsingZT_tau']
custom gap_lazy ['Green_tau']
Scalar observables:
Acc_Temp_scal
Kin_Pot_E_scal
Part_scal
chi2_scal
ising_x_alt_scal
ising_x_scal
ising_z_alt_scal
ising_z_scal
m_alt_scal
m_scal
Histogram observables:
B_hist
X_hist
m_hist
Equal time observables:
Green_eq
IsingX_eq
IsingZ_eq
Time displaced observables:
Green_tau
IsingXT_tau
IsingZT_tau
### Analyzing ./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=10_L2=10_beta=40.0_xi=0.25_h=2.5/Temp_2 ###
/home/jonas/dissertation/jb/appendix_nematic/pyalf
Custom observables:
custom R_S ['IsingZ_eq']
custom R_chi ['IsingZT_tau']
custom B ['m_scal']
custom chi ['IsingZT_tau']
custom gap_lazy ['Green_tau']
Scalar observables:
Acc_Temp_scal
Kin_Pot_E_scal
Part_scal
chi2_scal
ising_x_alt_scal
ising_x_scal
ising_z_alt_scal
ising_z_scal
m_alt_scal
m_scal
Histogram observables:
B_hist
X_hist
m_hist
Equal time observables:
Green_eq
IsingX_eq
IsingZ_eq
Time displaced observables:
Green_tau
IsingXT_tau
IsingZT_tau
### Analyzing ./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=10_L2=10_beta=40.0_xi=0.25_h=2.5/Temp_3 ###
/home/jonas/dissertation/jb/appendix_nematic/pyalf
Custom observables:
custom R_S ['IsingZ_eq']
custom R_chi ['IsingZT_tau']
custom B ['m_scal']
custom chi ['IsingZT_tau']
custom gap_lazy ['Green_tau']
Scalar observables:
Acc_Temp_scal
Kin_Pot_E_scal
Part_scal
chi2_scal
ising_x_alt_scal
ising_x_scal
ising_z_alt_scal
ising_z_scal
m_alt_scal
m_scal
Histogram observables:
B_hist
X_hist
m_hist
Equal time observables:
Green_eq
IsingX_eq
IsingZ_eq
Time displaced observables:
Green_tau
IsingXT_tau
IsingZT_tau
### Analyzing ./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=4_L2=4_beta=16.0_xi=0.25_h=2.5/Temp_0 ###
/home/jonas/dissertation/jb/appendix_nematic/pyalf
Custom observables:
custom R_S ['IsingZ_eq']
custom R_chi ['IsingZT_tau']
custom B ['m_scal']
custom chi ['IsingZT_tau']
custom gap_lazy ['Green_tau']
Scalar observables:
Acc_Temp_scal
Kin_Pot_E_scal
Part_scal
chi2_scal
ising_x_alt_scal
ising_x_scal
ising_z_alt_scal
ising_z_scal
m_alt_scal
m_scal
Histogram observables:
B_hist
X_hist
m_hist
Equal time observables:
Green_eq
IsingX_eq
IsingZ_eq
Time displaced observables:
Green_tau
IsingXT_tau
IsingZT_tau
### Analyzing ./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=4_L2=4_beta=16.0_xi=0.25_h=2.5/Temp_1 ###
/home/jonas/dissertation/jb/appendix_nematic/pyalf
Custom observables:
custom R_S ['IsingZ_eq']
custom R_chi ['IsingZT_tau']
custom B ['m_scal']
custom chi ['IsingZT_tau']
custom gap_lazy ['Green_tau']
Scalar observables:
Acc_Temp_scal
Kin_Pot_E_scal
Part_scal
chi2_scal
ising_x_alt_scal
ising_x_scal
ising_z_alt_scal
ising_z_scal
m_alt_scal
m_scal
Histogram observables:
B_hist
X_hist
m_hist
Equal time observables:
Green_eq
IsingX_eq
IsingZ_eq
Time displaced observables:
Green_tau
IsingXT_tau
IsingZT_tau
### Analyzing ./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=4_L2=4_beta=16.0_xi=0.25_h=2.5/Temp_2 ###
/home/jonas/dissertation/jb/appendix_nematic/pyalf
Custom observables:
custom R_S ['IsingZ_eq']
custom R_chi ['IsingZT_tau']
custom B ['m_scal']
custom chi ['IsingZT_tau']
custom gap_lazy ['Green_tau']
Scalar observables:
Acc_Temp_scal
Kin_Pot_E_scal
Part_scal
chi2_scal
ising_x_alt_scal
ising_x_scal
ising_z_alt_scal
ising_z_scal
m_alt_scal
m_scal
Histogram observables:
B_hist
X_hist
m_hist
Equal time observables:
Green_eq
IsingX_eq
IsingZ_eq
Time displaced observables:
Green_tau
IsingXT_tau
IsingZT_tau
### Analyzing ./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=4_L2=4_beta=16.0_xi=0.25_h=2.5/Temp_3 ###
/home/jonas/dissertation/jb/appendix_nematic/pyalf
Custom observables:
custom R_S ['IsingZ_eq']
custom R_chi ['IsingZT_tau']
custom B ['m_scal']
custom chi ['IsingZT_tau']
custom gap_lazy ['Green_tau']
Scalar observables:
Acc_Temp_scal
Kin_Pot_E_scal
Part_scal
chi2_scal
ising_x_alt_scal
ising_x_scal
ising_z_alt_scal
ising_z_scal
m_alt_scal
m_scal
Histogram observables:
B_hist
X_hist
m_hist
Equal time observables:
Green_eq
IsingX_eq
IsingZ_eq
Time displaced observables:
Green_tau
IsingXT_tau
IsingZT_tau
### Analyzing ./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=6_L2=6_beta=24.0_xi=0.25_h=2.5/Temp_0 ###
/home/jonas/dissertation/jb/appendix_nematic/pyalf
Custom observables:
custom R_S ['IsingZ_eq']
custom R_chi ['IsingZT_tau']
custom B ['m_scal']
custom chi ['IsingZT_tau']
custom gap_lazy ['Green_tau']
Scalar observables:
Acc_Temp_scal
Kin_Pot_E_scal
Part_scal
chi2_scal
ising_x_alt_scal
ising_x_scal
ising_z_alt_scal
ising_z_scal
m_alt_scal
m_scal
Histogram observables:
B_hist
X_hist
m_hist
Equal time observables:
Green_eq
IsingX_eq
IsingZ_eq
Time displaced observables:
Green_tau
IsingXT_tau
IsingZT_tau
### Analyzing ./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=6_L2=6_beta=24.0_xi=0.25_h=2.5/Temp_1 ###
/home/jonas/dissertation/jb/appendix_nematic/pyalf
Custom observables:
custom R_S ['IsingZ_eq']
custom R_chi ['IsingZT_tau']
custom B ['m_scal']
custom chi ['IsingZT_tau']
custom gap_lazy ['Green_tau']
Scalar observables:
Acc_Temp_scal
Kin_Pot_E_scal
Part_scal
chi2_scal
ising_x_alt_scal
ising_x_scal
ising_z_alt_scal
ising_z_scal
m_alt_scal
m_scal
Histogram observables:
B_hist
X_hist
m_hist
Equal time observables:
Green_eq
IsingX_eq
IsingZ_eq
Time displaced observables:
Green_tau
IsingXT_tau
IsingZT_tau
### Analyzing ./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=6_L2=6_beta=24.0_xi=0.25_h=2.5/Temp_2 ###
/home/jonas/dissertation/jb/appendix_nematic/pyalf
Custom observables:
custom R_S ['IsingZ_eq']
custom R_chi ['IsingZT_tau']
custom B ['m_scal']
custom chi ['IsingZT_tau']
custom gap_lazy ['Green_tau']
Scalar observables:
Acc_Temp_scal
Kin_Pot_E_scal
Part_scal
chi2_scal
ising_x_alt_scal
ising_x_scal
ising_z_alt_scal
ising_z_scal
m_alt_scal
m_scal
Histogram observables:
B_hist
X_hist
m_hist
Equal time observables:
Green_eq
IsingX_eq
IsingZ_eq
Time displaced observables:
Green_tau
IsingXT_tau
IsingZT_tau
### Analyzing ./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=6_L2=6_beta=24.0_xi=0.25_h=2.5/Temp_3 ###
/home/jonas/dissertation/jb/appendix_nematic/pyalf
Custom observables:
custom R_S ['IsingZ_eq']
custom R_chi ['IsingZT_tau']
custom B ['m_scal']
custom chi ['IsingZT_tau']
custom gap_lazy ['Green_tau']
Scalar observables:
Acc_Temp_scal
Kin_Pot_E_scal
Part_scal
chi2_scal
ising_x_alt_scal
ising_x_scal
ising_z_alt_scal
ising_z_scal
m_alt_scal
m_scal
Histogram observables:
B_hist
X_hist
m_hist
Equal time observables:
Green_eq
IsingX_eq
IsingZ_eq
Time displaced observables:
Green_tau
IsingXT_tau
IsingZT_tau
### Analyzing ./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=8_L2=8_beta=32.0_xi=0.25_h=2.5/Temp_0 ###
/home/jonas/dissertation/jb/appendix_nematic/pyalf
Custom observables:
custom R_S ['IsingZ_eq']
custom R_chi ['IsingZT_tau']
custom B ['m_scal']
custom chi ['IsingZT_tau']
custom gap_lazy ['Green_tau']
Scalar observables:
Acc_Temp_scal
Kin_Pot_E_scal
Part_scal
chi2_scal
ising_x_alt_scal
ising_x_scal
ising_z_alt_scal
ising_z_scal
m_alt_scal
m_scal
Histogram observables:
B_hist
X_hist
m_hist
Equal time observables:
Green_eq
IsingX_eq
IsingZ_eq
Time displaced observables:
Green_tau
IsingXT_tau
IsingZT_tau
### Analyzing ./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=8_L2=8_beta=32.0_xi=0.25_h=2.5/Temp_1 ###
/home/jonas/dissertation/jb/appendix_nematic/pyalf
Custom observables:
custom R_S ['IsingZ_eq']
custom R_chi ['IsingZT_tau']
custom B ['m_scal']
custom chi ['IsingZT_tau']
custom gap_lazy ['Green_tau']
Scalar observables:
Acc_Temp_scal
Kin_Pot_E_scal
Part_scal
chi2_scal
ising_x_alt_scal
ising_x_scal
ising_z_alt_scal
ising_z_scal
m_alt_scal
m_scal
Histogram observables:
B_hist
X_hist
m_hist
Equal time observables:
Green_eq
IsingX_eq
IsingZ_eq
Time displaced observables:
Green_tau
IsingXT_tau
IsingZT_tau
### Analyzing ./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=8_L2=8_beta=32.0_xi=0.25_h=2.5/Temp_2 ###
/home/jonas/dissertation/jb/appendix_nematic/pyalf
Custom observables:
custom R_S ['IsingZ_eq']
custom R_chi ['IsingZT_tau']
custom B ['m_scal']
custom chi ['IsingZT_tau']
custom gap_lazy ['Green_tau']
Scalar observables:
Acc_Temp_scal
Kin_Pot_E_scal
Part_scal
chi2_scal
ising_x_alt_scal
ising_x_scal
ising_z_alt_scal
ising_z_scal
m_alt_scal
m_scal
Histogram observables:
B_hist
X_hist
m_hist
Equal time observables:
Green_eq
IsingX_eq
IsingZ_eq
Time displaced observables:
Green_tau
IsingXT_tau
IsingZT_tau
### Analyzing ./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=8_L2=8_beta=32.0_xi=0.25_h=2.5/Temp_3 ###
/home/jonas/dissertation/jb/appendix_nematic/pyalf
Custom observables:
custom R_S ['IsingZ_eq']
custom R_chi ['IsingZT_tau']
custom B ['m_scal']
custom chi ['IsingZT_tau']
custom gap_lazy ['Green_tau']
Scalar observables:
Acc_Temp_scal
Kin_Pot_E_scal
Part_scal
chi2_scal
ising_x_alt_scal
ising_x_scal
ising_z_alt_scal
ising_z_scal
m_alt_scal
m_scal
Histogram observables:
B_hist
X_hist
m_hist
Equal time observables:
Green_eq
IsingX_eq
IsingZ_eq
Time displaced observables:
Green_tau
IsingXT_tau
IsingZT_tau
Read analysis results#
Read all the res.pkl
files and combine them in a single pandas DataFrame
, called res
.
from py_alf.ana import load_res
res = load_res(dirs)
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=10_L2=10_beta=40.0_xi=0.25_h=2.5/Temp_0
No orbital locations saved.
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=10_L2=10_beta=40.0_xi=0.25_h=2.5/Temp_1
No orbital locations saved.
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=10_L2=10_beta=40.0_xi=0.25_h=2.5/Temp_2
No orbital locations saved.
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=10_L2=10_beta=40.0_xi=0.25_h=2.5/Temp_3
No orbital locations saved.
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=4_L2=4_beta=16.0_xi=0.25_h=2.5/Temp_0
No orbital locations saved.
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=4_L2=4_beta=16.0_xi=0.25_h=2.5/Temp_1
No orbital locations saved.
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=4_L2=4_beta=16.0_xi=0.25_h=2.5/Temp_2
No orbital locations saved.
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=4_L2=4_beta=16.0_xi=0.25_h=2.5/Temp_3
No orbital locations saved.
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=6_L2=6_beta=24.0_xi=0.25_h=2.5/Temp_0
No orbital locations saved.
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=6_L2=6_beta=24.0_xi=0.25_h=2.5/Temp_1
No orbital locations saved.
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=6_L2=6_beta=24.0_xi=0.25_h=2.5/Temp_2
No orbital locations saved.
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=6_L2=6_beta=24.0_xi=0.25_h=2.5/Temp_3
No orbital locations saved.
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=8_L2=8_beta=32.0_xi=0.25_h=2.5/Temp_0
No orbital locations saved.
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=8_L2=8_beta=32.0_xi=0.25_h=2.5/Temp_1
No orbital locations saved.
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=8_L2=8_beta=32.0_xi=0.25_h=2.5/Temp_2
No orbital locations saved.
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=8_L2=8_beta=32.0_xi=0.25_h=2.5/Temp_3
No orbital locations saved.
The printout of the following command is again hidden, but can be viewed in the website version of this document.
res
Show code cell output
beta | dtau | global_h | global_j | global_type | ham_chem | ham_h | ham_j | ham_t | ham_xi | ... | IsingXT_tauK_err | IsingXT_tauR | IsingXT_tauR_err | IsingXT_tau_lattice | IsingZT_tauK | IsingZT_tauK_err | IsingZT_tauR | IsingZT_tauR_err | IsingZT_tau_lattice | lattice | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=10_L2=10_beta=40.0_xi=0.25_h=2.5/Temp_0 | 40.0 | 0.1 | 3.0 | 1.0 | b'' | 0.0 | 2.5 | 1.0 | 1.0 | 0.25 | ... | [[0.00846007502342428, 0.011361413792811912, 0... | [[-0.8759651432413821, -0.8773726147907193, -0... | [[0.0021307557348112893, 0.002103012359563489,... | {'L1': [7.071067811865475, 7.071067811865475],... | [[0.3279964514764253, 0.3434765067595519, 0.37... | [[0.0008932302580056016, 0.0011906138182334284... | [[0.5773744618389179, 0.5776504791744279, 0.57... | [[0.0005925670020223004, 0.000599508043614475,... | {'L1': [7.071067811865475, 7.071067811865475],... | {'L1': [7.071067811865475, 7.071067811865475],... |
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=10_L2=10_beta=40.0_xi=0.25_h=2.5/Temp_1 | 40.0 | 0.1 | 3.0 | 1.0 | b'' | 0.0 | 3.0 | 1.0 | 1.0 | 0.25 | ... | [[0.010440213255229968, 0.00971142615215967, 0... | [[-1.3122546627824234, -1.3081659457089554, -1... | [[0.0024669838243135925, 0.0022471387853431036... | {'L1': [7.071067811865475, 7.071067811865475],... | [[0.4648468734781728, 0.4990409266176215, 0.55... | [[0.0022719373940343016, 0.002024507665608468,... | [[0.3164376602178704, 0.3172661300913677, 0.31... | [[0.0007501647357670305, 0.0009271215478391133... | {'L1': [7.071067811865475, 7.071067811865475],... | {'L1': [7.071067811865475, 7.071067811865475],... |
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=10_L2=10_beta=40.0_xi=0.25_h=2.5/Temp_2 | 40.0 | 0.1 | 3.0 | 1.0 | b'' | 0.0 | 3.5 | 1.0 | 1.0 | 0.25 | ... | [[0.00998898503248877, 0.008874897552016436, 0... | [[-1.7439667155439509, -1.7451722383207986, -1... | [[0.0015190314978645058, 0.0019186473723686597... | {'L1': [7.071067811865475, 7.071067811865475],... | [[0.5915424611948749, 0.6433643867380482, 0.72... | [[0.0022566441762264552, 0.0022329291182243984... | [[0.037518564379655055, 0.039690493611752135, ... | [[0.0011222534229489557, 0.0009779394619310773... | {'L1': [7.071067811865475, 7.071067811865475],... | {'L1': [7.071067811865475, 7.071067811865475],... |
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=10_L2=10_beta=40.0_xi=0.25_h=2.5/Temp_3 | 40.0 | 0.1 | 3.0 | 1.0 | b'' | 0.0 | 4.0 | 1.0 | 1.0 | 0.25 | ... | [[0.007634992984452745, 0.005835316441545428, ... | [[-1.847695393284891, -1.8495307484039036, -1.... | [[0.0025720663795285484, 0.001939963222210881,... | {'L1': [7.071067811865475, 7.071067811865475],... | [[0.6339044988215092, 0.684312635385893, 0.781... | [[0.0020198355137177985, 0.0027236228176412618... | [[0.0024501348260564074, 0.003458403475288739,... | [[0.0002785584053134153, 0.0003883892011143934... | {'L1': [7.071067811865475, 7.071067811865475],... | {'L1': [7.071067811865475, 7.071067811865475],... |
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=4_L2=4_beta=16.0_xi=0.25_h=2.5/Temp_0 | 16.0 | 0.1 | 3.0 | 1.0 | b'' | 0.0 | 2.5 | 1.0 | 1.0 | 0.25 | ... | [[0.01232601938514963, 0.011702811089570902, 0... | [[-0.8012640883169901, -0.7497033999249376, -0... | [[0.00443155929293343, 0.004831066600579312, 0... | {'L1': [2.82842712474619, 2.82842712474619], '... | [[0.36947834874161917, 0.444780551420884, 0.37... | [[0.002013635050318031, 0.003191020480788499, ... | [[0.6226970872195444, 0.6455383454642287, 0.62... | [[0.0015830720439759531, 0.0014751962346094868... | {'L1': [2.82842712474619, 2.82842712474619], '... | {'L1': [2.82842712474619, 2.82842712474619], '... |
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=4_L2=4_beta=16.0_xi=0.25_h=2.5/Temp_1 | 16.0 | 0.1 | 3.0 | 1.0 | b'' | 0.0 | 3.0 | 1.0 | 1.0 | 0.25 | ... | [[0.007912955862575333, 0.00994876501009697, 0... | [[-1.1615682588479128, -1.1120875956846286, -1... | [[0.006140705833959657, 0.0062178274927627425,... | {'L1': [2.82842712474619, 2.82842712474619], '... | [[0.5448155158716456, 0.6931636903733888, 0.54... | [[0.003800827642495056, 0.003889823170868747, ... | [[0.43933860661117075, 0.48550222790231756, 0.... | [[0.0023261562340938266, 0.0020577286896956743... | {'L1': [2.82842712474619, 2.82842712474619], '... | {'L1': [2.82842712474619, 2.82842712474619], '... |
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=4_L2=4_beta=16.0_xi=0.25_h=2.5/Temp_2 | 16.0 | 0.1 | 3.0 | 1.0 | b'' | 0.0 | 3.5 | 1.0 | 1.0 | 0.25 | ... | [[0.01275866498225441, 0.01114143763486667, 0.... | [[-1.5031378204697217, -1.4656902611341118, -1... | [[0.003974345112283094, 0.004038572323341327, ... | {'L1': [2.82842712474619, 2.82842712474619], '... | [[0.7175970087389038, 0.9643325273738381, 0.71... | [[0.003001937941593038, 0.005409099425790231, ... | [[0.25480021415495147, 0.3279120583054125, 0.2... | [[0.0019484346393753634, 0.0016425474210216464... | {'L1': [2.82842712474619, 2.82842712474619], '... | {'L1': [2.82842712474619, 2.82842712474619], '... |
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=4_L2=4_beta=16.0_xi=0.25_h=2.5/Temp_3 | 16.0 | 0.1 | 3.0 | 1.0 | b'' | 0.0 | 4.0 | 1.0 | 1.0 | 0.25 | ... | [[0.009315833166549096, 0.008333079691029744, ... | [[-1.7562694593373842, -1.7267783438093052, -1... | [[0.005528932722976044, 0.005731379888512149, ... | {'L1': [2.82842712474619, 2.82842712474619], '... | [[0.8306037908478882, 1.1415797703095765, 0.82... | [[0.003998895038665653, 0.005233624185626729, ... | [[0.13330903740321445, 0.22308798426852733, 0.... | [[0.0020202622734657063, 0.0017575079018091037... | {'L1': [2.82842712474619, 2.82842712474619], '... | {'L1': [2.82842712474619, 2.82842712474619], '... |
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=6_L2=6_beta=24.0_xi=0.25_h=2.5/Temp_0 | 24.0 | 0.1 | 3.0 | 1.0 | b'' | 0.0 | 2.5 | 1.0 | 1.0 | 0.25 | ... | [[0.013359096995139893, 0.011575996882320966, ... | [[-0.8531159412572458, -0.8472365106670662, -0... | [[0.003275455019155735, 0.00333441534660581, 0... | {'L1': [4.242640687119285, 4.242640687119285],... | [[0.3418454051286131, 0.3917926888854215, 0.42... | [[0.0017208699477740546, 0.0027020403280339765... | [[0.5932356430351405, 0.5939184448708253, 0.59... | [[0.0010273911192221733, 0.001100783332509444,... | {'L1': [4.242640687119285, 4.242640687119285],... | {'L1': [4.242640687119285, 4.242640687119285],... |
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=6_L2=6_beta=24.0_xi=0.25_h=2.5/Temp_1 | 24.0 | 0.1 | 3.0 | 1.0 | b'' | 0.0 | 3.0 | 1.0 | 1.0 | 0.25 | ... | [[0.012372842872302243, 0.00982592979789681, 0... | [[-1.2568991170257189, -1.254691133928998, -1.... | [[0.006223036092397936, 0.004391421891827163, ... | {'L1': [4.242640687119285, 4.242640687119285],... | [[0.4913945419659706, 0.5854088345516923, 0.65... | [[0.0032738627894267646, 0.001614294276006036,... | [[0.3634863972006823, 0.37037504294647144, 0.3... | [[0.001596115479707853, 0.0018508902777070052,... | {'L1': [4.242640687119285, 4.242640687119285],... | {'L1': [4.242640687119285, 4.242640687119285],... |
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=6_L2=6_beta=24.0_xi=0.25_h=2.5/Temp_2 | 24.0 | 0.1 | 3.0 | 1.0 | b'' | 0.0 | 3.5 | 1.0 | 1.0 | 0.25 | ... | [[0.00865089544688345, 0.010880094917081352, 0... | [[-1.6639999051857537, -1.6576803641063333, -1... | [[0.004268781005284443, 0.0033731519086098636,... | {'L1': [4.242640687119285, 4.242640687119285],... | [[0.6299816796959656, 0.7832804761376195, 0.91... | [[0.002488745977358733, 0.0033553108719100422,... | [[0.12214017728303422, 0.13420112162969303, 0.... | [[0.001852767924198795, 0.0014429850264620877,... | {'L1': [4.242640687119285, 4.242640687119285],... | {'L1': [4.242640687119285, 4.242640687119285],... |
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=6_L2=6_beta=24.0_xi=0.25_h=2.5/Temp_3 | 24.0 | 0.1 | 3.0 | 1.0 | b'' | 0.0 | 4.0 | 1.0 | 1.0 | 0.25 | ... | [[0.00573535696549232, 0.009217756507456423, 0... | [[-1.8295623750819807, -1.829167413199349, -1.... | [[0.00295719286077581, 0.0027860252155041043, ... | {'L1': [4.242640687119285, 4.242640687119285],... | [[0.6978523592809309, 0.8709448118019547, 1.00... | [[0.0028454396065431477, 0.0026638919283964143... | [[0.03186750815322241, 0.04542341256626974, 0.... | [[0.0010382408217656288, 0.0011561299211574668... | {'L1': [4.242640687119285, 4.242640687119285],... | {'L1': [4.242640687119285, 4.242640687119285],... |
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=8_L2=8_beta=32.0_xi=0.25_h=2.5/Temp_0 | 32.0 | 0.1 | 3.0 | 1.0 | b'' | 0.0 | 2.5 | 1.0 | 1.0 | 0.25 | ... | [[0.011065646508611636, 0.00966847649737193, 0... | [[-0.8683024558232636, -0.8652411497252245, -0... | [[0.0024470447102413547, 0.0023117226930034814... | {'L1': [5.65685424949238, 5.65685424949238], '... | [[0.33132086465198235, 0.362852436977168, 0.40... | [[0.001073583877656575, 0.0012523584761456176,... | [[0.580762577141888, 0.5807116562396739, 0.580... | [[0.0005767105920373921, 0.0005604277525153794... | {'L1': [5.65685424949238, 5.65685424949238], '... | {'L1': [5.65685424949238, 5.65685424949238], '... |
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=8_L2=8_beta=32.0_xi=0.25_h=2.5/Temp_1 | 32.0 | 0.1 | 3.0 | 1.0 | b'' | 0.0 | 3.0 | 1.0 | 1.0 | 0.25 | ... | [[0.009705957792840473, 0.010404507959166889, ... | [[-1.2904725412229632, -1.2885912675540796, -1... | [[0.0029970225441264438, 0.003336183367224488,... | {'L1': [5.65685424949238, 5.65685424949238], '... | [[0.47106830153441287, 0.5278714673490869, 0.6... | [[0.0022689336820031435, 0.002637842724235969,... | [[0.33448391407443134, 0.33618193707633376, 0.... | [[0.0017154281277830467, 0.0018677137367773436... | {'L1': [5.65685424949238, 5.65685424949238], '... | {'L1': [5.65685424949238, 5.65685424949238], '... |
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=8_L2=8_beta=32.0_xi=0.25_h=2.5/Temp_2 | 32.0 | 0.1 | 3.0 | 1.0 | b'' | 0.0 | 3.5 | 1.0 | 1.0 | 0.25 | ... | [[0.009937946150227129, 0.008132034964506419, ... | [[-1.7145102527216323, -1.717048775742574, -1.... | [[0.0027164831243305675, 0.002706955073502924,... | {'L1': [5.65685424949238, 5.65685424949238], '... | [[0.6049661596398819, 0.6874276349317301, 0.81... | [[0.0016479953788909247, 0.002595997757649418,... | [[0.06581094217085602, 0.06958924887373168, 0.... | [[0.0016636449294150323, 0.0016802902003834619... | {'L1': [5.65685424949238, 5.65685424949238], '... | {'L1': [5.65685424949238, 5.65685424949238], '... |
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=8_L2=8_beta=32.0_xi=0.25_h=2.5/Temp_3 | 32.0 | 0.1 | 3.0 | 1.0 | b'' | 0.0 | 4.0 | 1.0 | 1.0 | 0.25 | ... | [[0.00775267435343496, 0.006439130531618064, 0... | [[-1.8463121373967215, -1.8453149418841837, -1... | [[0.0020212561458271237, 0.0019462609683163882... | {'L1': [5.65685424949238, 5.65685424949238], '... | [[0.6539311815241208, 0.7445460076284947, 0.87... | [[0.0025705487171792706, 0.002465948564277555,... | [[0.00991609307970665, 0.013097558903952613, 0... | [[0.00045949679783958714, 0.000459128937341380... | {'L1': [5.65685424949238, 5.65685424949238], '... | {'L1': [5.65685424949238, 5.65685424949238], '... |
16 rows × 128 columns
Plot order parameter#
fig, ax = plt.subplots(constrained_layout=True)
for L in [4, 6, 8, 10]:
df = res[res.l1 == L].sort_values(by='ham_h')
ax.errorbar(df.ham_h, df.m_scal0, df.m_scal0_err, label=f'L={L}')
ax.legend()
ax.set_xlabel('Transverse field $h$')
ax.set_ylabel('$S(\boldsymbol{k}=0)$');
Plot RG-invariant quantities#
RG-invariant quantities behave at critical point as:
Dismissing dependence on \(\beta\) and finite size corrections:
Therefore, they should cross for different system sizes at \(h = h_{\rm c}\).
fig, axs = plt.subplots(1, 3, constrained_layout=True, figsize=(7, 2.5))
for L in [4, 6, 8, 10]:
df = res[res.l1 == L].sort_values(by='ham_h')
for obs_name, ylabel, ax in zip(['R_S', 'R_chi', 'B'],
[r'$R_S$', r'$R_\chi$', r'$B$'],
axs):
ax.errorbar(
df.ham_h, df[obs_name], df[obs_name+'_err'], label=f'L={L}')
ax.set_xlabel('Transverse field $h$')
ax.set_ylabel(ylabel)
ax.legend();
Data collapse#
I demonstrate here briefly how one can perform a data collapse. The amount of data is too little and the system sizes too small to get meaningful results, but the overall approach can still be presented well.
Manual data collapse#
The first step is to manually vary the parameters, in this case \(h_{\rm c}\) and \(a = 1/\nu\), to collapse the data. The results can then be used as starting parameters of the automatic data collapse in the next step.
hc = 3.15
a = 1.4 # a=1/nu
fig, axs = plt.subplots(1, 3, constrained_layout=True, figsize=(7, 2.5))
for L in [4, 6, 8, 10]:
df = res[res.l1 == L].sort_values(by='ham_h')
for obs_name, ylabel, ax in zip(['R_S', 'R_chi', 'B'],
[r'$R_S$', r'$R_\chi$', r'$B$'],
axs):
ax.errorbar((df.ham_h-hc)*L**a, df[obs_name],
df[obs_name+'_err'], label=f'L={L}')
ax.set_xlabel(r'$(h-h_{\rm c})*L^{1/\nu}$')
ax.set_ylabel(ylabel)
ax.legend();
Data collapse fit#
See Appendix A.3 for the source code of collapse
.
from collapse import collapse
The function func
defines the scaling assumption of Eq. (6).
def func(L, x, dx, y, dy, par):
"""Scaling assumption of RG-invariant quantities
without corrections to scaling."""
xc = par[0]
a = par[1] # a=1/nu
x_scaled = (x-xc) * L**a
if dx is None:
dx_scaled = None
else:
dx_scaled = (x-xc) * L**a
y_scaled = y
dy_scaled = dy
return x_scaled, dx_scaled, y_scaled, dy_scaled
Performing automatic data collapse of \(R_S\) for system sizes \(L \in \{4, 6, 8, 10\}\) and starting parameters \(h_{\rm c} = 3.15\), \(1/\nu = 1.4\) from the manual data collapse.
fig = plt.figure(constrained_layout=True, figsize=(4, 2.7))
plt.xlabel(r'$(h-h_{\rm c})L^{1/\nu}$')
plt.ylabel(r'$R_S$')
collapse(func, 'ham_h', 'R_S', res, Ls=[4, 6, 8, 10] , par0=[3.15, 1.3])
{'Ls': [4, 6, 8, 10],
'L0': 4,
'NL': 4,
'popt': array([ 3.19239096e+00, 1.28013715e+00, 9.08264521e-01, -1.67682563e-02,
-1.24065522e-03, -3.29972113e-05]),
'perr': array([8.89780198e-03, 4.91240345e-03, 2.45520108e-03, 6.27747079e-04,
5.22775205e-05, 1.42967090e-06]),
'S': 1136.7062136799598}
The resulting data collapse does not look very good and the quality of fit function \(S \approx 1500\), which should be of order 1, is much too big.
Some likely reasons for this are:
Too small system sizes.
Too few data points.
Too large fitting range, meaning to big values of \(\left|(h-h_{\rm c})L^{1/\nu}\right|\).
We dismiss system sizes \(L=4\) and restrict the data to \((h-h_{{\rm c},0})L^{1/\nu_0} \in [-5, 10]\). This leads to a much more agreeable, but still too large \(S \approx 24\). Furthermore, there are only 6 data points left and the result \(1/\nu = 1.2 \pm 0.1\) is not in agreement with Section 2.8. Nevertheless, this might be the best that can be done with the available data in terms of data collapses.
hc0 = 3.15
a0 = 1.3
df = res[(res['ham_h']-hc)*res.l1**a > -5]
df = df[(df['ham_h']-hc)*df.l1**a < 10]
fig = plt.figure(constrained_layout=True, figsize=(4, 2.7))
plt.xlabel(r'$(h-h_{\rm c})L^{1/\nu}$')
plt.ylabel(r'$R_S$')
collapse(func, 'ham_h', 'R_S', df, Ls=[6, 8, 10] , par0=[hc0, a0])
{'Ls': [6, 8, 10],
'L0': 6,
'NL': 3,
'popt': array([ 3.22588756e+00, 1.22585025e+00, 8.74205610e-01, -3.71090125e-02,
-3.65818772e-03, 2.59712699e-05]),
'perr': array([0.04638255, 0.10616724, 0.0102565 , 0.00745803, 0.00196077,
0.00023591]),
'S': 26.630914312767914}
Plot correlation#
Accessing elements of the dataframe#
res.columns
Index(['beta', 'dtau', 'global_h', 'global_j', 'global_type', 'ham_chem',
'ham_h', 'ham_j', 'ham_t', 'ham_xi',
...
'IsingXT_tauK_err', 'IsingXT_tauR', 'IsingXT_tauR_err',
'IsingXT_tau_lattice', 'IsingZT_tauK', 'IsingZT_tauK_err',
'IsingZT_tauR', 'IsingZT_tauR_err', 'IsingZT_tau_lattice', 'lattice'],
dtype='object', length=128)
res.index
Index(['./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=10_L2=10_beta=40.0_xi=0.25_h=2.5/Temp_0',
'./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=10_L2=10_beta=40.0_xi=0.25_h=2.5/Temp_1',
'./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=10_L2=10_beta=40.0_xi=0.25_h=2.5/Temp_2',
'./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=10_L2=10_beta=40.0_xi=0.25_h=2.5/Temp_3',
'./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=4_L2=4_beta=16.0_xi=0.25_h=2.5/Temp_0',
'./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=4_L2=4_beta=16.0_xi=0.25_h=2.5/Temp_1',
'./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=4_L2=4_beta=16.0_xi=0.25_h=2.5/Temp_2',
'./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=4_L2=4_beta=16.0_xi=0.25_h=2.5/Temp_3',
'./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=6_L2=6_beta=24.0_xi=0.25_h=2.5/Temp_0',
'./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=6_L2=6_beta=24.0_xi=0.25_h=2.5/Temp_1',
'./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=6_L2=6_beta=24.0_xi=0.25_h=2.5/Temp_2',
'./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=6_L2=6_beta=24.0_xi=0.25_h=2.5/Temp_3',
'./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=8_L2=8_beta=32.0_xi=0.25_h=2.5/Temp_0',
'./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=8_L2=8_beta=32.0_xi=0.25_h=2.5/Temp_1',
'./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=8_L2=8_beta=32.0_xi=0.25_h=2.5/Temp_2',
'./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=8_L2=8_beta=32.0_xi=0.25_h=2.5/Temp_3'],
dtype='object')
item = res.loc['./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=10_L2=10_beta=40.0_xi=0.25_h=2.5/Temp_0']
item
beta 40.0
dtau 0.1
global_h 3.0
global_j 1.0
global_type b''
...
IsingZT_tauK_err [[0.0008932302580056016, 0.0011906138182334284...
IsingZT_tauR [[0.5773744618389179, 0.5776504791744279, 0.57...
IsingZT_tauR_err [[0.0005925670020223004, 0.000599508043614475,...
IsingZT_tau_lattice {'L1': [7.071067811865475, 7.071067811865475],...
lattice {'L1': [7.071067811865475, 7.071067811865475],...
Name: ./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=10_L2=10_beta=40.0_xi=0.25_h=2.5/Temp_0, Length: 128, dtype: object
item['IsingZ_eqK']
array([[[ 0.32638655, 0.34595176, 0.37585751, 0.40512372,
0.41848529, 0.40560553, 0.3758137 , 0.34585338,
0.32686855, 0.32000094, 0.34582087, 0.36959162,
0.40548 , 0.44284267, 0.4599152 , 0.44257476,
0.40533533, 0.36922645, 0.3460411 , 0.33724708,
0.37373131, 0.40447458, 0.45249519, 0.50672501,
0.53239187, 0.50668498, 0.4533181 , 0.4044087 ,
0.37437927, 0.36392956, 0.40205248, 0.43922089,
0.50464484, 0.58204502, 0.62283904, 0.58161175,
0.50320508, 0.44007743, 0.40266863, 0.38967683,
0.41550708, 0.45576157, 0.52808854, 0.6214426 ,
58.38260793, 0.6214426 , 0.52808854, 0.45576157,
0.41550708, 0.40164649, 0.40266863, 0.44007743,
0.50320508, 0.58161175, 0.62283904, 0.58204502,
0.50464484, 0.43922089, 0.40205248, 0.38967683,
0.37437927, 0.4044087 , 0.4533181 , 0.50668498,
0.53239187, 0.50672501, 0.45249519, 0.40447458,
0.37373131, 0.36392956, 0.3460411 , 0.36922645,
0.40533533, 0.44257476, 0.4599152 , 0.44284267,
0.40548 , 0.36959162, 0.34582087, 0.33724708,
0.32686855, 0.34585338, 0.3758137 , 0.40560553,
0.41848529, 0.40512372, 0.37585751, 0.34595176,
0.32638655, 0.32000094, 0.31925968, 0.33890868,
0.36577437, 0.3931343 , 0.40544295, 0.3931343 ,
0.36577437, 0.33890868, 0.31925968, 0.31334392]]])
Creating Lattice object#
from py_alf import Lattice
latt = Lattice(item['IsingZ_eq_lattice'])
Spin-Spin correlation deep in ordered phase#
latt.plot_k(item['IsingZ_eqK'][0,0])
Spin-Spin correlation in disordered phase#
latt.plot_k(res.loc[
'./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=10_L2=10_beta=40.0_xi=0.25_h=2.5/Temp_3',
'IsingZ_eqK'][0,0])
Fermionic dispersion#
See Appendix A.4 for source code of fit_green_tau
.
from fit_green_tau import fit_green_tau
dic = {}
for i in res.index:
print(i)
dtau = res.loc[i, 'dtau']
Green = res.loc[i, 'Green_tauK']
dGreen = res.loc[i, 'Green_tauK_err']
(N_tau, N) = Green.shape
taus = np.arange(0., N_tau*dtau, dtau)
dic[i] = np.empty((N, 2))
for n in range(N):
# print(f'{n} out of {N}')
G = Green[:, n]
dG = dGreen[:, n]
dic[i][n] = fit_green_tau(taus, G, dG, plot=False)
res['gap'] = pd.Series(dic)
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=10_L2=10_beta=40.0_xi=0.25_h=2.5/Temp_0
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=10_L2=10_beta=40.0_xi=0.25_h=2.5/Temp_1
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=10_L2=10_beta=40.0_xi=0.25_h=2.5/Temp_2
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=10_L2=10_beta=40.0_xi=0.25_h=2.5/Temp_3
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=4_L2=4_beta=16.0_xi=0.25_h=2.5/Temp_0
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=4_L2=4_beta=16.0_xi=0.25_h=2.5/Temp_1
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=4_L2=4_beta=16.0_xi=0.25_h=2.5/Temp_2
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=4_L2=4_beta=16.0_xi=0.25_h=2.5/Temp_3
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=6_L2=6_beta=24.0_xi=0.25_h=2.5/Temp_0
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=6_L2=6_beta=24.0_xi=0.25_h=2.5/Temp_1
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=6_L2=6_beta=24.0_xi=0.25_h=2.5/Temp_2
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=6_L2=6_beta=24.0_xi=0.25_h=2.5/Temp_3
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=8_L2=8_beta=32.0_xi=0.25_h=2.5/Temp_0
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=8_L2=8_beta=32.0_xi=0.25_h=2.5/Temp_1
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=8_L2=8_beta=32.0_xi=0.25_h=2.5/Temp_2
./ALF_data/temper_Nematic_Dirac_Model_vers=1_L1=8_L2=8_beta=32.0_xi=0.25_h=2.5/Temp_3
We plot the determined dispersion for system sizes \(L=10\) and mark the points \(\boldsymbol{k} = (\pi/2, \pi/2)\) and \(\boldsymbol{k} = (\pi/2, -\pi/2)\), which are the locations of the Dirac points in the disordered phase. One can see how the Dirac cones are displaced in the ordered phase at \(h = 2.5, 3.0\), while they remain in place in the ordered phase at \(h = 3.5, 4.0\). Notably, the simulation at \(h = 2.5\) features \(\langle \hat{s}^z \rangle < 0\) and \(h = 3.0\) features \(\langle \hat{s}^z \rangle > 0\) (cf. Fig. 2.1(a1)), which is random. The displaced Dirac cones are only observable because the simulation is not fully ergodic and randomly “chooses” one of the two symmetry broken phases.
df = res[res.l1 == 10]
latt = Lattice([10, 10], [10, -10], [1, 1], [1, -1])
for i in df.index:
latt.plot_k(res.loc[i, 'gap_lazy'])
plt.title(f'$h = {res.loc[i, "ham_h"]}$')
p = np.pi/2
plt.plot([p, p], [p, -p], 'o', color='red')
df = res[res.l1 == 10]
latt = Lattice([10, 10], [10, -10], [1, 1], [1, -1])
for i in df.index:
latt.plot_k(res.loc[i, 'gap'][:, 0])
plt.title(f'$h = {res.loc[i, "ham_h"]}$')
p = np.pi/2
plt.plot([p, p], [p, -p], 'o', color='red')