Computer Lab

From phys824
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
conda install -c conda-forge kwant
pip install pythtb --upgrade
pip install --upgrade --user ase
python -m ase test
  • GPAW package can be easily installed using Anaconda on Linux or MacOS
  • If you want to add RISE package for Jupyter notebooks, execute:
conda install -c conda-forge rise

JUPYTER notebooks for hands-on practice

JUPYTER notebooks tips and tricks

  • Force Jupyter notebook to display all outputs of a give cell (and not just the last one as default):
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
  • How do you know that Jupyter notebook is running:
    • Cell Number Indicator: When a cell is actively executing, the input prompt on the left side of the cell will display an asterisk In [*] instead of a number. Once the execution is complete, the asterisk will be replaced by a sequential number In [1], In [2], etc.
    • Kernel Status Indicator: In the top-right corner of the Jupyter Notebook interface, there is a small circle. This circle indicates the kernel's status:
      • Solid/Grey: The kernel is busy, meaning a cell is currently executing.
      • Empty/White: The kernel is idle, meaning no cells are currently executing.
    • Executing this command will display a list of all running Jupyter Notebook servers, including their URLs and the ports they are using.
jupyter notebook list

Python references

 
def fibonacci(n):
    """Calculate the n-th Fibonacci number using recursion."""
    if n <= 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fibonacci(n - 1) + fibonacci(n - 2)
import time
start = time.perf_counter()
result = fibonacci(40)
end = time.perf_counter()
elapsed = end - start
print(f'Time taken: {elapsed:.6f} seconds')

KWANT references

Density functional theory with GPAW package

How to run GPAW on ulam

GPAW has been installed on ulam with the OS installed python 2.6.

  • in order to use the serial version of GPAW type:
 python your_gpaw_program.py
  • in order to use the parallel version of gpaw use the following syntax (replace 8 with the number of cores you want to use):
 mpirun -np 8 gpaw-python_openmpi your_gpaw_program.py

Getting started with GPAW

from ase import Atoms
from ase.io import write
from ase.optimize import QuasiNewton
from gpaw import GPAW

d = 1.10  # Starting guess for the bond length
atoms = Atoms('CO', positions=((0, 0, 0),
                               (0, 0, d)), pbc=False)
atoms.center(vacuum=4.0)
write('CO.cif', atoms)
calc = GPAW(h=0.20, xc='PBE', txt='CO_relax.txt')
atoms.set_calculator(calc)

relax = QuasiNewton(atoms, trajectory='CO.traj', logfile='qn.log')
relax.run(fmax=0.05)

References

First-principles quantum transport calculations using NEGF+DFT within GPAW package

Theory Background

  • Crash course on NEGF+DFT codes
  • NEGF+DFT within GPAW - see also J. Chen, K. S. Thygesen, and K. W. Jacobsen, Ab initio nonequilibrium quantum transport and forces with the real-space projector augmented wave method, Phys. Rev. B 85, 155140 (2012). [PDF]
  • M. Strange, I. S. Kristensen, K. S. Thygesen, and K. W. Jacobsen, Benchmark density functional theory calculations for nanoscale conductance, J. Chem. Phys. 128, 114714 (2008). [PDF]
  • D. A. Areshkin and B. K. Nikolić, Electron density and transport in top-gated graphene nanoribbon devices: First-principles Green function algorithms for systems containing a large number of atoms, Phys. Rev. B 81, 155450 (2010). [PDF]

GPAW Exercises