First run¶
Making a simple sample¶
We can make a graphene sample by importing the graphene material library:
from tipsi.materials import graphene
Now, making a tight-binding sample of 1000 by 1000 unit cells is done with:
sample = graphene.sample_rectangle(1000, 1000, nr_processes = 8)
This sample object contains the locations of all the sites, as well as all the hopping information.
We can add a magnetic field by:
sample.set_magnetic_field(20.)
Simulation parameters¶
All the parameters for our calculation are defined in a Config object:
config = tipsi.Config(sample)
We can set, for example, the number of random initial wave functions to 4. Also we can tell tipsi to correct for spin, as currently our model is single-spin:
config.generic['correct_spin'] = True
config.generic['nr_random_samples'] = 4
Then, we save the configuration parameters to file, in case we want to use them later:
config.save()
Running the simulation¶
Now we are ready to calculate the DOS correlation function:
corr_DOS = tipsi.corr_DOS(sample, config)
To analyze the correlation function, use:
energies_DOS, DOS = tipsi.analyze_corr_DOS(config, corr_DOS)
We can plot the results with:
import matplotlib.pyplot as plt
plt.plot(energies_DOS, DOS, color = 'k')
plt.xlim((-1., 1.))
plt.ylim((0., 0.05))
plt.xlabel("E (eV)")
plt.ylabel("DOS")
plt.show()
If everything went well, you should be able to see Landau levels near the Fermi energy.
Full code¶
The full code of this example is:
# DOS of graphene with magnetic field
# imports
import tipsi
from tipsi.materials import graphene
import matplotlib.pyplot as plt
# make 1000*1000 unit cell sample
sample = graphene.sample_rectangle(1000, 1000, nr_processes = 8)
# add magnetic field of 20 T
sample.set_magnetic_field(20.)
# set configuration parameters
config = tipsi.Config(sample)
config.generic['correct_spin'] = True
config.generic['nr_random_samples'] = 4
config.save()
# get DOS
corr_DOS = tipsi.corr_DOS(sample, config)
energies_DOS, DOS = tipsi.analyze_corr_DOS(config, corr_DOS)
# plot
plt.plot(energies_DOS, DOS, color = 'k')
plt.xlim((-1., 1.))
plt.ylim((0., 0.05))
plt.xlabel("E (eV)")
plt.ylabel("DOS")
plt.show()