#include "TBTK/PropertyExtractor/ArnoldiIterator.h"
#include "TBTK/Solver/ArnoldiIterator.h"
#include <complex>
using namespace std;
using namespace TBTK;
using namespace Visualization::MatPlotLib;
complex<double> i(0, 1);
int main(){
const unsigned int SIZE_X = 80;
const unsigned int SIZE_Y = 80;
const double t = -1;
const double mu = -4;
for(unsigned int x = 0; x < SIZE_X; x++){
for(unsigned int y = 0; y < SIZE_Y; y++){
if(x+1 < SIZE_X){
t,
{x+1, y},
{x, y}
) + HC;
}
if(y+1 < SIZE_Y){
t,
{x, y+1},
{x, y}
) + HC;
}
}
}
const unsigned int NUM_EIGEN_VALUES = 100;
const unsigned int NUM_LANCZOS_VECTORS = 200;
const unsigned int MAX_ITERATIONS = 400;
solver.
setMode(Solver::ArnoldiIterator::Mode::ShiftAndInvert);
const double LOWER_BOUND = -4.02;
const double UPPER_BOUND = -3.8;
const unsigned int RESOLUTION = 1000;
propertyExtractor.setEnergyWindow(
LOWER_BOUND,
UPPER_BOUND,
RESOLUTION
);
Plotter plotter;
plotter.plot(eigenValues);
plotter.save("figures/EigenValues.png");
const double SMOOTHING_SIGMA = 0.001;
const unsigned int SMOOTHING_WINDOW = 201;
dos = Smooth::gaussian(dos, SMOOTHING_SIGMA, SMOOTHING_WINDOW);
plotter.clear();
plotter.plot(dos);
plotter.save("figures/DOS.png");
{_a_, _a_}
});
ldos = Smooth::gaussian(ldos, SMOOTHING_SIGMA, SMOOTHING_WINDOW);
plotter.clear();
plotter.setNumContours(100);
plotter.plot({_a_, SIZE_Y/2}, ldos);
plotter.save("figures/LDOS.png");
}