diff --git a/01/graphene_band_structure.py b/01/graphene_band_structure.py deleted file mode 100644 index 681be77..0000000 --- a/01/graphene_band_structure.py +++ /dev/null @@ -1,61 +0,0 @@ -from __future__ import division -import numpy as np - -def create_kpath(Nk): - # Gamma -> K -> M -> Gamma - - # Gamma = 0 , 0 - # K = 2/3 , 1/3 - # M = 1/2 , 1/2 - - G2K = ( (2./3)**2 + (1./3)**2 ) **.5 - K2M = ( (2./3 - 1./2)**2 + (1./3-1./2)**2 ) **.5 - M2G = ( (1./2)**2 + (1./2)**2 ) **.5 - - Kdist = G2K + K2M + M2G - - NG2K = int(Nk / Kdist * G2K) - NK2M = int(Nk / Kdist * K2M) - NM2G = int(Nk / Kdist * M2G) - - def from_to(N, f, t): - full = np.empty([N, 3]) - ls = np.linspace(0, 1, N, endpoint=False) - for i in range(3): - full[:, i] = f[i] + (t[i]-f[i]) * ls - return full - - kG2K = from_to(NG2K, [0., 0., 0.], [2./3, 1./3, 0]) - kK2M = from_to(NK2M, [2./3, 1./3, 0], [1./2, 1./2, 0.]) - kM2G = from_to(NM2G, [1./2, 1./2, 0.], [0., 0., 0.]) - - xtick = [0, NG2K-1, NG2K + NK2M-1, NG2K + NK2M + NM2G-1] - label = ['G','K', 'M', 'G'] - - return [xtick, label], np.vstack((kG2K, kK2M, kM2G)) - -def bandstructure(Nk, H): - - ticks, k = create_kpath(Nk) - - eigs = np.empty([len(k),2],np.float64) - for ik, k in enumerate(k): - eigs[ik,:] = H.eigh(k=k) - - import matplotlib.pyplot as plt - - plt.plot(eigs[:,0]) - plt.plot(eigs[:,1]) - plt.gca().xaxis.set_ticks(ticks[0]) - plt.gca().set_xticklabels(ticks[1]) - ymin, ymax = plt.gca().get_ylim() - # Also plot x-major lines at the ticks - for tick in ticks[0]: - plt.plot([tick,tick], [ymin,ymax], 'k') - plt.show() - - - -if __name__ == "__main__": - print('This file is intended for use in Hancock_*.py files') - print('It is not intended to be runned separately.') diff --git a/01/run.ipynb b/01/run.ipynb new file mode 100644 index 0000000..ee2e893 --- /dev/null +++ b/01/run.ipynb @@ -0,0 +1,385 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This tutorial will setup the necessary system for running a simple graphene." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import sisl\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Instead of manually defining the graphene system with associated atomic coordinates and lattice vectors we use the build-in `sisl` capability of defining the graphene structure with a default atomic distance of $d = 1.42\\,A$." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "graphene = sisl.geom.graphene()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(graphene)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Some basic information of the geometry is shown above:\n", + "\n", + "1. It contains 2 atoms, `na` is *number of atoms*\n", + "2. It contains 2 orbitals, `no` is *number of orbitals*\n", + "3. Then there is a list of unique atoms associated. In this case there is 1 unqiue specie, `species: 1` while the subsequent lines specifies the number of times it is occuring in the `Geometry`. \n", + "4. `nsc` specifies the *number of supercells* which is a practical way of dealing with periodic structures.\n", + "In this case we have periodicity along the first and second lattice vector. And there are 3 images along each of these directions. The primary, and one at $+$ and $-$. It should be apparent that the values in `nsc` are **always** uneven numbers. Note that for molecules it is always `[1, 1, 1]`.\n", + "5. The last item, `maxR` is the maximal orbital range in the geometry. In this case it is equal to `maxR` as listed for the atomic Carbon specie. However, in case there are more than one specie it will be the maximum for the individual species." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we are ready to proceed with creating the Hamiltonian for the graphene lattice. But before doing so you should now consider which type of system we are going towards? Are we going to implement a nearest, next nearest or third nearest neighbour interaction? \n", + "*HINT*: this should be apparent from the `maxR` variable above." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "H = sisl.Hamiltonian(graphene)\n", + "print(H)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now `H` is a Hamiltonian object. It works *equivalently* to a matrix and one may assign elements and extract elements as though it were a matrix, we will return to the intricate details of the Hamiltonian object later.\n", + "\n", + "There are only 3 more things that specifies the Hamiltonian. \n", + "1. `non-zero` is the current number of non zero elements specified in the Hamiltonian\n", + "2. `orthogonal` specifies whether an overlap matrix is associated with the Hamiltonian, i.e. `False` for a non-orthogonal basis-set.\n", + "3. The number of spin-components are specified via the `Spin` class which in this case is an unpolarized system. I.e. only one spin-component.\n", + "4. The `Geometry` class is repeated because the Hamiltonian is associated with the `Geometry` passed when instantiating the Hamiltonian (`sisl.Hamiltonian(graphene)`).\n", + "\n", + "You are now ready to add matrix elements to the Hamilton." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Explicilty specifying the matrix elements" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this small sub-section we will specify the required matrix elements manually. You should already now know that we only plan on adding nearest neighbour interactions.\n", + "\n", + "We will proceed with an on-site of $0\\,\\mathrm{eV}$ and a coupling element of $t=-2.7\\,\\mathrm{eV}$. \n", + "First we set the on-site elements:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "H[0, 0] = 0.0\n", + "H[1, 1] = 0.0" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we need to set the coupling elements:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "H[0, 1] = -2.7\n", + "H[1, 0] = -2.7" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This will only couple the first and second atom in the primary unit-cell. But we also require couplings from the primary unit-cell to the neighbouring supercells. Remember that `nsc = [3, 3, 1]`. \n", + "In this case we know that the first atom couples to the `(-1, 0)` and `(0, -1)`, while the second atom couples to `(1, 0)` and `(0, 1)`. \n", + "The coupling elements may then be specified via:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "H[0, 1, (-1, 0)] = -2.7\n", + "H[0, 1, (0, -1)] = -2.7\n", + "H[1, 0, (1, 0)] = -2.7\n", + "H[1, 0, (0, 1)] = -2.7" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now all matrix elements are set, i.e. 2 on-site and 6 nearest neighbour couplings, lets assert this:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(H)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We find 8 non-zero elements, as there should be. Remark, even though we set the on-site terms to $0$, they are interpreted as non-zero elements due to explicitly setting them." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Looping the atoms and orbitals in the Hamiltonian" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The above specification of the elements is tedious for anything with more elements than 2 orbitals. There are easier and better ways to set all the coupling elements. \n", + "In the following we will introduce a new function:\n", + " \n", + " Geometry.close\n", + "\n", + "which is a *very* convenient function to return all atomic indices within a certain radii from a given coordinate." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for ia, io in H:\n", + " # This loops over all atoms and the orbitals\n", + " # corresponding to the atom.\n", + " # In this case the geometry has one orbital per atom, hence\n", + " # ia == io\n", + " # in all cases.\n", + " \n", + " # In order to figure out which atoms atom `ia` is connected\n", + " # to, we must find those atoms.\n", + " # To do this we access the geometry attached to the \n", + " # Hamiltonian (H.geom)\n", + " # and use a function called `close` which returns ALL \n", + " # atomic indices within certain ranges of a given point or atom\n", + " idx = H.geom.close(ia, R = [0.1, 1.43])\n", + " # the argument R has two entries:\n", + " # 0.1 and 1.43\n", + " # Each value represents a radii of a sphere.\n", + " # The `close` function will then return\n", + " # a list of equal length of the R argument (i.e. a list with\n", + " # two values).\n", + " # idx[0] is the first element and is also a list\n", + " # of all atoms within a sphere of 0.1 AA of atom `ia`.\n", + " # This should obviously only contain the atom it-self.\n", + " # The second element, idx[1], contains all atoms within a sphere\n", + " # with radius of 1.43 AA, but not including those within 0.1 AA.\n", + " # In this case this is then all atoms that are the nearest neighbour\n", + " # atoms.\n", + " \n", + " # Now we know the on-site atoms (idx[0]) and the nearest neighbour\n", + " # atoms (idx[1]), all we need to do is set the Hamiltonian\n", + " # elements:\n", + "\n", + " # on-site (0. eV)\n", + " H[io, idx[0]] = 0.\n", + " \n", + " # nearest-neighbour (-2.7 eV)\n", + " H[io, idx[1]] = -2.7" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The above loop is equivalent to the previously explicitly set values, so printing the structure will yield the same information, we have just specified all values again. \n", + "The above loop is also *only* 4 lines of code, irrespective of the number of atoms in the geometry." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(H)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After having setup the Hamilton, we may easily calculate the eigenvalues at any $\\mathbf k$ (in reduced coordinates $\\mathbf k\\in]-0.5:0.5]$)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"Gamma:\", H.eigh())\n", + "print(\"K:\", H.eigh(k=[2./3,1./3,0]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We may also create a bandstructure of the Hamiltonian. \n", + "First we define the path we wish to take in the Brillouin zone. Start at $\\Gamma$, continue to $K$, then $M$ and finish where we started. \n", + "We will calculate the band-structure with a total of `301` points and we explicitly name the special points." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "band = sisl.PathBZ(H, [[0., 0.], [2./3, 1./3],\n", + " [1./2, 1./2], [1., 1.]], 301,\n", + " [r'$\\Gamma$', 'K', 'M', r'$\\Gamma$'])\n", + "eigs = band.eigh()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now `eigs` contains all the eigenvalues of the Hamiltonian object for all the $k$-points." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Retrieve the tick-marks and the linear k points\n", + "xtick, xtick_label = band.lineartick()\n", + "lk = band.lineark()\n", + "for i in range(eigs.shape[1]):\n", + " plt.plot(lk, eigs[:, i])\n", + "\n", + "plt.ylabel('Eigenspectrum [eV]')\n", + "plt.gca().xaxis.set_ticks(xtick)\n", + "plt.gca().set_xticklabels(xtick_label)\n", + "\n", + "# Also plot x-major lines at the ticks\n", + "ymin, ymax = plt.gca().get_ylim()\n", + "for tick in xtick:\n", + " plt.plot([tick,tick], [ymin,ymax], 'k')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercises\n", + "\n", + "- Go back to `In [6]` and define a potential difference between the two atoms (sub-lattices).\n", + " What happens to the band structure?\n", + "- Change the hopping element.\n", + " What happens to the band structure?\n", + "- Learn how to use `Geometry.close`. Determine the number of indices returned by the 4 below calls, and why?. It may help to draw the graphene lattice of the geometry on a piece of paper.\n", + "\n", + " 1. Do 3 `close` calls at coordinate $(1, 0, 0)$ for 3 different radius, $R \\in \\{0.5, 1.45, 1.7\\}$ (`R = 0.5`...). \n", + " 2. Do 1 `close` call at coordinate $(1, 0, 0)$ for 3 different radius, `R = [0.5, 1.45, 1.7]`.\n", + " Note, that in this case a list of 3 lists are returned (one per radius)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Learned lessons\n", + "\n", + "- Usage of `sisl.geom` class to create default geometries\n", + "- Creation of a Hamiltonian object (`Hamiltonian`)\n", + "- Assigning elements to the Hamiltonian matrix\n", + "- Retrieving atoms within spherical radius of points or atomic indices (`Geometry.close`)\n", + "- Creating a band-structure `PathBZ`" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/01/run.py b/01/run.py deleted file mode 100644 index 954eacd..0000000 --- a/01/run.py +++ /dev/null @@ -1,111 +0,0 @@ -#!/usr/bin/env python - -# This tutorial setup the necessary files for running -# a simple graphene system example. - -# We will HEAVILY encourage to use Python3 compliant code -# This line ensures the code will run using either Python2 or Python3 -from __future__ import print_function - -# First we require the use of the sisl Python module. -import sisl - -# Instead of manually defining the graphene system we use -# the build-in sisl capability of defining the graphene -# structure. -graphene = sisl.geom.graphene() - -# Print out some basic information about the geometry we have -# just created. -print("Graphene geometry information:") -print(graphene) -print() -# It should print that the geometry consists of -# 2 atoms (na) -# 2 orbitals (no), one per atom -# 1 specie (C), both atoms are the same atomic specie -# orbital range of 1.4342 AA (dR) -# 3x3 supercell (nsc), this is determined from dR - -# Now as we have the graphene unit-cell, we can create the -# Hamiltonian for the system. -H = sisl.Hamiltonian(graphene) -print("Graphene initial Hamiltonian information:") -print(H) -print() - -# Currently this Hamiltonian is an empty entity, i.e. -# no hopping elements has been assigned (all H[i,j] == 0). -# For graphene, one may use these tight-binding parameters: -# on-site: 0. eV -# nearest-neighbour: -2.7 eV -# In the following loop we setup the Hamiltonian with the above -# tight-binding parameters: -for ia, io in H: - # This loop construct loops over all atoms and the orbitals - # corresponding to the atom. - # In this case the geometry has one orbital per atom, hence - # ia == io - # in all cases. - - # In order to figure out which atoms atom `ia` is connected - # to, we must find those atoms - # To do this we access the geometry attached to the - # Hamiltonian (H.geom) - # and use a function called `close` which returns ALL - # atoms within certain ranges of a given point or atom - idx = H.geom.close(ia, dR = (0.1, 1.43)) - # the argument dR has two entries: - # 0.1 and 1.43 - # Each value represents a radii of a sphere. - # The `close` function will then return - # a list of equal length of the dR argument (i.e. a list with - # two values). - # Then idx[0] is the first element and this contains a list - # of all atoms within a sphere of 0.1 AA of atom `ia`. - # This should obviously only contain the atom it-self. - # The second element, idx[1] contains all atoms within a sphere - # with radius of 1.43 AA, but not including those within 0.1 AA. - # In this case this is then all atoms that are the nearest neighbour - # atoms - - # Now we know the on-site atoms (idx[0]) and the nearest neighbour - # atoms (idx[1]), all we need to do is set the Hamiltonian - # elements: - - # on-site (0. eV) - H[io, idx[0]] = 0. - - # nearest-neighbour (-2.7 eV) - H[io, idx[1]] = -2.7 - -# At this point we have created all Hamiltonian elements for all orbitals -# in the graphene geometry. -# Let's try and print the information of the Hamiltonian object: -print("Hamiltonian after setting up the parameters:") -print(H) -print() -# It now prints that there are 8 non-zero elements. -# Please convince yourself that this is the correct number of -# Hamiltonian elements (regard the on-site value of 0. eV as a non-zero -# value). HINT: count the number of on-site and nearest-neighbour terms) - -# At this point we have all the ingredients for manipulating the electronic -# structure of graphene in a tight-binding model with nearest neighbour -# interactions. - -# We may, for instance, calculate the eigen-spectrum at the Gamma-point: -print("Eigenvalues at Gamma:") -print(H.eigh()) -print("Eigenvalues at K:") -print(H.eigh(k=[1./3,2./3,0])) -print() - -# Additionally we may calculate the band-structure of graphene -# We want to plot the band-structure of graphene - -from graphene_band_structure import bandstructure - -# Now lets plot the band-structure (requires matplotlib) -bandstructure(301, H) - diff --git a/02/RUN.fdf b/02/RUN.fdf index 75553d8..f76da21 100644 --- a/02/RUN.fdf +++ b/02/RUN.fdf @@ -9,6 +9,10 @@ TBT.HS DEVICE.nc # that the below array defines TBT.k [50 1 1] +# Also calculate the Gf DOS and spectral DOS +TBT.DOS.Gf true +TBT.DOS.A true + # These are the definitions of the electrodes # They may seem very verbose, but this # gives the user a very high degree of diff --git a/02/run.ipynb b/02/run.ipynb new file mode 100644 index 0000000..04b31b4 --- /dev/null +++ b/02/run.ipynb @@ -0,0 +1,327 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import sisl\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This example will setup the required electronic structures for usage in TBtrans. \n", + "You will also learn the importance of perform $k$-point convergence tests for systems using TBtrans. \n", + "We will continue with the graphene nearest neighbour tight-binding model and perform simple transport calculations using TBtrans. \n", + "Our example will again concentrate on graphene:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "graphene = sisl.geom.graphene(orthogonal=True)\n", + "H = sisl.Hamiltonian(graphene)\n", + "H.construct([[0.1, 1.43], [0., -2.7]])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that the above call of the graphene lattice is different from [example 01](../01/run.ipynb). In this example we will create an *orthogonal* graphene lattice, i.e. the lattice vectors are orthogonal to each other, unlike the minimal graphene lattice. \n", + "The minimal orthogonal graphene lattice consists of 4 Carbon atoms.\n", + "\n", + "Assert that we have 16 non zero elements:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(H)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Hamiltonian we have thus far created will be our *electrode*. Lets write it to a TBtrans readable file:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "H.write('ELEC.nc')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now a file `ELEC.nc` file exists in the folder and it contains all the information (and more) that TBtrans requires to construct the self-energies for the electrode.\n", + "\n", + "All that is required is now the device region. \n", + "An important aspect of ***any*** transport setup is that the electrodes *must* **not** have matrix elements crossing the device region. I.e. there must not be matrix elements between any of the electrodes. This restriction is easily accommodated in tight-binding setups, but for DFT systems it is less transparent. \n", + "In this tight-binding setup it simlpy means a repetition of the electrode 3 times; 1) left electrode, 2) scattering region, 3) right electrode. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Creating the device, `Geometry`; `Hamiltonian`; `Hamiltonian.construct`" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we tile the orthogonal graphene lattice 3 times along the second lattice vector (Python is 0-based) and subsequently construct it using the same parameters. \n", + "This method of specifying all matrix elements is the most usable and easy scheme that is available in `sisl`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "device = graphene.tile(3, axis=1)\n", + "H_device = sisl.Hamiltonian(device)\n", + "H_device.construct([[0.1, 1.43], [0, -2.7]])\n", + "print(H_device)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Creating the device, `Hamiltonian` $\\to$ `Hamiltonian`" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `Geometry.tile` function is an explicit method to create bigger lattices from a smaller reference latice. Howewer, the `tile` routine is also available to the `Hamiltonian` object. Not only is it much easier to use, it also presents these advantages:\n", + "\n", + "* It guarentees that the matrix elements are the same as the reference `Hamiltonian`, i.e. you need not specify the parameters to `construct` twice,\n", + "* It is *much* faster when creating $>500,000$ samples from smaller reference systems,\n", + "* It also requires less code which increases readability and is less prone to errors." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "H_device = H.tile(3, axis=1)\n", + "print(H_device)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For more information you may execute the following lines to view the :\n", + "\n", + " help(Geometry.tile)\n", + " help(Hamiltonian.tile)\n", + "\n", + "\n", + "Now we have created the device electronic structure. The final step is to store it in a TBtrans readable format:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "H_device.write('DEVICE.nc')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Sometimes it may be convenient to plot the entries of the matrix to assert the symmetry and structure. The second line asserts that it is indeed a Hermitian matrix:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.spy(H_device.Hk());\n", + "print('Hermitian deviation: ',np.amax(np.abs(H.Hk() - H.Hk().T.conj())))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### First run of TBtrans\n", + "\n", + "You should first run `tbtrans` like this (the `RUN.fdf` file is already prepared with enough input options for a successfull run):\n", + "\n", + " tbtrans RUN.fdf\n", + " \n", + "After TBtrans is complete a number of files will be present:\n", + "\n", + "- `siesta.TBT.nc` \n", + " The main data-file of TBtrans, this contains *all* calculated quantities, and everything that can be orbital resolved *is* orbital resolved, such as density of states.\n", + " \n", + "- `siesta.TBT.CC` \n", + " The energy points at which TBtrans has calculated physical quantities.\n", + " \n", + "- `siesta.TBT.KP` \n", + " Used $k$-points and their corresponding weights for integrating the Brillouin zone.\n", + " \n", + "- `siesta.TBT.TRANS_Left-Right` \n", + " The $k$-resolved transmission from `Left` to the `Right` electrode. This is a consecutive list of transmissions for all energy points. Each $k$-point transmission is separated with a description of the $k$-point and its weight.\n", + " \n", + "- `siesta.TBT.AVTRANS_Left-Right` \n", + " The $k$-averaged transmission from `Left` to the `Right` electrode. This is the $k$-averaged equivalent of `siesta.TBT.TRANS_Left-Right`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "tbt = sisl.get_sile('siesta.TBT.nc')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After calculating the transport properties of the transport problem you may also use `sisl` to interact with the TBtrans output (in the `*.TBT.nc` file):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(tbt.E, tbt.transmission(), label='k-averaged');\n", + "plt.plot(tbt.E, tbt.transmission(kavg=tbt.kindex([0, 0, 0])), label=r'$\\Gamma$'); \n", + "plt.xlabel('Energy [eV]'); plt.ylabel('Transmission'); plt.ylim([0, None]); plt.legend();" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There are several function calls present in the above code:\n", + "\n", + "* `get_sile` \n", + "is a `sisl` function to read and parse *any* file that is enabled through `sisl`. You can check the documentation to find the available files. Here we use it to make `tbt` be an object with all the information that is present in the `siesta.TBT.nc` file.\n", + "* `tbt.transmission` \n", + "is a function that retrieves the transmission function from the file. It has three optional arguments, the first two being the origin electrode and the second the absorbing electrode. They are defaulting to the first and second electrode.\n", + "* `tbt.transmission` \n", + "takes a third and optional argument, if `True`, or not specified, it returns the **k** averaged transmission, else one may provide an array of integers that represent the internal k-points. I.e. the code above searches for the **k**-index of the $\\Gamma$ point, and requests only that sampled transmission function." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You will see a *very* crude step-like transmission function. \n", + "\n", + "- Why is it not smooth, V-shaped (as it should be)? Can you change something to obtain a smooth transmission function? \n", + "- Why is the $\\Gamma$ transmission a fixed non zero value? Should it be zero somewhere?\n", + " *HINT: checkout the energies used for evaluating the transmission function*." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `siesta.TBT.nc` file also contains two different density-of-states quantities. How do they differ?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(tbt.E, tbt.DOS(), label='DOS'); \n", + "plt.plot(tbt.E, tbt.ADOS(), label='ADOS'); \n", + "plt.xlabel('Energy [eV]'); plt.ylabel('DOS [1/eV]'); plt.ylim([0, None]); plt.legend();" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`sisl` is capable of interacting *much* more with TBtrans output in various ways. We will return to this in later examples." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercises\n", + "\n", + "- Try and create a big graphene flake with an associated Hamiltonian 100,000 atoms. When doing this it is essential you only construct the minimal graphene flake (otherwise creating such a big Hamiltonian will take several minutes). Then use `tile` or `repeat` to expand to the big system.\n", + "- Go to `In [4]` and change `H.write('ELEC.nc')` to `H.write('ELEC.TSHS')`, then adapt `RUN.fdf` file to let the left electrode read the electronic structure from the `TSHS` file instead. Redo the calculation and check if the output is the same.\n", + "- Try and change the on-site term of _one_ of the device atoms, then redo the calculation. What is the (periodic) effect of changing the on-site for one atom?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Learned lessons\n", + "\n", + "- Easy creation of Hamiltonians with constant parameter (`Hamiltonian.construct`)\n", + "- Creation of the Hamiltonian using `Hamiltonian.tile` for *very* large systems.\n", + "- Saving the electronic structure in various formats (`Hamiltonian.write`)\n", + "- Data extraction from `*.TBT.nc` file (`tbt.DOS`, `tbt.ADOS`)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/02/run.py b/02/run.py deleted file mode 100644 index d2cb97f..0000000 --- a/02/run.py +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env python - -import sisl - -# Instead of manually defining the graphene system we use -# the build-in sisl capability of defining the graphene -# structure. -# Note that this graphene unit-cell is an orthogonal unit-cell -# (figure out how many atoms this consists off) -graphene = sisl.geom.graphene(orthogonal=True) - -# Now as we have the graphene unit-cell, we can create the -# Hamiltonian for the system. -H = sisl.Hamiltonian(graphene) - -# Instead of using the for-loop provided in 01, we -# may use a simpler function that *ONLY* works -# for 1-orbital per atom models. -H.construct([0.1, 1.43], [0., -2.7]) - -# At this point we have created all Hamiltonian elements for all orbitals -# in the graphene geometry. -# Please try and figure out how many non-zero elements there should -# be in the Hamiltonian object. -# HINT: count the number of on-site and nearest-neighbour terms - -# Now we have the Hamiltonian, now we need to save it to be able -# to conduct a tbtrans calculation: -# As this is the minimal unit-cell we call this the electrode -# and we will in the following create a larger "DEVICE" region -# Hamiltonian. -H.write('ELEC.nc') - -# Now we need to create the device region Hamiltonian. -# The tbtrans method relies on including the electrodes -# in the device region. Hence the smallest device region -# must be 3 times the electrode size. -# Please try and convince your-self that this is the case. -# HINT: consider the interaction range of the atoms - -# We tile the geometry along the 2nd lattice vector -# (Python is 0-based indexing) -device = graphene.tile(3, axis=1) -Hdev = sisl.Hamiltonian(device) -Hdev.construct([0.1, 1.43], [0, -2.7]) -# We will create both a xyz file (for plotting in molden, etc.) -# and we will create the Hamilton file format for reading in tbtrans -Hdev.geom.write('device.xyz') -Hdev.write('DEVICE.nc') - diff --git a/03/RUN.fdf b/03/RUN.fdf index 1360df9..0b8f975 100644 --- a/03/RUN.fdf +++ b/03/RUN.fdf @@ -7,6 +7,10 @@ TBT.HS DEVICE.nc # integration. TBT.k [50 1 1] +# Also calculate the Gf DOS and spectral DOS +TBT.DOS.Gf true +TBT.DOS.A true + # These are the definitions of the electrodes # They may seem very verbose, but this # gives the user a very high degree of diff --git a/03/run.ipynb b/03/run.ipynb new file mode 100644 index 0000000..5418c84 --- /dev/null +++ b/03/run.ipynb @@ -0,0 +1,211 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import sisl\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This example will setup the required electronic structures for usage in TBtrans. \n", + "We will continue with the graphene nearest neighbour tight-binding model and perform simple transport calculations using TBtrans. \n", + "Again we require the graphene unit-cell and the construction of the Hamiltonian object:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "graphene = sisl.geom.graphene().tile(2, axis=0)\n", + "H = sisl.Hamiltonian(graphene)\n", + "H.construct([[0.1, 1.43], [0., -2.7]])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that the above call of the graphene lattice is different from [example 02](../02/run.ipynb), and similar to [example 01](../01/run.ipynb). In this example we will create a *non-orthogonal* graphene lattice, i.e. the lattice vectors are the minimal lattice vectors of graphene.\n", + "The minimal graphene lattice consists of 2 Carbon atoms.\n", + "We `tile` the `Geometry` to make it slightly bigger. \n", + "You are encouraged to draw the graphene lattice vectors, and draw an arrow in the direction of the transport (along the 2nd lattice vector). Note that one *can* calculate transport along non-orthogonal directions (also in TranSiesta).\n", + "\n", + "Assert that we have 16 non zero elements:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(H)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Hamiltonian we have thus far created will be our *electrode*. Lets write it to a TBtrans readable file:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "H.write('ELEC.nc')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now a file `ELEC.nc` file exists in the folder and it contains all the information (and more) that TBtrans requires to construct the self-energies for the electrode." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Creating the device, `Hamiltonian` $\\to$ `Hamiltonian`" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `Geometry.tile` function is an explicit method to create bigger lattices from a smaller reference latice. Howewer, the `tile` routine is also available to the `Hamiltonian` object. Not only is it much easier to use, it also presents these advantages:\n", + "\n", + "* It guarentees that the matrix elements are the same as the reference `Hamiltonian`, i.e. you need not specify the parameters to `construct` twice,\n", + "* It is *much* faster when creating systems of $>500,000$ atoms/orbitals from smaller reference systems,\n", + "* It also requires less code which increases readability and is less prone to errors." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "H_device = H.tile(3, axis=1)\n", + "print(H_device)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For more information you may execute the following lines to view the documentation:\n", + "\n", + " help(Geometry.tile)\n", + " help(Hamiltonian.tile)\n", + "\n", + "\n", + "Now we have created the device electronic structure. The final step is to store it in a TBtrans readable format:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "H_device.write('DEVICE.nc')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now run tbtrans:\n", + "\n", + " tbtrans RUN.fdf" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "tbt = sisl.get_sile('siesta.TBT.nc')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After calculating the transport properties of the transport problem you may also use `sisl` to interact with the TBtrans output (in the `*.TBT.nc` file). Please repeat the same convergence tests you performed in example 02. \n", + "What are the required **k**-point sampling compared to 02 for a similar transmission function ?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(tbt.E, tbt.transmission(), label='k-averaged'); \n", + "plt.plot(tbt.E, tbt.transmission(kavg=tbt.kindex([0, 0, 0])), label=r'$\\Gamma$'); \n", + "plt.xlabel('Energy [eV]'); plt.ylabel('Transmission'); plt.ylim([0, None]) ; plt.legend();" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercises\n", + "\n", + "- Extract the DOS for each sub-lattice and plot them, see the 1) `atom` or 2) `orbital` keywords in the `.DOS` and `.ADOS` routines" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "### Learned objectives\n", + "\n", + "\n", + "- Calculation of transport in non-orthogonal lattices are possible, this applies to both TBtrans *and* TranSiesta\n", + "- Extraction of DOS for a subset of atoms" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/03/run.py b/03/run.py deleted file mode 100644 index 3b4cb30..0000000 --- a/03/run.py +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/env python - -import sisl - -# Instead of manually defining the graphene system we use -# the build-in sisl capability of defining the graphene -# structure. -# (figure out how many atoms this consists off) -graphene = sisl.geom.graphene().tile(2, axis=0) - -# Now as we have the graphene unit-cell, we can create the -# Hamiltonian for the system. -H = sisl.Hamiltonian(graphene) - -# Instead of using the for-loop provided in 01, we -# may use a simpler function that *ONLY* works -# for 1-orbital per atom models. -H.construct([0.1, 1.43], [0., -2.7]) - -# At this point we have created all Hamiltonian elements for all orbitals -# in the graphene geometry. -# Please try and figure out how many non-zero elements there should -# be in the Hamiltonian object. -# HINT: count the number of on-site and nearest-neighbour terms - -# Now we have the Hamiltonian, now we need to save it to be able -# to conduct a tbtrans calculation: -# As this is the minimal unit-cell we call this the electrode -# and we will in the following create a larger "DEVICE" region -# Hamiltonian. -H.write('ELEC.nc') - -# Now we need to create the device region Hamiltonian. -# The tbtrans method relies on including the electrodes -# in the device region. Hence the smallest device region -# must be a multiple of 3 of the electrode size. -# Please try and convince your-self that this is the case. -# HINT: consider the interaction range of the atoms - -# We tile the geometry along the 2nd lattice vector -# (Python is 0-based indexing) -device = graphene.tile(3, axis=1) -Hdev = sisl.Hamiltonian(device) -Hdev.construct([0.1, 1.43], [0, -2.7]) -# We will create both a xyz file (for plotting in molden, etc.) -# and we will create the Hamilton file format for reading in tbtrans -Hdev.geom.write('device.xyz') -Hdev.write('DEVICE.nc') - diff --git a/04/RUN.fdf b/04/RUN.fdf index 4e0b49e..b43f7bd 100644 --- a/04/RUN.fdf +++ b/04/RUN.fdf @@ -2,6 +2,8 @@ TBT.HS DEVICE.nc # This is also a transverse periodic system and # again the k-mesh is important for converged results. +# In this example you shouldn't converge the k-point +# sampling. You can do that in the next example. TBT.k [5 1 1] # Define which physical quantites to calculate. @@ -17,6 +19,9 @@ TBT.T.All true TBT.T.Bulk true TBT.T.Eig 5 TBT.Current.Orb true + +# This flag is necessary to obtain the "correct" +# bond-currents TBT.Symmetry.TimeReversal false diff --git a/04/run.ipynb b/04/run.ipynb new file mode 100644 index 0000000..219fd2e --- /dev/null +++ b/04/run.ipynb @@ -0,0 +1,326 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import sisl\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this example we will begin to cover some of the extraction utilities in `sisl` allowing one to really go *in-depth* on analysis of calculations.\n", + "\n", + "We will begin by creating a large graphene flake, then subsequently a hole will be created by removing a circular shape.\n", + "\n", + "Subsequent to the calculations you are encouraged to explore the `sisl` toolbox for ways to extract important information regarding your system." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "graphene = sisl.geom.graphene(orthogonal=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "elec = graphene.repeat(25, axis=0)\n", + "H = sisl.Hamiltonian(elec)\n", + "H.construct(([0.1, 1.43], [0., -2.7]))\n", + "H.write('ELEC.nc')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "device = elec.tile(15, axis=1)\n", + "device = device.remove(device.close(device.center(what='cell'), R=10.))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will also (for physical reasons) remove all dangling bonds, and secondly we will create a list of atomic indices which corresponds to the atoms at the edge of the hole. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dangling = [ia for ia in device.close(device.center(what='cell'), R=14.)\n", + " if len(device.close(ia, R=1.43)) < 3]\n", + "device = device.remove(dangling)\n", + "edge = []\n", + "for ia in device.close(device.center(what='cell'), R=14.):\n", + " if len(device.close(ia, R=1.43)) < 4:\n", + " edge.append(ia + 1) # + 1 to get fortran indices\n", + "\n", + "# Pretty-print the list of atoms\n", + "print(sisl.utils.list2str(edge))\n", + "\n", + "Hdev = sisl.Hamiltonian(device)\n", + "Hdev.construct(([0.1, 1.43], [0, -2.7]))\n", + "Hdev.geom.write('device.xyz')\n", + "Hdev.write('DEVICE.nc')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Exercises\n", + "\n", + "Please carefully go through the `RUN.fdf` file before running TBtrans, determine what each flag means and what it tells TBtrans to output. \n", + "Now run TBtrans:\n", + "\n", + " tbtrans RUN.fdf\n", + " \n", + "In addition to the previous example, many more files are now being created (for all files the `siesta.TBT.AV*` files are the $k$-averaged equivalents. You should, while reading the below list, also be able to specify which of the fdf-flags that are responsible for the creation of which files.\n", + "\n", + "- `siesta.TBT.ADOS_*` \n", + " The $k$-resolved spectral density of states injected from the named electrode\n", + "- `siesta.TBT.BDOS_*` \n", + " The $k$-resolved bulk Green function density of states for the named electrode\n", + "- `siesta.TBT.BTRANS_*` \n", + " The $k$-resolved bulk transmission through the named electrode\n", + "- `siesta.TBT.DOS` \n", + " Green function density of states\n", + "- `siesta.TBT.TEIG_<1>-<2>` \n", + " Transmission eigenvalues for electrons injected from `<1>` and emitted in `<2>`.\n", + " \n", + "\n", + "This exercise mainly shows a variety of methods useful for extracting data from the `*.TBT.nc` files in a simple and consistent manner. You are encouraged to play with the routines, because the next example forces you to utilize them." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "tbt = sisl.get_sile('siesta.TBT.nc')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As this system is not a pristine periodic system we have a variety of options available for analysis.\n", + "\n", + "First and foremost we plot the transmission:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.plot(tbt.E, tbt.transmission());\n", + "plt.ylabel('Transmission'); plt.xlabel('Energy [eV]'); plt.ylim([0, None]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "\n", + "The contained data in the `*.TBT.nc` file is very much dependent on the flags in the fdf-file. To ease the overview of the available output and what is contained in the file one can execute the following block to see the content of the file.\n", + "Check whether the *bulk transmission* is present in the output file and if so, add it to the plot above to compare the bulk transmission with the device transmission. \n", + "\n", + "There are two electrodes, hence two bulk transmissions. Is there a difference between the two? If so, why, if not, why not?\n", + "\n", + "---" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(tbt.info())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Density of states" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "We may also plot the Green function density of states as well as the spectral density of states:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "DOS_all = [tbt.DOS(), tbt.ADOS(0), tbt.ADOS(1)]\n", + "plt.plot(tbt.E, DOS_all[0], label='G');\n", + "plt.plot(tbt.E, DOS_all[1], label=r'$A_L$');\n", + "plt.plot(tbt.E, DOS_all[2], label=r'$A_R$');\n", + "plt.ylim([0, None]); plt.ylabel('Total DOS [1/eV]'); plt.xlabel('Energy [eV]'); plt.legend();" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Can you from the above three quantities determine whether there are any localized states in the examined system? \n", + "_HINT_: What is the sum of the spectral density of states ($\\mathbf A$) compared to the Green function ($\\mathbf G$) density of states?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Examining DOS on individual atoms\n", + "\n", + "The total DOS is a measure of the DOS spread out in the entire atomic region. However, TBtrans calculates, and stores all DOS related quantities in orbital resolution. I.e. we are able to post-process the DOS and examine the atom (orbital) resolved DOS. \n", + "To do this the `.DOS` and `.ADOS` routines have two important keywords, 1) `atom` and 2) `orbital` which may be used to extract a subset of the DOS quantities. For details on extracting these subset quantities please read the documentation by executing the following line:\n", + "\n", + " help(tbt.DOS)\n", + " \n", + "The following code will extract the DOS _only_ on the atoms in the hole edge." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "DOS_edge = [tbt.DOS(atom=edge), tbt.ADOS(0, atom=edge), tbt.ADOS(1, atom=edge)]\n", + "plt.plot(tbt.E, DOS_edge[0], label='G');\n", + "plt.plot(tbt.E, DOS_edge[1], label=r'$A_L$');\n", + "plt.plot(tbt.E, DOS_edge[2], label=r'$A_R$');\n", + "plt.ylim([0, None]); plt.ylabel('DOS on edge atoms [1/eV]'); plt.xlabel('Energy [eV]'); plt.legend();" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Comparing the two previous figures leaves us with little knowlegde of the DOS ratio. I.e. both plots show the _total_ DOS and they are summed over a different number of atoms (or orbitals if you wish). Instead of showing the total DOS we can normalize the DOS by the number of atoms; $1/N_a$ where $N_a$ is the number of atoms in the selected DOS region. With this normalization we can compare the average DOS on all atoms with the average DOS on only edge atoms. \n", + "\n", + "---\n", + "\n", + "The `tbtncSileTBtrans` can readily do this for you. \n", + "Read about the `norm` keyword in `.DOS`, and also look at the documentation for the `.norm` function:\n", + "\n", + " help(tbt.DOS)\n", + " help(tbt.norm)\n", + "\n", + "---\n", + "\n", + "Now create a plot with DOS normalized per atom by editing the below lines, feel free to add the remaining DOS plots to have them all:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "N_all = tbt.norm()\n", + "N_edge = tbt.norm()\n", + "plt.plot(tbt.E, DOS_all[0] / N_all, label=r'$G$');\n", + "plt.plot(tbt.E, DOS_edge[0] / N_edge, label=r'$G_E$');\n", + "plt.ylim([0, None]); plt.ylabel('DOS [1/eV/atom]'); plt.xlabel('Energy [eV]'); plt.legend();" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### DOS depending on the distance from the hole\n", + "\n", + "We can further analyze the DOS evolution for atoms farther and farther from the hole. \n", + "The following DOS analysis will extract DOS (from $\\mathbf G$) for the edge atoms, then for the nearest neighbours to the edge atoms, and for the next-nearest neighbours to the edge atoms. \n", + "Try and extend the plot to contain the DOS of the next-next-nearest neighbours to the edge atoms." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Get nearest neighbours to the edge atoms\n", + "n_edge = Hdev.edges(edge)\n", + "# Get next-nearest neighbours to the edge atoms\n", + "nn_edge = Hdev.edges(n_edge, exclude=np.hstack((edge, n_edge)))\n", + "# Try and create the next-next-nearest neighbours to the edge atoms and add it to the plot\n", + "plt.plot(tbt.E, tbt.DOS(atom=edge, norm='atom'), label='edge: G');\n", + "plt.plot(tbt.E, tbt.DOS(atom=n_edge, norm='atom'), label='n-edge: G');\n", + "plt.plot(tbt.E, tbt.DOS(atom=nn_edge, norm='atom'), label='nn-edge: G');\n", + "plt.ylim([0, None]); plt.ylabel('DOS [1/eV/atom]'); plt.xlabel('Energy [eV]'); plt.legend();" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Learned methods\n", + "\n", + "- fdf-flags for TBtrans to specify which quantities to calculate\n", + "- Opening files via `get_sile`\n", + "- Extraction of DOS with different normalizations.\n", + "- Extraction of DOS for a subset of atoms/orbitals.\n", + "- Determining coupling atoms " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/04/run.py b/04/run.py deleted file mode 100644 index c3ffa57..0000000 --- a/04/run.py +++ /dev/null @@ -1,84 +0,0 @@ -#!/usr/bin/env python - -from __future__ import print_function -import sisl - -# Instead of manually defining the graphene system we use -# the build-in sisl capability of defining the graphene -# structure. -# (figure out how many atoms this consists off) -graphene = sisl.geom.graphene() - -# Now as we have the graphene unit-cell, we can create the -# Hamiltonian for the electrode by first -# repeating it 25 times along the first lattice vector. -elec = graphene.repeat(25, axis=0) -H = sisl.Hamiltonian(elec) - -# Instead of using the for-loop provided in 01, we -# may use a simpler function that *ONLY* works -# for 1-orbital per atom models. -H.construct([0.1, 1.43], [0., -2.7]) - -# At this point we have created all Hamiltonian elements for all orbitals -# in the graphene geometry. -# Please try and figure out how many non-zero elements there should -# be in the Hamiltonian object. -# HINT: count the number of on-site and nearest-neighbour terms - -# Now we have the Hamiltonian, now we need to save it to be able -# to conduct a tbtrans calculation: -# As this is the minimal unit-cell we call this the electrode -# and we will in the following create a larger "DEVICE" region -# Hamiltonian. -H.write('ELEC.nc') - -# Now we need to create the device region Hamiltonian. -# The tbtrans method relies on including the electrodes -# in the device region. Hence the smallest device region -# must be a multiple of 3 of the electrode size. -# Please try and convince your-self that this is the case. -# HINT: consider the interaction range of the atoms - -# We tile the geometry along the 2nd lattice vector -# (Python is 0-based indexing) -device = elec.tile(15, axis=1) -# Remove a hole in the flake -device = device.remove(device.close(device.center(which='cell'), dR=10.)) - -# We will also (for physical reasons) remove all dangling bonds: -dangling = [] -for ia in device.close(device.center(which='cell'), dR=14.): - if len(device.close(ia, dR=1.43)) < 3: - dangling.append(ia) -device = device.remove(dangling) -edge = [] -for ia in device.close(device.center(which='cell'), dR=14.): - if len(device.close(ia, dR=1.43)) < 4: - edge.append(ia) -# Now we have all the edge atoms. -# Print the FORTRAN indices for sdata -edge.sort() -pos = [j - i for i, j in enumerate(edge)] -from itertools import groupby -t = 0 -for i, els in groupby(pos): - l = len(list(els)) - el = edge[t] + 1 - if t > 0: - print(',', end='') - t += l - if l == 1: - print(el, end='') - else: - print('{}-{}'.format(el, el+l-1), end='') -print('') -print('51-100') - -Hdev = sisl.Hamiltonian(device) -Hdev.construct([0.1, 1.43], [0, -2.7]) -# We will create both a xyz file (for plotting in molden, etc.) -# and we will create the Hamilton file format for reading in tbtrans -Hdev.geom.write('device.xyz') -Hdev.write('DEVICE.nc') - diff --git a/04/run.sh b/04/run.sh index 8bf649c..04f9c42 100755 --- a/04/run.sh +++ b/04/run.sh @@ -7,15 +7,15 @@ # First we take all atoms in the circle which only connects to # two carbon atoms (i.e. the edge atoms in the hole) -a="190,214-215,237-238,259-260,299-300,338,356,375,394,431-432,452,473-474,496-498" -sdata siesta.TBT.nc --atom $a --dos \ +a="438-439, 462-463, 535, 580, 603-604, 626, 734, 755, 799, 842, 865-866, 888, 979-980, 1003-1004, 1028" +sdata siesta.TBT.nc --atom "$a" --dos \ --bulk-dos Left --ados Left \ --bulk-dos Right --ados Right \ --out edge_atoms.dat -# Now only take the firs line of graphene atoms (pristine) -a="51-100" -sdata siesta.TBT.nc --atom $a --dos \ +# Now only take the first line of graphene atoms (pristine) +a="101-150" +sdata siesta.TBT.nc --atom "$a" --dos \ --bulk-dos Left --ados Left \ --bulk-dos Right --ados Right \ --out pristine_atoms.dat diff --git a/05/RUN.fdf b/05/RUN.fdf index 6ef8760..d91eeeb 100644 --- a/05/RUN.fdf +++ b/05/RUN.fdf @@ -3,26 +3,29 @@ TBT.HS DEVICE.nc # Play with this number to get a converged result TBT.k [5 1 1] -# Define what to save -TBT.DOS.A true +# Define which physical quantites to calculate. +# Each of these flags will decide what to calculate +# in the calculation. +# If you look these flags up in the manual you will +# find the physical quantities they correspond to. TBT.DOS.Gf true TBT.DOS.Elecs true +TBT.DOS.A true TBT.DOS.A.All true TBT.T.All true TBT.T.Bulk true TBT.T.Eig 5 TBT.Current.Orb true -TBT.Symmetry.TimeReversal false -# Edit this file to enable Bloch's theorem -# for each of the electrodes. +# This flag is necessary to obtain the "correct" +# bond-currents +TBT.Symmetry.TimeReversal false %block TBT.Elec.Left HS ELEC.nc semi-inf-direction -A2 electrode-position 1 %endblock TBT.Elec.Left - %block TBT.Elec.Right HS ELEC.nc semi-inf-direction +A2 diff --git a/05/run.ipynb b/05/run.ipynb new file mode 100644 index 0000000..30a6291 --- /dev/null +++ b/05/run.ipynb @@ -0,0 +1,244 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import sisl\n", + "import numpy as np\n", + "from matplotlib import animation\n", + "import matplotlib.pyplot as plt\n", + "from IPython.display import HTML\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this example you will learn how to make use of the periodicity of the electrodes.\n", + "\n", + "As seen in [example 04](../04/run.ipynb) the transmission calculation takes a considerable amount of time. In this example we will redo the *same* calculation, but speed it up (no approximations made).\n", + "\n", + "A large computational effort is made on calculating the self-energies which basically is inverting, multiplying and adding matrices, roughly 10-20 times per $k$-point, per energy point, per electrode. \n", + "For some systems this is far more demanding than calculating the Green function for the system. \n", + "In systems where there is periodicity along the transverse semi-infinite direction (not along the transport direction) one can utilize Bloch's theorem to reduce the computational cost of calculating the self-energy. In ***ANY*** calculation if you have periodicity, please ***USE*** it. \n", + "\n", + "In this example you should scour the tbtrans manual on how to enable Bloch's \n", + "theorem, and once enabled it should be roughly 3 - 4 times as fast, something that is non-negligeble for large systems." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "graphene = sisl.geom.graphene(orthogonal=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note the below lines are differing from the same lines in [example 04](../04/run.ipynb), i.e. we save the electrode electronic structure *without* extending it 25 times." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "H_elec = sisl.Hamiltonian(graphene)\n", + "H_elec.construct(([0.1, 1.43], [0., -2.7]))\n", + "H_elec.write('ELEC.nc')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "See [example 02](../02/run.ipynb) for details on why we choose `repeat` and `tile` on the Hamiltonian object and not on the geometry, prior to construction." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "H = H_elec.repeat(25, axis=0).tile(15, axis=1)\n", + "H = H.remove(H.geom.close(H.geom.center(what='cell'), R=10.))\n", + "\n", + "dangling = [ia for ia in H.geom.close(H.geom.center(what='cell'), R=14.)\n", + " if len(H.edges(ia)) < 2]\n", + "H = H.remove(dangling)\n", + "# + 1 to get fortran indices\n", + "edge = [ia + 1 for ia in H.geom.close(H.geom.center(what='cell'), R=14.)\n", + " if len(H.edges(ia)) < 3]\n", + "\n", + "# Pretty-print the list of atoms\n", + "print(sisl.utils.list2str(edge))\n", + "\n", + "H.geom.write('device.xyz')\n", + "H.write('DEVICE.nc')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Exercises\n", + "\n", + "Instead of analysing the same thing as in [04](../04/run.ipynb) you should perform the following actions to explore the available data-analysis capabilities of TBtrans.\n", + "\n", + "*HINT* please copy as much as you like from example 04 to simplify the following tasks.\n", + "\n", + "1. Read in the resulting file into a variable called `tbt`.\n", + "2. In the following we will concentrate on *only* looking at $\\Gamma$-point related quantities. I.e. all quantities should only be plotted for this $k$-point. \n", + " To extract information for one or more subset of points you should look into the function\n", + " \n", + " help(tbt.kindex)\n", + " \n", + " which may be used to find a resulting $k$-point index in the result file.\n", + " \n", + "3. Plot the transmission ($\\Gamma$-point only). To extract a subset $k$-point you should read the documentation for the functions (*hint: `kavg` is the keyword you are looking for*).\n", + " - Full transmission\n", + " - Bulk transmission\n", + "4. Plot the DOS with normalization according to the number of atoms ($\\Gamma$ only) \n", + " You may decide which atoms you examine.\n", + " - The Green function DOS\n", + " - The spectral DOS\n", + " - The bulk DOS" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Transmission" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Density of states" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "tbt = sisl.get_sile('siesta.TBT.nc')\n", + "# Easier manipulation of the geometry\n", + "geom = tbt.geometry\n", + "a_dev = tbt.a_dev # the indices where we have DOS\n", + "# Extract the DOS, per orbital (hence sum=False)\n", + "DOS = tbt.ADOS(0, sum=False)\n", + "# Normalize DOS for plotting (maximum size == 400)\n", + "# This array has *all* energy points and orbitals\n", + "DOS /= DOS.max() / 400\n", + "a_xyz = geom.xyz[a_dev, :2]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%capture\n", + "fig = plt.figure(figsize=(12,4));\n", + "ax = plt.axes();\n", + "scatter = ax.scatter(a_xyz[:, 0], a_xyz[:, 1], 1);\n", + "ax.set_xlabel(r'$x$ [Ang]'); ax.set_ylabel(r'$y$ [Ang]');\n", + "ax.axis('equal');" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# If this animation does not work, then don't spend time on it!\n", + "def animate(i):\n", + " ax.set_title('Energy {:.3f} eV'.format(tbt.E[i]));\n", + " scatter.set_sizes(DOS[i]);\n", + " return scatter,\n", + "anim = animation.FuncAnimation(fig, animate, frames=len(tbt.E), interval=100, repeat=False)\n", + "HTML(anim.to_html5_video())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Learned lessons\n", + "\n", + "- Extraction of number of coupled elements via `.edges` for the Hamiltonian.\n", + "- Manipulating the Hamiltonian *after* it has been created (*very* fast!))\n", + "- Extract data only for single $k$-points, the lesson learned is also applicable for a subset of all $k$-points.\n", + "- Extraction of various physical quantities from the `*.TBT.nc` file" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/05/run.py b/05/run.py deleted file mode 100644 index fd7ac8e..0000000 --- a/05/run.py +++ /dev/null @@ -1,97 +0,0 @@ -#!/usr/bin/env python - -from __future__ import print_function -import sisl - -# This example is equivalent to example 04. -# However, in this example you will learn how to -# make use of the periodicity of the electrodes. -# A large computational effort is made on calculating -# the self-energies which basically is inverting, multiplying -# and adding matrices, roughly 10-20 times per energy point, per -# electrode. For many systems this is far more demanding than -# actually calculating the Green function for the system. -# In systems where there is periodicity along the transverse -# semi-infinite direction (not along the transport direction) -# one can utilize Bloch's theorem to reduce the computational -# cost of calculating the self-energy. -# In ANY calculation if you have periodicity, please USE it. -# In this example you should read the tbtrans manual on how -# to use Bloch's theorem, and if succesfull it should roughly be -# 4 times as fast (with the same result!). -# HINT: the flag is related to the electrode (Bloch) -# HINT: You shouldn't need to edit this file, but it may be -# easier to figure out what to do by comparing with example 04. -graphene = sisl.geom.graphene() - -# Now as we have the graphene unit-cell, we can create the -# Hamiltonian for the system. -H = sisl.Hamiltonian(graphene) - -# Instead of using the for-loop provided in 01, we -# may use a simpler function that *ONLY* works -# for 1-orbital per atom models. -H.construct([0.1, 1.43], [0., -2.7]) - -# At this point we have created all Hamiltonian elements for all orbitals -# in the graphene geometry. -# Please try and figure out how many non-zero elements there should -# be in the Hamiltonian object. -# HINT: count the number of on-site and nearest-neighbour terms - -# Now we have the Hamiltonian, now we need to save it to be able -# to conduct a tbtrans calculation: -# As this is the minimal unit-cell we call this the electrode -# and we will in the following create a larger "DEVICE" region -# Hamiltonian. -H.write('ELEC.nc') - -# Now we need to create the device region Hamiltonian. -# The tbtrans method relies on including the electrodes -# in the device region. Hence the smallest device region -# must be a multiple of 3 of the electrode size. -# Please try and convince your-self that this is the case. -# HINT: consider the interaction range of the atoms - -# We tile the geometry along the 2nd lattice vector -# (Python is 0-based indexing) -device = graphene.repeat(25, axis=0).tile(15, axis=1) -# Remove a hole in the flake -device = device.remove(device.close(device.center(which='cell'), dR=10.)) - -# We will also (for physical reasons) remove all dangling bonds: -dangling = [] -for ia in device.close(device.center(which='cell'), dR=14.): - if len(device.close(ia, dR=1.43)) < 3: - dangling.append(ia) -device = device.remove(dangling) -edge = [] -for ia in device.close(device.center(which='cell'), dR=14.): - if len(device.close(ia, dR=1.43)) < 4: - edge.append(ia) -# Now we have all the edge atoms. -# Print the FORTRAN indices for sdata -edge.sort() -pos = [j - i for i, j in enumerate(edge)] -from itertools import groupby -t = 0 -for i, els in groupby(pos): - l = len(list(els)) - el = edge[t] + 1 - if t > 0: - print(',', end='') - t += l - if l == 1: - print(el, end='') - else: - print('{}-{}'.format(el, el+l-1), end='') -print('') -print('51-100') - -Hdev = sisl.Hamiltonian(device) -Hdev.construct([0.1, 1.43], [0, -2.7]) -# We will create both a xyz file (for plotting in molden, etc.) -# and we will create the Hamilton file format for reading in tbtrans -Hdev.geom.write('device.xyz') -Hdev.write('DEVICE.nc') - diff --git a/05/run.sh b/05/run.sh index 8bf649c..be23b9c 100755 --- a/05/run.sh +++ b/05/run.sh @@ -7,15 +7,15 @@ # First we take all atoms in the circle which only connects to # two carbon atoms (i.e. the edge atoms in the hole) -a="190,214-215,237-238,259-260,299-300,338,356,375,394,431-432,452,473-474,496-498" -sdata siesta.TBT.nc --atom $a --dos \ +a="438-439, 462-463, 535, 580, 603-604, 626, 734, 755, 799, 842, 865-866, 888, 979-980, 1003-1004, 1028" +sdata siesta.TBT.nc --atom "$a" --dos \ --bulk-dos Left --ados Left \ --bulk-dos Right --ados Right \ --out edge_atoms.dat # Now only take the firs line of graphene atoms (pristine) -a="51-100" -sdata siesta.TBT.nc --atom $a --dos \ +a="101-150" +sdata siesta.TBT.nc --atom "$a" --dos \ --bulk-dos Left --ados Left \ --bulk-dos Right --ados Right \ --out pristine_atoms.dat diff --git a/06/RUN.fdf b/06/RUN.fdf index 8c57965..9150b5d 100644 --- a/06/RUN.fdf +++ b/06/RUN.fdf @@ -1,5 +1,7 @@ TBT.HS DEVICE.nc +# Also calculate the bulk DOS for the electrodes +TBT.DOS.Elecs true TBT.DOS.A true TBT.DOS.A.All true TBT.T.All true diff --git a/06/run.ipynb b/06/run.ipynb new file mode 100644 index 0000000..6218a8f --- /dev/null +++ b/06/run.ipynb @@ -0,0 +1,385 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import sisl\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from functools import partial\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "TBtrans is capable of calculating transport in $N\\ge 1$ electrode systems. In this example we will explore a 4-terminal graphene GNR cross-bar (one zGNR, the other aGNR) system." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "graphene = sisl.geom.graphene(orthogonal=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "R = [0.1, 1.43]\n", + "hop = [0., -2.7]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create the two electrodes in $x$ and $y$ directions. We will force the systems to be nano-ribbons, i.e. only periodic along the ribbon. In `sisl` there are two ways of accomplishing this.\n", + "\n", + "1. Explicitly set number of auxiliary supercells\n", + "2. Add vacuum beyond the orbital interaction ranges\n", + "\n", + "The below code uses the first method. \n", + "\n", + "Please see if you can change the creation of `elec_x` by adding vacuum. \n", + "**HINT**: Look at the documentation for the `sisl.Geometry` and search for vacuum. To know the orbital distance look up `maxR` in the geometry class as well." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "elec_y = graphene.tile(3, axis=0)\n", + "elec_y.set_nsc([1, 3, 1])\n", + "elec_y.write('elec_y.xyz')\n", + "elec_x = graphene.tile(5, axis=1)\n", + "elec_x.set_nsc([3, 1, 1])\n", + "elec_x.write('elec_x.xyz')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Subsequently we create the electronic structure." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "H_y = sisl.Hamiltonian(elec_y)\n", + "H_y.construct((R, hop))\n", + "H_y.write('ELEC_Y.nc') \n", + "H_x = sisl.Hamiltonian(elec_x)\n", + "H_x.construct((R, hop))\n", + "H_x.write('ELEC_X.nc')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we have created the electronic structure for the electrodes. All that is needed is the electronic structure of the device region, i.e. the crossing nano-ribbons." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dev_y = elec_y.tile(30, axis=1)\n", + "dev_y = dev_y.translate( -dev_y.center(what='xyz') )\n", + "dev_x = elec_x.tile(18, axis=0)\n", + "dev_x = dev_x.translate( -dev_x.center(what='xyz') )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Remove any atoms that are *duplicated*, i.e. when we overlay these two geometries some atoms are the same." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "device = dev_y.add(dev_x)\n", + "device.set_nsc([1,1,1])\n", + "duplicates = []\n", + "for ia in dev_y:\n", + " idx = device.close(ia, 0.1)\n", + " if len(idx) > 1:\n", + " duplicates.append(idx[1])\n", + "device = device.remove(duplicates)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Can you explain why `set_nsc([1, 1, 1])` is called? And if so, is it necessary to do this step?\n", + "\n", + "---\n", + "\n", + "Ensure the lattice vectors are big enough for plotting.\n", + "Try and convince your-self that the lattice vectors are unimportant for tbtrans in this example. \n", + "*HINT*: what is the periodicity?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "device = device.add_vacuum(100, 0).add_vacuum(100, 1)\n", + "device = device.translate( device.center(what='cell') )\n", + "device.write('device.xyz')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Since this system has 4 electrodes we need to tell tbtrans where the 4 electrodes are in the device. The following lines prints out the fdf-lines that are appropriate for each of the electrodes (`RUN.fdf` is already filled correctly):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print('elec-Y-1: semi-inf -A2: {}'.format(1))\n", + "print('elec-Y-2: semi-inf +A2: end {}'.format(len(dev_y)))\n", + "print('elec-X-1: semi-inf -A1: {}'.format(len(dev_y) + 1))\n", + "print('elec-X-2: semi-inf +A1: end {}'.format(-1))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "H = sisl.Hamiltonian(device)\n", + "H.construct([R, hop])\n", + "H.write('DEVICE.nc')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Exercises\n", + "\n", + "In this example we have more than 1 transmission paths. Before you run the below code which plots all relevant transmissions ($T_{ij}$ for $j>i$), consider if there are any symmetries, and if so, determine how many different transmission spectra you should expect? Please plot the geometry using your favourite geometry viewer (`molden`, `Jmol`, ...). The answer is not so trivial." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "tbt = sisl.get_sile('siesta.TBT.nc')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Make easy function calls for plotting energy resolved quantites:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "E = tbt.E\n", + "Eplot = partial(plt.plot, E)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Make a shorthand version for the function (simplifies the below line)\n", + "T = tbt.transmission\n", + "t12, t13, t14, t23, t24, t34 = T(0, 1), T(0, 2), T(0, 3), T(1, 2), T(1, 3), T(2, 3)\n", + "Eplot(t12, label=r'$T_{12}$'); Eplot(t13, label=r'$T_{13}$'); Eplot(t14, label=r'$T_{14}$');\n", + "Eplot(t23, label=r'$T_{23}$'); Eplot(t24, label=r'$T_{24}$'); \n", + "Eplot(t34, label=r'$T_{34}$');\n", + "plt.ylabel('Transmission'); plt.xlabel('Energy [eV]'); plt.ylim([0, None]); plt.legend();" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- In `RUN.fdf` we have added the flag `TBT.T.All` which tells tbtrans to calculate *all* transmissions, i.e. between all $i\\to j$ for all $i,j \\in \\{1,2,3,4\\}$. This flag is by default `False`, why?\n", + "- Create 3 plots each with $T_{1j}$ and $T_{j1}$ for all $j\\neq1$." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Insert plot of T12 and T21" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Insert plot of T13 and T31" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Insert plot of T14 and T41" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- Considering symmetries, try to figure out which transmissions ($T_{ij}$) are unique?\n", + "- Plot the bulk DOS for the 2 differing electrodes.\n", + "- Plot the spectral DOS injected by all 4 electrodes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Helper routines, this makes BDOS(...) == tbt.BDOS(..., norm='atom')\n", + "BDOS = partial(tbt.BDOS, norm='atom')\n", + "ADOS = partial(tbt.ADOS, norm='atom')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Bulk density of states:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "Eplot(..., label=r'$BDOS_1$');\n", + "Eplot(..., label=r'$BDOS_2$');\n", + "plt.ylabel('DOS [1/eV/N]'); plt.xlabel('Energy [eV]'); plt.ylim([0, None]); plt.legend();" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Spectral density of states for all electrodes:\n", + "- As a final exercise you can explore the details of the density of states for single atoms. Take for instance atom 205 (204 in Python index) which is in *both* GNR at the crossing. \n", + "Feel free to play around with different atoms, subset of atoms (pass a `list`) etc. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "Eplot(..., label=r'$ADOS_1$');\n", + "...\n", + "plt.ylabel('DOS [1/eV/N]'); plt.xlabel('Energy [eV]'); plt.ylim([0, None]); plt.legend();" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- For 2D structures one can easily plot the DOS per atom via a scatter plot in `matplotlib`, here is the skeleton code for that, you should select an energy point and figure out how to extract the atom resolved DOS (you will need to look-up the documentation for the `ADOS` method to figure out which flag to use." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "Eidx = tbt.Eindex(...)\n", + "ADOS = [tbt.ADOS(i, ....) for i in range(4)]\n", + "f, axs = plt.subplots(2, 2, figsize=(10, 10))\n", + "a_xy = tbt.geometry.xyz[tbt.a_dev, :2]\n", + "for i in range(4):\n", + " A = ADOS[i]\n", + " A *= 100 / A.max() # normalize to maximum 100 (simply for plotting)\n", + " axs[i // 2][i % 2].scatter(a_xy[:, 0], a_xy[:, 1], A, c=\"bgrk\"[i], alpha=.5);\n", + "plt.xlabel('x [Ang]'); plt.ylabel('y [Ang]'); plt.axis('equal');" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/06/run.py b/06/run.py deleted file mode 100644 index dc031d1..0000000 --- a/06/run.py +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/env python - -from __future__ import print_function -import sisl - -# This example creates a cross-bar graphene nano-ribbon -# and the electrodes to perform a 4-terminal calculation. -# For this N-electrode it is easier if it is -# orthogonal (but you could do a non-orthogonal one) -graphene = sisl.geom.graphene(orthogonal=True) - -# These are the tight-binding parameters -dR = [0.1, 1.43] -hop = [0. , -2.7] - -# Create the electrode for the graphene ribbons. -# 1. This electrode has the semi-infinite direction -# along the second lattice vector. -elec_y = graphene.tile(3, axis=0) -elec_y.set_nsc([1, 3, 1]) -elec_y.write('elec_y.xyz') -# 2. This electrode has the semi-infinite direction -# along the first lattice vector. -elec_x = graphene.tile(5, axis=1) -elec_x.set_nsc([3, 1, 1]) -elec_x.write('elec_x.xyz') - -# Now create the Hamiltonian and store it -H_y = sisl.Hamiltonian(elec_y) -H_y.construct(dR, hop) -H_y.write('ELEC_Y.nc') -H_x = sisl.Hamiltonian(elec_x) -H_x.construct(dR, hop) -H_x.write('ELEC_X.nc') - -# Now create the full device by overlying -# two graphene nano-ribbons -# Note that after having created the nano-ribbons -# we shift the atomic coordinates to origo. -dev_y = elec_y.tile(30, axis=1) -dev_y = dev_y.translate(-dev_y.center(which='xyz')) -dev_x = elec_x.tile(18, axis=0) -dev_x = dev_x.translate(-dev_x.center(which='xyz')) - -device = dev_y.add(dev_x) -# Ensure that there are no super-cell interactions -device.set_nsc([1,1,1]) -# Remove dublicates -dublicates = [] -for ia in dev_y: - idx = device.close(ia, 0.1) - if len(idx) > 1: - dublicates.append(idx[1]) -device = device.remove(dublicates) - -# Ensure the lattice vectors are big enough -# This is only for plotting, tbtrans does not care. -# Try and convince your-self that the lattice vectors are -# unimportant for tbtrans in this example. -# HINT: Periodicity. -device = device.append(sisl.SuperCell([100]), 0).append(sisl.SuperCell([100]), 1) -device = device.translate(device.center(which='cell')) - -# Print the electrode positions of -# for tbtrans (these have been extracted and inserted into the -# fdf file for tbtrans). -print('elec-Y-1, semi-inf -A2: {}'.format(1)) -print('elec-Y-2, semi-inf +A2: end {}'.format(len(dev_y))) -print('elec-X-1, semi-inf -A1: {}'.format(len(dev_y)+1)) -print('elec-X-2, semi-inf +A1: end {}'.format(-1)) - -Hdev = sisl.Hamiltonian(device) -Hdev.construct([0.1, 1.43], [0, -2.7]) -# We will create both a xyz file (for plotting in molden, etc.) -# and we will create the Hamilton file format for reading in tbtrans -Hdev.geom.write('device.xyz') -Hdev.write('DEVICE.nc') - diff --git a/06/run.sh b/06/run.sh index ac88fc4..afee372 100755 --- a/06/run.sh +++ b/06/run.sh @@ -1,14 +1,9 @@ #/bin/bash -# This script uses the sdata command to selectively -# take certain atoms and only plot the DOS of those - -# We run the sdata script - -# We may also extract the bond-currents in the graphene -# plane and plot them using XSF +# This script uses the sdata command to extract the +# bond-currents originating from all electrodes. # This is extracting the bond-currents at E = 0.1 eV -for elec in 1 2 3 4 +for elec in X-1 X-2 Y-1 Y-2 do echo Creating vector-currents for elec-$elec sdata siesta.TBT.nc \ diff --git a/07/RUN.fdf b/07/RUN.fdf index 262f045..f16dcdd 100644 --- a/07/RUN.fdf +++ b/07/RUN.fdf @@ -4,23 +4,9 @@ # directly from command line TBT.HS DEVICE.nc -# Sometimes the default pivoting algorithm -# will produce "bad" partitions. -# In this case we KNOW that the ordering of the -# atoms is linear and there is no need to perform -# any pivoting, the default input sequence will -# partition the BTD very efficiently. -TBT.BTD.Pivot none - -# We are ONLY interested in the transmission -# in this example. -# Thus we may reduce the device region to the smallest -# region which disconnects the left and the right -# electrode from each other. Doing this will greatly -# increase throughput -%block TBT.Atoms.Device - atom [4291 -- 4315] -%endblock +# Figure out how to save the self-energy function files +# once, and then re-use them. +# For reference they are named TBTGF files %block TBT.Elec.Left HS ELEC.nc @@ -34,10 +20,10 @@ TBT.BTD.Pivot none electrode-position end -1 %endblock TBT.Elec.Right -# Reduce the energy-grid to [-0.05 : 0.5] eV +# Reduce the energy-grid to [-0.005 : 0.5] eV %block TBT.Contour.line part line - from -0.05 eV to 0.5 eV + from -0.005 eV to 0.5 eV delta 0.01 eV method mid-rule %endblock TBT.Contour.line diff --git a/07/device.xyz b/07/device.xyz deleted file mode 100644 index 0ff83db..0000000 --- a/07/device.xyz +++ /dev/null @@ -1,8657 +0,0 @@ -8655 -103.0 0. 0. 0. 99.0 0. 0. 0. 1. -H -51.0 -49.0 0. -H -51.0 -48.0 0. -H -51.0 -47.0 0. -H -51.0 -46.0 0. -H -51.0 -45.0 0. -H -51.0 -44.0 0. -H -51.0 -43.0 0. -H -51.0 -42.0 0. -H -51.0 -41.0 0. -H -51.0 -40.0 0. -H -51.0 -39.0 0. -H -51.0 -38.0 0. -H -51.0 -37.0 0. -H -51.0 -36.0 0. -H -51.0 -35.0 0. -H -51.0 -34.0 0. -H -51.0 -33.0 0. -H -51.0 -32.0 0. -H -51.0 -31.0 0. -H -51.0 -30.0 0. -H -51.0 -29.0 0. -H -51.0 -28.0 0. -H -51.0 -27.0 0. -H -51.0 -26.0 0. -H -51.0 -25.0 0. -H -51.0 -24.0 0. -H -51.0 -23.0 0. -H -51.0 -22.0 0. -H -51.0 -21.0 0. -H -51.0 -20.0 0. -H -51.0 -19.0 0. -H -51.0 -18.0 0. -H -51.0 -17.0 0. -H -51.0 -16.0 0. -H -51.0 -15.0 0. -H -51.0 -14.0 0. -H -51.0 -13.0 0. -H -51.0 -12.0 0. -H -51.0 -11.0 0. -H -51.0 -10.0 0. -H -51.0 -9.0 0. -H -51.0 -8.0 0. -H -51.0 -7.0 0. -H -51.0 -6.0 0. -H -51.0 -5.0 0. -H -51.0 -4.0 0. -H -51.0 -3.0 0. -H -51.0 -2.0 0. -H -51.0 -1.0 0. -H -51.0 0.0 0. -H -51.0 1.0 0. -H -51.0 2.0 0. -H -51.0 3.0 0. -H -51.0 4.0 0. -H -51.0 5.0 0. -H -51.0 6.0 0. -H -51.0 7.0 0. -H -51.0 8.0 0. -H -51.0 9.0 0. -H -51.0 10.0 0. -H -51.0 11.0 0. -H -51.0 12.0 0. -H -51.0 13.0 0. -H -51.0 14.0 0. -H -51.0 15.0 0. -H -51.0 16.0 0. -H -51.0 17.0 0. -H -51.0 18.0 0. -H -51.0 19.0 0. -H -51.0 20.0 0. -H -51.0 21.0 0. -H -51.0 22.0 0. -H -51.0 23.0 0. -H -51.0 24.0 0. -H -51.0 25.0 0. -H -51.0 26.0 0. -H -51.0 27.0 0. -H -51.0 28.0 0. -H -51.0 29.0 0. -H -51.0 30.0 0. -H -51.0 31.0 0. -H -51.0 32.0 0. -H -51.0 33.0 0. -H -51.0 34.0 0. -H -51.0 35.0 0. -H -51.0 36.0 0. -H -51.0 37.0 0. -H -51.0 38.0 0. -H -51.0 39.0 0. -H -51.0 40.0 0. -H -51.0 41.0 0. -H -51.0 42.0 0. -H -51.0 43.0 0. -H -51.0 44.0 0. -H -51.0 45.0 0. -H -51.0 46.0 0. -H -51.0 47.0 0. -H -51.0 48.0 0. -H -51.0 49.0 0. -H -50.0 -49.0 0. -H -50.0 -48.0 0. -H -50.0 -47.0 0. -H -50.0 -46.0 0. -H -50.0 -45.0 0. -H -50.0 -44.0 0. -H -50.0 -43.0 0. -H -50.0 -42.0 0. -H -50.0 -41.0 0. -H -50.0 -40.0 0. -H -50.0 -39.0 0. -H -50.0 -38.0 0. -H -50.0 -37.0 0. -H -50.0 -36.0 0. -H -50.0 -35.0 0. -H -50.0 -34.0 0. -H -50.0 -33.0 0. -H -50.0 -32.0 0. -H -50.0 -31.0 0. -H -50.0 -30.0 0. -H -50.0 -29.0 0. -H -50.0 -28.0 0. -H -50.0 -27.0 0. -H -50.0 -26.0 0. -H -50.0 -25.0 0. -H -50.0 -24.0 0. -H -50.0 -23.0 0. -H -50.0 -22.0 0. -H -50.0 -21.0 0. -H -50.0 -20.0 0. -H -50.0 -19.0 0. -H -50.0 -18.0 0. -H -50.0 -17.0 0. -H -50.0 -16.0 0. -H -50.0 -15.0 0. -H -50.0 -14.0 0. -H -50.0 -13.0 0. -H -50.0 -12.0 0. -H -50.0 -11.0 0. -H -50.0 -10.0 0. -H -50.0 -9.0 0. -H -50.0 -8.0 0. -H -50.0 -7.0 0. -H -50.0 -6.0 0. -H -50.0 -5.0 0. -H -50.0 -4.0 0. -H -50.0 -3.0 0. -H -50.0 -2.0 0. -H -50.0 -1.0 0. -H -50.0 0.0 0. -H -50.0 1.0 0. -H -50.0 2.0 0. -H -50.0 3.0 0. -H -50.0 4.0 0. -H -50.0 5.0 0. -H -50.0 6.0 0. -H -50.0 7.0 0. -H -50.0 8.0 0. -H -50.0 9.0 0. -H -50.0 10.0 0. -H -50.0 11.0 0. -H -50.0 12.0 0. -H -50.0 13.0 0. -H -50.0 14.0 0. -H -50.0 15.0 0. -H -50.0 16.0 0. -H -50.0 17.0 0. -H -50.0 18.0 0. -H -50.0 19.0 0. -H -50.0 20.0 0. -H -50.0 21.0 0. -H -50.0 22.0 0. -H -50.0 23.0 0. -H -50.0 24.0 0. -H -50.0 25.0 0. -H -50.0 26.0 0. -H -50.0 27.0 0. -H -50.0 28.0 0. -H -50.0 29.0 0. -H -50.0 30.0 0. -H -50.0 31.0 0. -H -50.0 32.0 0. -H -50.0 33.0 0. -H -50.0 34.0 0. -H -50.0 35.0 0. -H -50.0 36.0 0. -H -50.0 37.0 0. -H -50.0 38.0 0. -H -50.0 39.0 0. -H -50.0 40.0 0. -H -50.0 41.0 0. -H -50.0 42.0 0. -H -50.0 43.0 0. -H -50.0 44.0 0. -H -50.0 45.0 0. -H -50.0 46.0 0. -H -50.0 47.0 0. -H -50.0 48.0 0. -H -50.0 49.0 0. -H -49.0 -49.0 0. -H -49.0 -48.0 0. -H -49.0 -47.0 0. -H -49.0 -46.0 0. -H -49.0 -45.0 0. -H -49.0 -44.0 0. -H -49.0 -43.0 0. -H -49.0 -42.0 0. -H -49.0 -41.0 0. -H -49.0 -40.0 0. -H -49.0 -39.0 0. -H -49.0 -38.0 0. -H -49.0 -37.0 0. -H -49.0 -36.0 0. -H -49.0 -35.0 0. -H -49.0 -34.0 0. -H -49.0 -33.0 0. -H -49.0 -32.0 0. -H -49.0 -31.0 0. -H -49.0 -30.0 0. -H -49.0 -29.0 0. -H -49.0 -28.0 0. -H -49.0 -27.0 0. -H -49.0 -26.0 0. -H -49.0 -25.0 0. -H -49.0 -24.0 0. -H -49.0 -23.0 0. -H -49.0 -22.0 0. -H -49.0 -21.0 0. -H -49.0 -20.0 0. -H -49.0 -19.0 0. -H -49.0 -18.0 0. -H -49.0 -17.0 0. -H -49.0 -16.0 0. -H -49.0 -15.0 0. -H -49.0 -14.0 0. -H -49.0 -13.0 0. -H -49.0 -12.0 0. -H -49.0 -11.0 0. -H -49.0 -10.0 0. -H -49.0 -9.0 0. -H -49.0 -8.0 0. -H -49.0 -7.0 0. -H -49.0 -6.0 0. -H -49.0 -5.0 0. -H -49.0 -4.0 0. -H -49.0 -3.0 0. -H -49.0 -2.0 0. -H -49.0 -1.0 0. -H -49.0 0.0 0. -H -49.0 1.0 0. -H -49.0 2.0 0. -H -49.0 3.0 0. -H -49.0 4.0 0. -H -49.0 5.0 0. -H -49.0 6.0 0. -H -49.0 7.0 0. -H -49.0 8.0 0. -H -49.0 9.0 0. -H -49.0 10.0 0. -H -49.0 11.0 0. -H -49.0 12.0 0. -H -49.0 13.0 0. -H -49.0 14.0 0. -H -49.0 15.0 0. -H -49.0 16.0 0. -H -49.0 17.0 0. -H -49.0 18.0 0. -H -49.0 19.0 0. -H -49.0 20.0 0. -H -49.0 21.0 0. -H -49.0 22.0 0. -H -49.0 23.0 0. -H -49.0 24.0 0. -H -49.0 25.0 0. -H -49.0 26.0 0. -H -49.0 27.0 0. -H -49.0 28.0 0. -H -49.0 29.0 0. -H -49.0 30.0 0. -H -49.0 31.0 0. -H -49.0 32.0 0. -H -49.0 33.0 0. -H -49.0 34.0 0. -H -49.0 35.0 0. -H -49.0 36.0 0. -H -49.0 37.0 0. -H -49.0 38.0 0. -H -49.0 39.0 0. -H -49.0 40.0 0. -H -49.0 41.0 0. -H -49.0 42.0 0. -H -49.0 43.0 0. -H -49.0 44.0 0. -H -49.0 45.0 0. -H -49.0 46.0 0. -H -49.0 47.0 0. -H -49.0 48.0 0. -H -49.0 49.0 0. -H -48.0 -49.0 0. -H -48.0 -48.0 0. -H -48.0 -47.0 0. -H -48.0 -46.0 0. -H -48.0 -45.0 0. -H -48.0 -44.0 0. -H -48.0 -43.0 0. -H -48.0 -42.0 0. -H -48.0 -41.0 0. -H -48.0 -40.0 0. -H -48.0 -39.0 0. -H -48.0 -38.0 0. -H -48.0 -37.0 0. -H -48.0 -36.0 0. -H -48.0 -35.0 0. -H -48.0 -34.0 0. -H -48.0 -33.0 0. -H -48.0 -32.0 0. -H -48.0 -31.0 0. -H -48.0 -30.0 0. -H -48.0 -29.0 0. -H -48.0 -28.0 0. -H -48.0 -27.0 0. -H -48.0 -26.0 0. -H -48.0 -25.0 0. -H -48.0 -24.0 0. -H -48.0 -23.0 0. -H -48.0 -22.0 0. -H -48.0 -21.0 0. -H -48.0 -20.0 0. -H -48.0 -19.0 0. -H -48.0 -18.0 0. -H -48.0 -17.0 0. -H -48.0 -16.0 0. -H -48.0 -15.0 0. -H -48.0 -14.0 0. -H -48.0 -13.0 0. -H -48.0 -12.0 0. -H -48.0 -11.0 0. -H -48.0 -10.0 0. -H -48.0 -9.0 0. -H -48.0 -8.0 0. -H -48.0 -7.0 0. -H -48.0 -6.0 0. -H -48.0 -5.0 0. -H -48.0 -4.0 0. -H -48.0 -3.0 0. -H -48.0 -2.0 0. -H -48.0 -1.0 0. -H -48.0 0.0 0. -H -48.0 1.0 0. -H -48.0 2.0 0. -H -48.0 3.0 0. -H -48.0 4.0 0. -H -48.0 5.0 0. -H -48.0 6.0 0. -H -48.0 7.0 0. -H -48.0 8.0 0. -H -48.0 9.0 0. -H -48.0 10.0 0. -H -48.0 11.0 0. -H -48.0 12.0 0. -H -48.0 13.0 0. -H -48.0 14.0 0. -H -48.0 15.0 0. -H -48.0 16.0 0. -H -48.0 17.0 0. -H -48.0 18.0 0. -H -48.0 19.0 0. -H -48.0 20.0 0. -H -48.0 21.0 0. -H -48.0 22.0 0. -H -48.0 23.0 0. -H -48.0 24.0 0. -H -48.0 25.0 0. -H -48.0 26.0 0. -H -48.0 27.0 0. -H -48.0 28.0 0. -H -48.0 29.0 0. -H -48.0 30.0 0. -H -48.0 31.0 0. -H -48.0 32.0 0. -H -48.0 33.0 0. -H -48.0 34.0 0. -H -48.0 35.0 0. -H -48.0 36.0 0. -H -48.0 37.0 0. -H -48.0 38.0 0. -H -48.0 39.0 0. -H -48.0 40.0 0. -H -48.0 41.0 0. -H -48.0 42.0 0. -H -48.0 43.0 0. -H -48.0 44.0 0. -H -48.0 45.0 0. -H -48.0 46.0 0. -H -48.0 47.0 0. -H -48.0 48.0 0. -H -48.0 49.0 0. -H -47.0 -49.0 0. -H -47.0 -48.0 0. -H -47.0 -47.0 0. -H -47.0 -46.0 0. -H -47.0 -45.0 0. -H -47.0 -44.0 0. -H -47.0 -43.0 0. -H -47.0 -42.0 0. -H -47.0 -41.0 0. -H -47.0 -40.0 0. -H -47.0 -39.0 0. -H -47.0 -38.0 0. -H -47.0 -37.0 0. -H -47.0 -36.0 0. -H -47.0 -35.0 0. -H -47.0 -34.0 0. -H -47.0 -33.0 0. -H -47.0 -32.0 0. -H -47.0 -31.0 0. -H -47.0 -30.0 0. -H -47.0 -29.0 0. -H -47.0 -28.0 0. -H -47.0 -27.0 0. -H -47.0 -26.0 0. -H -47.0 -25.0 0. -H -47.0 -24.0 0. -H -47.0 -23.0 0. -H -47.0 -22.0 0. -H -47.0 -21.0 0. -H -47.0 -20.0 0. -H -47.0 -19.0 0. -H -47.0 -18.0 0. -H -47.0 -17.0 0. -H -47.0 -16.0 0. -H -47.0 -15.0 0. -H -47.0 -14.0 0. -H -47.0 -13.0 0. -H -47.0 -12.0 0. -H -47.0 -11.0 0. -H -47.0 -10.0 0. -H -47.0 -9.0 0. -H -47.0 -8.0 0. -H -47.0 -7.0 0. -H -47.0 -6.0 0. -H -47.0 -5.0 0. -H -47.0 -4.0 0. -H -47.0 -3.0 0. -H -47.0 -2.0 0. -H -47.0 -1.0 0. -H -47.0 0.0 0. -H -47.0 1.0 0. -H -47.0 2.0 0. -H -47.0 3.0 0. -H -47.0 4.0 0. -H -47.0 5.0 0. -H -47.0 6.0 0. -H -47.0 7.0 0. -H -47.0 8.0 0. -H -47.0 9.0 0. -H -47.0 10.0 0. -H -47.0 11.0 0. -H -47.0 12.0 0. -H -47.0 13.0 0. -H -47.0 14.0 0. -H -47.0 15.0 0. -H -47.0 16.0 0. -H -47.0 17.0 0. -H -47.0 18.0 0. -H -47.0 19.0 0. -H -47.0 20.0 0. -H -47.0 21.0 0. -H -47.0 22.0 0. -H -47.0 23.0 0. -H -47.0 24.0 0. -H -47.0 25.0 0. -H -47.0 26.0 0. -H -47.0 27.0 0. -H -47.0 28.0 0. -H -47.0 29.0 0. -H -47.0 30.0 0. -H -47.0 31.0 0. -H -47.0 32.0 0. -H -47.0 33.0 0. -H -47.0 34.0 0. -H -47.0 35.0 0. -H -47.0 36.0 0. -H -47.0 37.0 0. -H -47.0 38.0 0. -H -47.0 39.0 0. -H -47.0 40.0 0. -H -47.0 41.0 0. -H -47.0 42.0 0. -H -47.0 43.0 0. -H -47.0 44.0 0. -H -47.0 45.0 0. -H -47.0 46.0 0. -H -47.0 47.0 0. -H -47.0 48.0 0. -H -47.0 49.0 0. -H -46.0 -49.0 0. -H -46.0 -48.0 0. -H -46.0 -47.0 0. -H -46.0 -46.0 0. -H -46.0 -45.0 0. -H -46.0 -44.0 0. -H -46.0 -43.0 0. -H -46.0 -42.0 0. -H -46.0 -41.0 0. -H -46.0 -40.0 0. -H -46.0 -39.0 0. -H -46.0 -38.0 0. -H -46.0 -37.0 0. -H -46.0 -36.0 0. -H -46.0 -35.0 0. -H -46.0 -34.0 0. -H -46.0 -33.0 0. -H -46.0 -32.0 0. -H -46.0 -31.0 0. -H -46.0 -30.0 0. -H -46.0 -29.0 0. -H -46.0 -28.0 0. -H -46.0 -27.0 0. -H -46.0 -26.0 0. -H -46.0 -25.0 0. -H -46.0 -24.0 0. -H -46.0 -23.0 0. -H -46.0 -22.0 0. -H -46.0 -21.0 0. -H -46.0 -20.0 0. -H -46.0 -19.0 0. -H -46.0 -18.0 0. -H -46.0 -17.0 0. -H -46.0 -16.0 0. -H -46.0 -15.0 0. -H -46.0 -14.0 0. -H -46.0 -13.0 0. -H -46.0 -12.0 0. -H -46.0 -11.0 0. -H -46.0 -10.0 0. -H -46.0 -9.0 0. -H -46.0 -8.0 0. -H -46.0 -7.0 0. -H -46.0 -6.0 0. -H -46.0 -5.0 0. -H -46.0 -4.0 0. -H -46.0 -3.0 0. -H -46.0 -2.0 0. -H -46.0 -1.0 0. -H -46.0 0.0 0. -H -46.0 1.0 0. -H -46.0 2.0 0. -H -46.0 3.0 0. -H -46.0 4.0 0. -H -46.0 5.0 0. -H -46.0 6.0 0. -H -46.0 7.0 0. -H -46.0 8.0 0. -H -46.0 9.0 0. -H -46.0 10.0 0. -H -46.0 11.0 0. -H -46.0 12.0 0. -H -46.0 13.0 0. -H -46.0 14.0 0. -H -46.0 15.0 0. -H -46.0 16.0 0. -H -46.0 17.0 0. -H -46.0 18.0 0. -H -46.0 19.0 0. -H -46.0 20.0 0. -H -46.0 21.0 0. -H -46.0 22.0 0. -H -46.0 23.0 0. -H -46.0 24.0 0. -H -46.0 25.0 0. -H -46.0 26.0 0. -H -46.0 27.0 0. -H -46.0 28.0 0. -H -46.0 29.0 0. -H -46.0 30.0 0. -H -46.0 31.0 0. -H -46.0 32.0 0. -H -46.0 33.0 0. -H -46.0 34.0 0. -H -46.0 35.0 0. -H -46.0 36.0 0. -H -46.0 37.0 0. -H -46.0 38.0 0. -H -46.0 39.0 0. -H -46.0 40.0 0. -H -46.0 41.0 0. -H -46.0 42.0 0. -H -46.0 43.0 0. -H -46.0 44.0 0. -H -46.0 45.0 0. -H -46.0 46.0 0. -H -46.0 47.0 0. -H -46.0 48.0 0. -H -46.0 49.0 0. -H -45.0 -49.0 0. -H -45.0 -48.0 0. -H -45.0 -47.0 0. -H -45.0 -46.0 0. -H -45.0 -45.0 0. -H -45.0 -44.0 0. -H -45.0 -43.0 0. -H -45.0 -42.0 0. -H -45.0 -41.0 0. -H -45.0 -40.0 0. -H -45.0 -39.0 0. -H -45.0 -38.0 0. -H -45.0 -37.0 0. -H -45.0 -36.0 0. -H -45.0 -35.0 0. -H -45.0 -34.0 0. -H -45.0 -33.0 0. -H -45.0 -32.0 0. -H -45.0 -31.0 0. -H -45.0 -30.0 0. -H -45.0 -29.0 0. -H -45.0 -28.0 0. -H -45.0 -27.0 0. -H -45.0 -26.0 0. -H -45.0 -25.0 0. -H -45.0 -24.0 0. -H -45.0 -23.0 0. -H -45.0 -22.0 0. -H -45.0 -21.0 0. -H -45.0 -20.0 0. -H -45.0 -19.0 0. -H -45.0 -18.0 0. -H -45.0 -17.0 0. -H -45.0 -16.0 0. -H -45.0 -15.0 0. -H -45.0 -14.0 0. -H -45.0 -13.0 0. -H -45.0 -12.0 0. -H -45.0 -11.0 0. -H -45.0 -10.0 0. -H -45.0 -9.0 0. -H -45.0 -8.0 0. -H -45.0 -7.0 0. -H -45.0 -6.0 0. -H -45.0 -5.0 0. -H -45.0 -4.0 0. -H -45.0 -3.0 0. -H -45.0 -2.0 0. -H -45.0 -1.0 0. -H -45.0 0.0 0. -H -45.0 1.0 0. -H -45.0 2.0 0. -H -45.0 3.0 0. -H -45.0 4.0 0. -H -45.0 5.0 0. -H -45.0 6.0 0. -H -45.0 7.0 0. -H -45.0 8.0 0. -H -45.0 9.0 0. -H -45.0 10.0 0. -H -45.0 11.0 0. -H -45.0 12.0 0. -H -45.0 13.0 0. -H -45.0 14.0 0. -H -45.0 15.0 0. -H -45.0 16.0 0. -H -45.0 17.0 0. -H -45.0 18.0 0. -H -45.0 19.0 0. -H -45.0 20.0 0. -H -45.0 21.0 0. -H -45.0 22.0 0. -H -45.0 23.0 0. -H -45.0 24.0 0. -H -45.0 25.0 0. -H -45.0 26.0 0. -H -45.0 27.0 0. -H -45.0 28.0 0. -H -45.0 29.0 0. -H -45.0 30.0 0. -H -45.0 31.0 0. -H -45.0 32.0 0. -H -45.0 33.0 0. -H -45.0 34.0 0. -H -45.0 35.0 0. -H -45.0 36.0 0. -H -45.0 37.0 0. -H -45.0 38.0 0. -H -45.0 39.0 0. -H -45.0 40.0 0. -H -45.0 41.0 0. -H -45.0 42.0 0. -H -45.0 43.0 0. -H -45.0 44.0 0. -H -45.0 45.0 0. -H -45.0 46.0 0. -H -45.0 47.0 0. -H -45.0 48.0 0. -H -45.0 49.0 0. -H -44.0 -49.0 0. -H -44.0 -48.0 0. -H -44.0 -47.0 0. -H -44.0 -46.0 0. -H -44.0 -45.0 0. -H -44.0 -44.0 0. -H -44.0 -43.0 0. -H -44.0 -42.0 0. -H -44.0 -41.0 0. -H -44.0 -40.0 0. -H -44.0 -39.0 0. -H -44.0 -38.0 0. -H -44.0 -37.0 0. -H -44.0 -36.0 0. -H -44.0 -35.0 0. -H -44.0 -34.0 0. -H -44.0 -33.0 0. -H -44.0 -32.0 0. -H -44.0 -31.0 0. -H -44.0 -30.0 0. -H -44.0 -29.0 0. -H -44.0 -28.0 0. -H -44.0 -27.0 0. -H -44.0 -26.0 0. -H -44.0 -25.0 0. -H -44.0 -24.0 0. -H -44.0 -23.0 0. -H -44.0 -22.0 0. -H -44.0 -21.0 0. -H -44.0 -20.0 0. -H -44.0 -19.0 0. -H -44.0 -18.0 0. -H -44.0 -17.0 0. -H -44.0 -16.0 0. -H -44.0 -15.0 0. -H -44.0 -14.0 0. -H -44.0 -13.0 0. -H -44.0 -12.0 0. -H -44.0 -11.0 0. -H -44.0 -10.0 0. -H -44.0 -9.0 0. -H -44.0 -8.0 0. -H -44.0 -7.0 0. -H -44.0 -6.0 0. -H -44.0 -5.0 0. -H -44.0 -4.0 0. -H -44.0 -3.0 0. -H -44.0 -2.0 0. -H -44.0 -1.0 0. -H -44.0 0.0 0. -H -44.0 1.0 0. -H -44.0 2.0 0. -H -44.0 3.0 0. -H -44.0 4.0 0. -H -44.0 5.0 0. -H -44.0 6.0 0. -H -44.0 7.0 0. -H -44.0 8.0 0. -H -44.0 9.0 0. -H -44.0 10.0 0. -H -44.0 11.0 0. -H -44.0 12.0 0. -H -44.0 13.0 0. -H -44.0 14.0 0. -H -44.0 15.0 0. -H -44.0 16.0 0. -H -44.0 17.0 0. -H -44.0 18.0 0. -H -44.0 19.0 0. -H -44.0 20.0 0. -H -44.0 21.0 0. -H -44.0 22.0 0. -H -44.0 23.0 0. -H -44.0 24.0 0. -H -44.0 25.0 0. -H -44.0 26.0 0. -H -44.0 27.0 0. -H -44.0 28.0 0. -H -44.0 29.0 0. -H -44.0 30.0 0. -H -44.0 31.0 0. -H -44.0 32.0 0. -H -44.0 33.0 0. -H -44.0 34.0 0. -H -44.0 35.0 0. -H -44.0 36.0 0. -H -44.0 37.0 0. -H -44.0 38.0 0. -H -44.0 39.0 0. -H -44.0 40.0 0. -H -44.0 41.0 0. -H -44.0 42.0 0. -H -44.0 43.0 0. -H -44.0 44.0 0. -H -44.0 45.0 0. -H -44.0 46.0 0. -H -44.0 47.0 0. -H -44.0 48.0 0. -H -44.0 49.0 0. -H -43.0 -49.0 0. -H -43.0 -48.0 0. -H -43.0 -47.0 0. -H -43.0 -46.0 0. -H -43.0 -45.0 0. -H -43.0 -44.0 0. -H -43.0 -43.0 0. -H -43.0 -42.0 0. -H -43.0 -41.0 0. -H -43.0 -40.0 0. -H -43.0 -39.0 0. -H -43.0 -38.0 0. -H -43.0 -37.0 0. -H -43.0 -36.0 0. -H -43.0 -35.0 0. -H -43.0 -34.0 0. -H -43.0 -33.0 0. -H -43.0 -32.0 0. -H -43.0 -31.0 0. -H -43.0 -30.0 0. -H -43.0 -29.0 0. -H -43.0 -28.0 0. -H -43.0 -27.0 0. -H -43.0 -26.0 0. -H -43.0 -25.0 0. -H -43.0 -24.0 0. -H -43.0 -23.0 0. -H -43.0 -22.0 0. -H -43.0 -21.0 0. -H -43.0 -20.0 0. -H -43.0 -19.0 0. -H -43.0 -18.0 0. -H -43.0 -17.0 0. -H -43.0 -16.0 0. -H -43.0 -15.0 0. -H -43.0 -14.0 0. -H -43.0 -13.0 0. -H -43.0 -12.0 0. -H -43.0 -11.0 0. -H -43.0 -10.0 0. -H -43.0 -9.0 0. -H -43.0 -8.0 0. -H -43.0 -7.0 0. -H -43.0 -6.0 0. -H -43.0 -5.0 0. -H -43.0 -4.0 0. -H -43.0 -3.0 0. -H -43.0 -2.0 0. -H -43.0 -1.0 0. -H -43.0 0.0 0. -H -43.0 1.0 0. -H -43.0 2.0 0. -H -43.0 3.0 0. -H -43.0 4.0 0. -H -43.0 5.0 0. -H -43.0 6.0 0. -H -43.0 7.0 0. -H -43.0 8.0 0. -H -43.0 9.0 0. -H -43.0 10.0 0. -H -43.0 11.0 0. -H -43.0 12.0 0. -H -43.0 13.0 0. -H -43.0 14.0 0. -H -43.0 15.0 0. -H -43.0 16.0 0. -H -43.0 17.0 0. -H -43.0 18.0 0. -H -43.0 19.0 0. -H -43.0 20.0 0. -H -43.0 21.0 0. -H -43.0 22.0 0. -H -43.0 23.0 0. -H -43.0 24.0 0. -H -43.0 25.0 0. -H -43.0 26.0 0. -H -43.0 27.0 0. -H -43.0 28.0 0. -H -43.0 29.0 0. -H -43.0 30.0 0. -H -43.0 31.0 0. -H -43.0 32.0 0. -H -43.0 33.0 0. -H -43.0 34.0 0. -H -43.0 35.0 0. -H -43.0 36.0 0. -H -43.0 37.0 0. -H -43.0 38.0 0. -H -43.0 39.0 0. -H -43.0 40.0 0. -H -43.0 41.0 0. -H -43.0 42.0 0. -H -43.0 43.0 0. -H -43.0 44.0 0. -H -43.0 45.0 0. -H -43.0 46.0 0. -H -43.0 47.0 0. -H -43.0 48.0 0. -H -43.0 49.0 0. -H -42.0 -49.0 0. -H -42.0 -48.0 0. -H -42.0 -47.0 0. -H -42.0 -46.0 0. -H -42.0 -45.0 0. -H -42.0 -44.0 0. -H -42.0 -43.0 0. -H -42.0 -42.0 0. -H -42.0 -41.0 0. -H -42.0 -40.0 0. -H -42.0 -39.0 0. -H -42.0 -38.0 0. -H -42.0 -37.0 0. -H -42.0 -36.0 0. -H -42.0 -35.0 0. -H -42.0 -34.0 0. -H -42.0 -33.0 0. -H -42.0 -32.0 0. -H -42.0 -31.0 0. -H -42.0 -30.0 0. -H -42.0 -29.0 0. -H -42.0 -28.0 0. -H -42.0 -27.0 0. -H -42.0 -26.0 0. -H -42.0 -25.0 0. -H -42.0 -24.0 0. -H -42.0 -23.0 0. -H -42.0 -22.0 0. -H -42.0 -21.0 0. -H -42.0 -20.0 0. -H -42.0 -19.0 0. -H -42.0 -18.0 0. -H -42.0 -17.0 0. -H -42.0 -16.0 0. -H -42.0 -15.0 0. -H -42.0 -14.0 0. -H -42.0 -13.0 0. -H -42.0 -12.0 0. -H -42.0 -11.0 0. -H -42.0 -10.0 0. -H -42.0 -9.0 0. -H -42.0 -8.0 0. -H -42.0 -7.0 0. -H -42.0 -6.0 0. -H -42.0 -5.0 0. -H -42.0 -4.0 0. -H -42.0 -3.0 0. -H -42.0 -2.0 0. -H -42.0 -1.0 0. -H -42.0 0.0 0. -H -42.0 1.0 0. -H -42.0 2.0 0. -H -42.0 3.0 0. -H -42.0 4.0 0. -H -42.0 5.0 0. -H -42.0 6.0 0. -H -42.0 7.0 0. -H -42.0 8.0 0. -H -42.0 9.0 0. -H -42.0 10.0 0. -H -42.0 11.0 0. -H -42.0 12.0 0. -H -42.0 13.0 0. -H -42.0 14.0 0. -H -42.0 15.0 0. -H -42.0 16.0 0. -H -42.0 17.0 0. -H -42.0 18.0 0. -H -42.0 19.0 0. -H -42.0 20.0 0. -H -42.0 21.0 0. -H -42.0 22.0 0. -H -42.0 23.0 0. -H -42.0 24.0 0. -H -42.0 25.0 0. -H -42.0 26.0 0. -H -42.0 27.0 0. -H -42.0 28.0 0. -H -42.0 29.0 0. -H -42.0 30.0 0. -H -42.0 31.0 0. -H -42.0 32.0 0. -H -42.0 33.0 0. -H -42.0 34.0 0. -H -42.0 35.0 0. -H -42.0 36.0 0. -H -42.0 37.0 0. -H -42.0 38.0 0. -H -42.0 39.0 0. -H -42.0 40.0 0. -H -42.0 41.0 0. -H -42.0 42.0 0. -H -42.0 43.0 0. -H -42.0 44.0 0. -H -42.0 45.0 0. -H -42.0 46.0 0. -H -42.0 47.0 0. -H -42.0 48.0 0. -H -42.0 49.0 0. -H -41.0 -49.0 0. -H -41.0 -48.0 0. -H -41.0 -47.0 0. -H -41.0 -46.0 0. -H -41.0 -45.0 0. -H -41.0 -44.0 0. -H -41.0 -43.0 0. -H -41.0 -42.0 0. -H -41.0 -41.0 0. -H -41.0 -40.0 0. -H -41.0 -39.0 0. -H -41.0 -38.0 0. -H -41.0 -37.0 0. -H -41.0 -36.0 0. -H -41.0 -35.0 0. -H -41.0 -34.0 0. -H -41.0 -33.0 0. -H -41.0 -32.0 0. -H -41.0 -31.0 0. -H -41.0 -30.0 0. -H -41.0 -29.0 0. -H -41.0 -28.0 0. -H -41.0 -27.0 0. -H -41.0 -26.0 0. -H -41.0 -25.0 0. -H -41.0 -24.0 0. -H -41.0 -23.0 0. -H -41.0 -22.0 0. -H -41.0 -21.0 0. -H -41.0 -20.0 0. -H -41.0 -19.0 0. -H -41.0 -18.0 0. -H -41.0 -17.0 0. -H -41.0 -16.0 0. -H -41.0 -15.0 0. -H -41.0 -14.0 0. -H -41.0 -13.0 0. -H -41.0 -12.0 0. -H -41.0 -11.0 0. -H -41.0 -10.0 0. -H -41.0 -9.0 0. -H -41.0 -8.0 0. -H -41.0 -7.0 0. -H -41.0 -6.0 0. -H -41.0 -5.0 0. -H -41.0 -4.0 0. -H -41.0 -3.0 0. -H -41.0 -2.0 0. -H -41.0 -1.0 0. -H -41.0 0.0 0. -H -41.0 1.0 0. -H -41.0 2.0 0. -H -41.0 3.0 0. -H -41.0 4.0 0. -H -41.0 5.0 0. -H -41.0 6.0 0. -H -41.0 7.0 0. -H -41.0 8.0 0. -H -41.0 9.0 0. -H -41.0 10.0 0. -H -41.0 11.0 0. -H -41.0 12.0 0. -H -41.0 13.0 0. -H -41.0 14.0 0. -H -41.0 15.0 0. -H -41.0 16.0 0. -H -41.0 17.0 0. -H -41.0 18.0 0. -H -41.0 19.0 0. -H -41.0 20.0 0. -H -41.0 21.0 0. -H -41.0 22.0 0. -H -41.0 23.0 0. -H -41.0 24.0 0. -H -41.0 25.0 0. -H -41.0 26.0 0. -H -41.0 27.0 0. -H -41.0 28.0 0. -H -41.0 29.0 0. -H -41.0 30.0 0. -H -41.0 31.0 0. -H -41.0 32.0 0. -H -41.0 33.0 0. -H -41.0 34.0 0. -H -41.0 35.0 0. -H -41.0 36.0 0. -H -41.0 37.0 0. -H -41.0 38.0 0. -H -41.0 39.0 0. -H -41.0 40.0 0. -H -41.0 41.0 0. -H -41.0 42.0 0. -H -41.0 43.0 0. -H -41.0 44.0 0. -H -41.0 45.0 0. -H -41.0 46.0 0. -H -41.0 47.0 0. -H -41.0 48.0 0. -H -41.0 49.0 0. -H -40.0 -49.0 0. -H -40.0 -48.0 0. -H -40.0 -47.0 0. -H -40.0 -46.0 0. -H -40.0 -45.0 0. -H -40.0 -44.0 0. -H -40.0 -43.0 0. -H -40.0 -42.0 0. -H -40.0 -41.0 0. -H -40.0 -40.0 0. -H -40.0 -39.0 0. -H -40.0 -38.0 0. -H -40.0 -37.0 0. -H -40.0 -36.0 0. -H -40.0 -35.0 0. -H -40.0 -34.0 0. -H -40.0 -33.0 0. -H -40.0 -32.0 0. -H -40.0 -31.0 0. -H -40.0 -30.0 0. -H -40.0 -29.0 0. -H -40.0 -28.0 0. -H -40.0 -27.0 0. -H -40.0 -26.0 0. -H -40.0 -25.0 0. -H -40.0 -24.0 0. -H -40.0 -23.0 0. -H -40.0 -22.0 0. -H -40.0 -21.0 0. -H -40.0 -20.0 0. -H -40.0 -19.0 0. -H -40.0 -18.0 0. -H -40.0 -17.0 0. -H -40.0 -16.0 0. -H -40.0 -15.0 0. -H -40.0 -14.0 0. -H -40.0 -13.0 0. -H -40.0 -12.0 0. -H -40.0 -11.0 0. -H -40.0 -10.0 0. -H -40.0 -9.0 0. -H -40.0 -8.0 0. -H -40.0 -7.0 0. -H -40.0 -6.0 0. -H -40.0 -5.0 0. -H -40.0 -4.0 0. -H -40.0 -3.0 0. -H -40.0 -2.0 0. -H -40.0 -1.0 0. -H -40.0 0.0 0. -H -40.0 1.0 0. -H -40.0 2.0 0. -H -40.0 3.0 0. -H -40.0 4.0 0. -H -40.0 5.0 0. -H -40.0 6.0 0. -H -40.0 7.0 0. -H -40.0 8.0 0. -H -40.0 9.0 0. -H -40.0 10.0 0. -H -40.0 11.0 0. -H -40.0 12.0 0. -H -40.0 13.0 0. -H -40.0 14.0 0. -H -40.0 15.0 0. -H -40.0 16.0 0. -H -40.0 17.0 0. -H -40.0 18.0 0. -H -40.0 19.0 0. -H -40.0 20.0 0. -H -40.0 21.0 0. -H -40.0 22.0 0. -H -40.0 23.0 0. -H -40.0 24.0 0. -H -40.0 25.0 0. -H -40.0 26.0 0. -H -40.0 27.0 0. -H -40.0 28.0 0. -H -40.0 29.0 0. -H -40.0 30.0 0. -H -40.0 31.0 0. -H -40.0 32.0 0. -H -40.0 33.0 0. -H -40.0 34.0 0. -H -40.0 35.0 0. -H -40.0 36.0 0. -H -40.0 37.0 0. -H -40.0 38.0 0. -H -40.0 39.0 0. -H -40.0 40.0 0. -H -40.0 41.0 0. -H -40.0 42.0 0. -H -40.0 43.0 0. -H -40.0 44.0 0. -H -40.0 45.0 0. -H -40.0 46.0 0. -H -40.0 47.0 0. -H -40.0 48.0 0. -H -40.0 49.0 0. -H -39.0 -49.0 0. -H -39.0 -48.0 0. -H -39.0 -47.0 0. -H -39.0 -46.0 0. -H -39.0 -45.0 0. -H -39.0 -44.0 0. -H -39.0 -43.0 0. -H -39.0 -42.0 0. -H -39.0 -41.0 0. -H -39.0 -40.0 0. -H -39.0 -39.0 0. -H -39.0 -38.0 0. -H -39.0 -37.0 0. -H -39.0 -36.0 0. -H -39.0 -35.0 0. -H -39.0 -34.0 0. -H -39.0 -33.0 0. -H -39.0 -32.0 0. -H -39.0 -31.0 0. -H -39.0 -30.0 0. -H -39.0 -29.0 0. -H -39.0 -28.0 0. -H -39.0 -27.0 0. -H -39.0 -26.0 0. -H -39.0 -25.0 0. -H -39.0 -24.0 0. -H -39.0 -23.0 0. -H -39.0 -22.0 0. -H -39.0 -21.0 0. -H -39.0 -20.0 0. -H -39.0 -19.0 0. -H -39.0 -18.0 0. -H -39.0 -17.0 0. -H -39.0 -16.0 0. -H -39.0 -15.0 0. -H -39.0 -14.0 0. -H -39.0 -13.0 0. -H -39.0 -12.0 0. -H -39.0 -11.0 0. -H -39.0 -10.0 0. -H -39.0 -9.0 0. -H -39.0 -8.0 0. -H -39.0 -7.0 0. -H -39.0 -6.0 0. -H -39.0 -5.0 0. -H -39.0 -4.0 0. -H -39.0 -3.0 0. -H -39.0 -2.0 0. -H -39.0 -1.0 0. -H -39.0 0.0 0. -H -39.0 1.0 0. -H -39.0 2.0 0. -H -39.0 3.0 0. -H -39.0 4.0 0. -H -39.0 5.0 0. -H -39.0 6.0 0. -H -39.0 7.0 0. -H -39.0 8.0 0. -H -39.0 9.0 0. -H -39.0 10.0 0. -H -39.0 11.0 0. -H -39.0 12.0 0. -H -39.0 13.0 0. -H -39.0 14.0 0. -H -39.0 15.0 0. -H -39.0 16.0 0. -H -39.0 17.0 0. -H -39.0 18.0 0. -H -39.0 19.0 0. -H -39.0 20.0 0. -H -39.0 21.0 0. -H -39.0 22.0 0. -H -39.0 23.0 0. -H -39.0 24.0 0. -H -39.0 25.0 0. -H -39.0 26.0 0. -H -39.0 27.0 0. -H -39.0 28.0 0. -H -39.0 29.0 0. -H -39.0 30.0 0. -H -39.0 31.0 0. -H -39.0 32.0 0. -H -39.0 33.0 0. -H -39.0 34.0 0. -H -39.0 35.0 0. -H -39.0 36.0 0. -H -39.0 37.0 0. -H -39.0 38.0 0. -H -39.0 39.0 0. -H -39.0 40.0 0. -H -39.0 41.0 0. -H -39.0 42.0 0. -H -39.0 43.0 0. -H -39.0 44.0 0. -H -39.0 45.0 0. -H -39.0 46.0 0. -H -39.0 47.0 0. -H -39.0 48.0 0. -H -39.0 49.0 0. -H -38.0 -49.0 0. -H -38.0 -48.0 0. -H -38.0 -47.0 0. -H -38.0 -46.0 0. -H -38.0 -45.0 0. -H -38.0 -44.0 0. -H -38.0 -43.0 0. -H -38.0 -42.0 0. -H -38.0 -41.0 0. -H -38.0 -40.0 0. -H -38.0 -39.0 0. -H -38.0 -38.0 0. -H -38.0 -37.0 0. -H -38.0 -36.0 0. -H -38.0 -35.0 0. -H -38.0 -34.0 0. -H -38.0 -33.0 0. -H -38.0 -32.0 0. -H -38.0 -31.0 0. -H -38.0 -30.0 0. -H -38.0 -29.0 0. -H -38.0 -28.0 0. -H -38.0 -27.0 0. -H -38.0 -26.0 0. -H -38.0 -25.0 0. -H -38.0 -24.0 0. -H -38.0 -23.0 0. -H -38.0 -22.0 0. -H -38.0 -21.0 0. -H -38.0 -20.0 0. -H -38.0 -19.0 0. -H -38.0 -18.0 0. -H -38.0 -17.0 0. -H -38.0 -16.0 0. -H -38.0 -15.0 0. -H -38.0 -14.0 0. -H -38.0 -13.0 0. -H -38.0 -12.0 0. -H -38.0 -11.0 0. -H -38.0 -10.0 0. -H -38.0 -9.0 0. -H -38.0 -8.0 0. -H -38.0 -7.0 0. -H -38.0 -6.0 0. -H -38.0 -5.0 0. -H -38.0 -4.0 0. -H -38.0 -3.0 0. -H -38.0 -2.0 0. -H -38.0 -1.0 0. -H -38.0 0.0 0. -H -38.0 1.0 0. -H -38.0 2.0 0. -H -38.0 3.0 0. -H -38.0 4.0 0. -H -38.0 5.0 0. -H -38.0 6.0 0. -H -38.0 7.0 0. -H -38.0 8.0 0. -H -38.0 9.0 0. -H -38.0 10.0 0. -H -38.0 11.0 0. -H -38.0 12.0 0. -H -38.0 13.0 0. -H -38.0 14.0 0. -H -38.0 15.0 0. -H -38.0 16.0 0. -H -38.0 17.0 0. -H -38.0 18.0 0. -H -38.0 19.0 0. -H -38.0 20.0 0. -H -38.0 21.0 0. -H -38.0 22.0 0. -H -38.0 23.0 0. -H -38.0 24.0 0. -H -38.0 25.0 0. -H -38.0 26.0 0. -H -38.0 27.0 0. -H -38.0 28.0 0. -H -38.0 29.0 0. -H -38.0 30.0 0. -H -38.0 31.0 0. -H -38.0 32.0 0. -H -38.0 33.0 0. -H -38.0 34.0 0. -H -38.0 35.0 0. -H -38.0 36.0 0. -H -38.0 37.0 0. -H -38.0 38.0 0. -H -38.0 39.0 0. -H -38.0 40.0 0. -H -38.0 41.0 0. -H -38.0 42.0 0. -H -38.0 43.0 0. -H -38.0 44.0 0. -H -38.0 45.0 0. -H -38.0 46.0 0. -H -38.0 47.0 0. -H -38.0 48.0 0. -H -38.0 49.0 0. -H -37.0 -49.0 0. -H -37.0 -48.0 0. -H -37.0 -47.0 0. -H -37.0 -46.0 0. -H -37.0 -45.0 0. -H -37.0 -44.0 0. -H -37.0 -43.0 0. -H -37.0 -42.0 0. -H -37.0 -41.0 0. -H -37.0 -40.0 0. -H -37.0 -39.0 0. -H -37.0 -38.0 0. -H -37.0 -37.0 0. -H -37.0 -36.0 0. -H -37.0 -35.0 0. -H -37.0 -34.0 0. -H -37.0 -33.0 0. -H -37.0 -32.0 0. -H -37.0 -31.0 0. -H -37.0 -30.0 0. -H -37.0 -29.0 0. -H -37.0 -28.0 0. -H -37.0 -27.0 0. -H -37.0 -26.0 0. -H -37.0 -25.0 0. -H -37.0 -24.0 0. -H -37.0 -23.0 0. -H -37.0 -22.0 0. -H -37.0 -21.0 0. -H -37.0 -20.0 0. -H -37.0 -19.0 0. -H -37.0 -18.0 0. -H -37.0 -17.0 0. -H -37.0 -16.0 0. -H -37.0 -15.0 0. -H -37.0 -14.0 0. -H -37.0 -13.0 0. -H -37.0 -12.0 0. -H -37.0 -11.0 0. -H -37.0 -10.0 0. -H -37.0 -9.0 0. -H -37.0 -8.0 0. -H -37.0 -7.0 0. -H -37.0 -6.0 0. -H -37.0 -5.0 0. -H -37.0 -4.0 0. -H -37.0 -3.0 0. -H -37.0 -2.0 0. -H -37.0 -1.0 0. -H -37.0 0.0 0. -H -37.0 1.0 0. -H -37.0 2.0 0. -H -37.0 3.0 0. -H -37.0 4.0 0. -H -37.0 5.0 0. -H -37.0 6.0 0. -H -37.0 7.0 0. -H -37.0 8.0 0. -H -37.0 9.0 0. -H -37.0 10.0 0. -H -37.0 11.0 0. -H -37.0 12.0 0. -H -37.0 13.0 0. -H -37.0 14.0 0. -H -37.0 15.0 0. -H -37.0 16.0 0. -H -37.0 17.0 0. -H -37.0 18.0 0. -H -37.0 19.0 0. -H -37.0 20.0 0. -H -37.0 21.0 0. -H -37.0 22.0 0. -H -37.0 23.0 0. -H -37.0 24.0 0. -H -37.0 25.0 0. -H -37.0 26.0 0. -H -37.0 27.0 0. -H -37.0 28.0 0. -H -37.0 29.0 0. -H -37.0 30.0 0. -H -37.0 31.0 0. -H -37.0 32.0 0. -H -37.0 33.0 0. -H -37.0 34.0 0. -H -37.0 35.0 0. -H -37.0 36.0 0. -H -37.0 37.0 0. -H -37.0 38.0 0. -H -37.0 39.0 0. -H -37.0 40.0 0. -H -37.0 41.0 0. -H -37.0 42.0 0. -H -37.0 43.0 0. -H -37.0 44.0 0. -H -37.0 45.0 0. -H -37.0 46.0 0. -H -37.0 47.0 0. -H -37.0 48.0 0. -H -37.0 49.0 0. -H -36.0 -49.0 0. -H -36.0 -48.0 0. -H -36.0 -47.0 0. -H -36.0 -46.0 0. -H -36.0 -45.0 0. -H -36.0 -44.0 0. -H -36.0 -43.0 0. -H -36.0 -42.0 0. -H -36.0 -41.0 0. -H -36.0 -40.0 0. -H -36.0 -39.0 0. -H -36.0 -38.0 0. -H -36.0 -37.0 0. -H -36.0 -36.0 0. -H -36.0 -35.0 0. -H -36.0 -34.0 0. -H -36.0 -33.0 0. -H -36.0 -32.0 0. -H -36.0 -31.0 0. -H -36.0 -30.0 0. -H -36.0 -29.0 0. -H -36.0 -28.0 0. -H -36.0 -27.0 0. -H -36.0 -26.0 0. -H -36.0 -25.0 0. -H -36.0 -24.0 0. -H -36.0 -23.0 0. -H -36.0 -22.0 0. -H -36.0 -21.0 0. -H -36.0 -20.0 0. -H -36.0 -19.0 0. -H -36.0 -18.0 0. -H -36.0 -17.0 0. -H -36.0 -16.0 0. -H -36.0 -15.0 0. -H -36.0 -14.0 0. -H -36.0 -13.0 0. -H -36.0 -12.0 0. -H -36.0 -11.0 0. -H -36.0 -10.0 0. -H -36.0 -9.0 0. -H -36.0 -8.0 0. -H -36.0 -7.0 0. -H -36.0 -6.0 0. -H -36.0 -5.0 0. -H -36.0 -4.0 0. -H -36.0 -3.0 0. -H -36.0 -2.0 0. -H -36.0 -1.0 0. -H -36.0 0.0 0. -H -36.0 1.0 0. -H -36.0 2.0 0. -H -36.0 3.0 0. -H -36.0 4.0 0. -H -36.0 5.0 0. -H -36.0 6.0 0. -H -36.0 7.0 0. -H -36.0 8.0 0. -H -36.0 9.0 0. -H -36.0 10.0 0. -H -36.0 11.0 0. -H -36.0 12.0 0. -H -36.0 13.0 0. -H -36.0 14.0 0. -H -36.0 15.0 0. -H -36.0 16.0 0. -H -36.0 17.0 0. -H -36.0 18.0 0. -H -36.0 19.0 0. -H -36.0 20.0 0. -H -36.0 21.0 0. -H -36.0 22.0 0. -H -36.0 23.0 0. -H -36.0 24.0 0. -H -36.0 25.0 0. -H -36.0 26.0 0. -H -36.0 27.0 0. -H -36.0 28.0 0. -H -36.0 29.0 0. -H -36.0 30.0 0. -H -36.0 31.0 0. -H -36.0 32.0 0. -H -36.0 33.0 0. -H -36.0 34.0 0. -H -36.0 35.0 0. -H -36.0 36.0 0. -H -36.0 37.0 0. -H -36.0 38.0 0. -H -36.0 39.0 0. -H -36.0 40.0 0. -H -36.0 41.0 0. -H -36.0 42.0 0. -H -36.0 43.0 0. -H -36.0 44.0 0. -H -36.0 45.0 0. -H -36.0 46.0 0. -H -36.0 47.0 0. -H -36.0 48.0 0. -H -36.0 49.0 0. -H -35.0 -49.0 0. -H -35.0 -48.0 0. -H -35.0 -47.0 0. -H -35.0 -46.0 0. -H -35.0 -45.0 0. -H -35.0 -44.0 0. -H -35.0 -43.0 0. -H -35.0 -42.0 0. -H -35.0 -41.0 0. -H -35.0 -40.0 0. -H -35.0 -39.0 0. -H -35.0 -38.0 0. -H -35.0 -37.0 0. -H -35.0 -36.0 0. -H -35.0 -35.0 0. -H -35.0 -34.0 0. -H -35.0 -33.0 0. -H -35.0 -32.0 0. -H -35.0 -31.0 0. -H -35.0 -30.0 0. -H -35.0 -29.0 0. -H -35.0 -28.0 0. -H -35.0 -27.0 0. -H -35.0 -26.0 0. -H -35.0 -25.0 0. -H -35.0 -24.0 0. -H -35.0 -23.0 0. -H -35.0 -22.0 0. -H -35.0 -21.0 0. -H -35.0 -20.0 0. -H -35.0 -19.0 0. -H -35.0 -18.0 0. -H -35.0 -17.0 0. -H -35.0 -16.0 0. -H -35.0 -15.0 0. -H -35.0 -14.0 0. -H -35.0 -13.0 0. -H -35.0 -12.0 0. -H -35.0 -11.0 0. -H -35.0 -10.0 0. -H -35.0 -9.0 0. -H -35.0 -8.0 0. -H -35.0 -7.0 0. -H -35.0 -6.0 0. -H -35.0 -5.0 0. -H -35.0 -4.0 0. -H -35.0 -3.0 0. -H -35.0 -2.0 0. -H -35.0 -1.0 0. -H -35.0 0.0 0. -H -35.0 1.0 0. -H -35.0 2.0 0. -H -35.0 3.0 0. -H -35.0 4.0 0. -H -35.0 5.0 0. -H -35.0 6.0 0. -H -35.0 7.0 0. -H -35.0 8.0 0. -H -35.0 9.0 0. -H -35.0 10.0 0. -H -35.0 11.0 0. -H -35.0 12.0 0. -H -35.0 13.0 0. -H -35.0 14.0 0. -H -35.0 15.0 0. -H -35.0 16.0 0. -H -35.0 17.0 0. -H -35.0 18.0 0. -H -35.0 19.0 0. -H -35.0 20.0 0. -H -35.0 21.0 0. -H -35.0 22.0 0. -H -35.0 23.0 0. -H -35.0 24.0 0. -H -35.0 25.0 0. -H -35.0 26.0 0. -H -35.0 27.0 0. -H -35.0 28.0 0. -H -35.0 29.0 0. -H -35.0 30.0 0. -H -35.0 31.0 0. -H -35.0 32.0 0. -H -35.0 33.0 0. -H -35.0 34.0 0. -H -35.0 35.0 0. -H -35.0 36.0 0. -H -35.0 37.0 0. -H -35.0 38.0 0. -H -35.0 39.0 0. -H -35.0 40.0 0. -H -35.0 41.0 0. -H -35.0 42.0 0. -H -35.0 43.0 0. -H -35.0 44.0 0. -H -35.0 45.0 0. -H -35.0 46.0 0. -H -35.0 47.0 0. -H -35.0 48.0 0. -H -35.0 49.0 0. -H -34.0 -49.0 0. -H -34.0 -48.0 0. -H -34.0 -47.0 0. -H -34.0 -46.0 0. -H -34.0 -45.0 0. -H -34.0 -44.0 0. -H -34.0 -43.0 0. -H -34.0 -42.0 0. -H -34.0 -41.0 0. -H -34.0 -40.0 0. -H -34.0 -39.0 0. -H -34.0 -38.0 0. -H -34.0 -37.0 0. -H -34.0 -36.0 0. -H -34.0 -35.0 0. -H -34.0 -34.0 0. -H -34.0 -33.0 0. -H -34.0 -32.0 0. -H -34.0 -31.0 0. -H -34.0 -30.0 0. -H -34.0 -29.0 0. -H -34.0 -28.0 0. -H -34.0 -27.0 0. -H -34.0 -26.0 0. -H -34.0 -25.0 0. -H -34.0 -24.0 0. -H -34.0 -23.0 0. -H -34.0 -22.0 0. -H -34.0 -21.0 0. -H -34.0 -20.0 0. -H -34.0 -19.0 0. -H -34.0 -18.0 0. -H -34.0 -17.0 0. -H -34.0 -16.0 0. -H -34.0 -15.0 0. -H -34.0 -14.0 0. -H -34.0 -13.0 0. -H -34.0 -12.0 0. -H -34.0 -11.0 0. -H -34.0 -10.0 0. -H -34.0 -9.0 0. -H -34.0 -8.0 0. -H -34.0 -7.0 0. -H -34.0 -6.0 0. -H -34.0 -5.0 0. -H -34.0 -4.0 0. -H -34.0 -3.0 0. -H -34.0 -2.0 0. -H -34.0 -1.0 0. -H -34.0 0.0 0. -H -34.0 1.0 0. -H -34.0 2.0 0. -H -34.0 3.0 0. -H -34.0 4.0 0. -H -34.0 5.0 0. -H -34.0 6.0 0. -H -34.0 7.0 0. -H -34.0 8.0 0. -H -34.0 9.0 0. -H -34.0 10.0 0. -H -34.0 11.0 0. -H -34.0 12.0 0. -H -34.0 13.0 0. -H -34.0 14.0 0. -H -34.0 15.0 0. -H -34.0 16.0 0. -H -34.0 17.0 0. -H -34.0 18.0 0. -H -34.0 19.0 0. -H -34.0 20.0 0. -H -34.0 21.0 0. -H -34.0 22.0 0. -H -34.0 23.0 0. -H -34.0 24.0 0. -H -34.0 25.0 0. -H -34.0 26.0 0. -H -34.0 27.0 0. -H -34.0 28.0 0. -H -34.0 29.0 0. -H -34.0 30.0 0. -H -34.0 31.0 0. -H -34.0 32.0 0. -H -34.0 33.0 0. -H -34.0 34.0 0. -H -34.0 35.0 0. -H -34.0 36.0 0. -H -34.0 37.0 0. -H -34.0 38.0 0. -H -34.0 39.0 0. -H -34.0 40.0 0. -H -34.0 41.0 0. -H -34.0 42.0 0. -H -34.0 43.0 0. -H -34.0 44.0 0. -H -34.0 45.0 0. -H -34.0 46.0 0. -H -34.0 47.0 0. -H -34.0 48.0 0. -H -34.0 49.0 0. -H -33.0 -49.0 0. -H -33.0 -48.0 0. -H -33.0 -47.0 0. -H -33.0 -46.0 0. -H -33.0 -45.0 0. -H -33.0 -44.0 0. -H -33.0 -43.0 0. -H -33.0 -42.0 0. -H -33.0 -41.0 0. -H -33.0 -40.0 0. -H -33.0 -39.0 0. -H -33.0 -38.0 0. -H -33.0 -37.0 0. -H -33.0 -36.0 0. -H -33.0 -35.0 0. -H -33.0 -34.0 0. -H -33.0 -33.0 0. -H -33.0 -32.0 0. -H -33.0 -31.0 0. -H -33.0 -30.0 0. -H -33.0 -29.0 0. -H -33.0 -28.0 0. -H -33.0 -27.0 0. -H -33.0 -26.0 0. -H -33.0 -25.0 0. -H -33.0 -24.0 0. -H -33.0 -23.0 0. -H -33.0 -22.0 0. -H -33.0 -21.0 0. -H -33.0 -20.0 0. -H -33.0 -19.0 0. -H -33.0 -18.0 0. -H -33.0 -17.0 0. -H -33.0 -16.0 0. -H -33.0 -15.0 0. -H -33.0 -14.0 0. -H -33.0 -13.0 0. -H -33.0 -12.0 0. -H -33.0 -11.0 0. -H -33.0 -10.0 0. -H -33.0 -9.0 0. -H -33.0 -8.0 0. -H -33.0 -7.0 0. -H -33.0 -6.0 0. -H -33.0 -5.0 0. -H -33.0 -4.0 0. -H -33.0 -3.0 0. -H -33.0 -2.0 0. -H -33.0 -1.0 0. -H -33.0 0.0 0. -H -33.0 1.0 0. -H -33.0 2.0 0. -H -33.0 3.0 0. -H -33.0 4.0 0. -H -33.0 5.0 0. -H -33.0 6.0 0. -H -33.0 7.0 0. -H -33.0 8.0 0. -H -33.0 9.0 0. -H -33.0 10.0 0. -H -33.0 11.0 0. -H -33.0 12.0 0. -H -33.0 13.0 0. -H -33.0 14.0 0. -H -33.0 15.0 0. -H -33.0 16.0 0. -H -33.0 17.0 0. -H -33.0 18.0 0. -H -33.0 19.0 0. -H -33.0 20.0 0. -H -33.0 21.0 0. -H -33.0 22.0 0. -H -33.0 23.0 0. -H -33.0 24.0 0. -H -33.0 25.0 0. -H -33.0 26.0 0. -H -33.0 27.0 0. -H -33.0 28.0 0. -H -33.0 29.0 0. -H -33.0 30.0 0. -H -33.0 31.0 0. -H -33.0 32.0 0. -H -33.0 33.0 0. -H -33.0 34.0 0. -H -33.0 35.0 0. -H -33.0 36.0 0. -H -33.0 37.0 0. -H -33.0 38.0 0. -H -33.0 39.0 0. -H -33.0 40.0 0. -H -33.0 41.0 0. -H -33.0 42.0 0. -H -33.0 43.0 0. -H -33.0 44.0 0. -H -33.0 45.0 0. -H -33.0 46.0 0. -H -33.0 47.0 0. -H -33.0 48.0 0. -H -33.0 49.0 0. -H -32.0 -49.0 0. -H -32.0 -48.0 0. -H -32.0 -47.0 0. -H -32.0 -46.0 0. -H -32.0 -45.0 0. -H -32.0 -44.0 0. -H -32.0 -43.0 0. -H -32.0 -42.0 0. -H -32.0 -41.0 0. -H -32.0 -40.0 0. -H -32.0 -39.0 0. -H -32.0 -38.0 0. -H -32.0 -37.0 0. -H -32.0 -36.0 0. -H -32.0 -35.0 0. -H -32.0 -34.0 0. -H -32.0 -33.0 0. -H -32.0 -32.0 0. -H -32.0 -31.0 0. -H -32.0 -30.0 0. -H -32.0 -29.0 0. -H -32.0 -28.0 0. -H -32.0 -27.0 0. -H -32.0 -26.0 0. -H -32.0 -25.0 0. -H -32.0 -24.0 0. -H -32.0 -23.0 0. -H -32.0 -22.0 0. -H -32.0 -21.0 0. -H -32.0 -20.0 0. -H -32.0 -19.0 0. -H -32.0 -18.0 0. -H -32.0 -17.0 0. -H -32.0 -16.0 0. -H -32.0 -15.0 0. -H -32.0 -14.0 0. -H -32.0 -13.0 0. -H -32.0 -12.0 0. -H -32.0 -11.0 0. -H -32.0 -10.0 0. -H -32.0 -9.0 0. -H -32.0 -8.0 0. -H -32.0 -7.0 0. -H -32.0 -6.0 0. -H -32.0 -5.0 0. -H -32.0 -4.0 0. -H -32.0 -3.0 0. -H -32.0 -2.0 0. -H -32.0 -1.0 0. -H -32.0 0.0 0. -H -32.0 1.0 0. -H -32.0 2.0 0. -H -32.0 3.0 0. -H -32.0 4.0 0. -H -32.0 5.0 0. -H -32.0 6.0 0. -H -32.0 7.0 0. -H -32.0 8.0 0. -H -32.0 9.0 0. -H -32.0 10.0 0. -H -32.0 11.0 0. -H -32.0 12.0 0. -H -32.0 13.0 0. -H -32.0 14.0 0. -H -32.0 15.0 0. -H -32.0 16.0 0. -H -32.0 17.0 0. -H -32.0 18.0 0. -H -32.0 19.0 0. -H -32.0 20.0 0. -H -32.0 21.0 0. -H -32.0 22.0 0. -H -32.0 23.0 0. -H -32.0 24.0 0. -H -32.0 25.0 0. -H -32.0 26.0 0. -H -32.0 27.0 0. -H -32.0 28.0 0. -H -32.0 29.0 0. -H -32.0 30.0 0. -H -32.0 31.0 0. -H -32.0 32.0 0. -H -32.0 33.0 0. -H -32.0 34.0 0. -H -32.0 35.0 0. -H -32.0 36.0 0. -H -32.0 37.0 0. -H -32.0 38.0 0. -H -32.0 39.0 0. -H -32.0 40.0 0. -H -32.0 41.0 0. -H -32.0 42.0 0. -H -32.0 43.0 0. -H -32.0 44.0 0. -H -32.0 45.0 0. -H -32.0 46.0 0. -H -32.0 47.0 0. -H -32.0 48.0 0. -H -32.0 49.0 0. -H -31.0 -49.0 0. -H -31.0 -48.0 0. -H -31.0 -47.0 0. -H -31.0 -46.0 0. -H -31.0 -45.0 0. -H -31.0 -44.0 0. -H -31.0 -43.0 0. -H -31.0 -42.0 0. -H -31.0 -41.0 0. -H -31.0 -40.0 0. -H -31.0 -39.0 0. -H -31.0 -38.0 0. -H -31.0 -37.0 0. -H -31.0 -36.0 0. -H -31.0 -35.0 0. -H -31.0 -34.0 0. -H -31.0 -33.0 0. -H -31.0 -32.0 0. -H -31.0 -31.0 0. -H -31.0 -30.0 0. -H -31.0 -29.0 0. -H -31.0 -28.0 0. -H -31.0 -27.0 0. -H -31.0 -26.0 0. -H -31.0 -25.0 0. -H -31.0 -24.0 0. -H -31.0 -23.0 0. -H -31.0 -22.0 0. -H -31.0 -21.0 0. -H -31.0 -20.0 0. -H -31.0 -19.0 0. -H -31.0 -18.0 0. -H -31.0 -17.0 0. -H -31.0 -16.0 0. -H -31.0 -15.0 0. -H -31.0 -14.0 0. -H -31.0 -13.0 0. -H -31.0 -12.0 0. -H -31.0 -11.0 0. -H -31.0 -10.0 0. -H -31.0 -9.0 0. -H -31.0 -8.0 0. -H -31.0 -7.0 0. -H -31.0 -6.0 0. -H -31.0 -5.0 0. -H -31.0 -4.0 0. -H -31.0 -3.0 0. -H -31.0 -2.0 0. -H -31.0 -1.0 0. -H -31.0 0.0 0. -H -31.0 1.0 0. -H -31.0 2.0 0. -H -31.0 3.0 0. -H -31.0 4.0 0. -H -31.0 5.0 0. -H -31.0 6.0 0. -H -31.0 7.0 0. -H -31.0 8.0 0. -H -31.0 9.0 0. -H -31.0 10.0 0. -H -31.0 11.0 0. -H -31.0 12.0 0. -H -31.0 13.0 0. -H -31.0 14.0 0. -H -31.0 15.0 0. -H -31.0 16.0 0. -H -31.0 17.0 0. -H -31.0 18.0 0. -H -31.0 19.0 0. -H -31.0 20.0 0. -H -31.0 21.0 0. -H -31.0 22.0 0. -H -31.0 23.0 0. -H -31.0 24.0 0. -H -31.0 25.0 0. -H -31.0 26.0 0. -H -31.0 27.0 0. -H -31.0 28.0 0. -H -31.0 29.0 0. -H -31.0 30.0 0. -H -31.0 31.0 0. -H -31.0 32.0 0. -H -31.0 33.0 0. -H -31.0 34.0 0. -H -31.0 35.0 0. -H -31.0 36.0 0. -H -31.0 37.0 0. -H -31.0 38.0 0. -H -31.0 39.0 0. -H -31.0 40.0 0. -H -31.0 41.0 0. -H -31.0 42.0 0. -H -31.0 43.0 0. -H -31.0 44.0 0. -H -31.0 45.0 0. -H -31.0 46.0 0. -H -31.0 47.0 0. -H -31.0 48.0 0. -H -31.0 49.0 0. -H -30.0 -49.0 0. -H -30.0 -48.0 0. -H -30.0 -47.0 0. -H -30.0 -46.0 0. -H -30.0 -45.0 0. -H -30.0 -44.0 0. -H -30.0 -43.0 0. -H -30.0 -42.0 0. -H -30.0 -41.0 0. -H -30.0 -40.0 0. -H -30.0 -39.0 0. -H -30.0 -38.0 0. -H -30.0 -37.0 0. -H -30.0 -36.0 0. -H -30.0 -35.0 0. -H -30.0 -34.0 0. -H -30.0 -33.0 0. -H -30.0 -32.0 0. -H -30.0 -31.0 0. -H -30.0 -30.0 0. -H -30.0 -29.0 0. -H -30.0 -28.0 0. -H -30.0 -27.0 0. -H -30.0 -26.0 0. -H -30.0 -25.0 0. -H -30.0 -24.0 0. -H -30.0 -23.0 0. -H -30.0 -22.0 0. -H -30.0 -21.0 0. -H -30.0 -20.0 0. -H -30.0 -19.0 0. -H -30.0 -18.0 0. -H -30.0 -17.0 0. -H -30.0 -16.0 0. -H -30.0 -15.0 0. -H -30.0 -14.0 0. -H -30.0 -13.0 0. -H -30.0 -12.0 0. -H -30.0 -11.0 0. -H -30.0 -10.0 0. -H -30.0 -9.0 0. -H -30.0 -8.0 0. -H -30.0 -7.0 0. -H -30.0 -6.0 0. -H -30.0 -5.0 0. -H -30.0 -4.0 0. -H -30.0 -3.0 0. -H -30.0 -2.0 0. -H -30.0 -1.0 0. -H -30.0 0.0 0. -H -30.0 1.0 0. -H -30.0 2.0 0. -H -30.0 3.0 0. -H -30.0 4.0 0. -H -30.0 5.0 0. -H -30.0 6.0 0. -H -30.0 7.0 0. -H -30.0 8.0 0. -H -30.0 9.0 0. -H -30.0 10.0 0. -H -30.0 11.0 0. -H -30.0 12.0 0. -H -30.0 13.0 0. -H -30.0 14.0 0. -H -30.0 15.0 0. -H -30.0 16.0 0. -H -30.0 17.0 0. -H -30.0 18.0 0. -H -30.0 19.0 0. -H -30.0 20.0 0. -H -30.0 21.0 0. -H -30.0 22.0 0. -H -30.0 23.0 0. -H -30.0 24.0 0. -H -30.0 25.0 0. -H -30.0 26.0 0. -H -30.0 27.0 0. -H -30.0 28.0 0. -H -30.0 29.0 0. -H -30.0 30.0 0. -H -30.0 31.0 0. -H -30.0 32.0 0. -H -30.0 33.0 0. -H -30.0 34.0 0. -H -30.0 35.0 0. -H -30.0 36.0 0. -H -30.0 37.0 0. -H -30.0 38.0 0. -H -30.0 39.0 0. -H -30.0 40.0 0. -H -30.0 41.0 0. -H -30.0 42.0 0. -H -30.0 43.0 0. -H -30.0 44.0 0. -H -30.0 45.0 0. -H -30.0 46.0 0. -H -30.0 47.0 0. -H -30.0 48.0 0. -H -30.0 49.0 0. -H -29.0 -49.0 0. -H -29.0 -48.0 0. -H -29.0 -47.0 0. -H -29.0 -46.0 0. -H -29.0 -45.0 0. -H -29.0 -44.0 0. -H -29.0 -43.0 0. -H -29.0 -42.0 0. -H -29.0 -41.0 0. -H -29.0 -40.0 0. -H -29.0 -39.0 0. -H -29.0 -38.0 0. -H -29.0 -37.0 0. -H -29.0 -36.0 0. -H -29.0 -35.0 0. -H -29.0 -34.0 0. -H -29.0 -33.0 0. -H -29.0 -32.0 0. -H -29.0 -31.0 0. -H -29.0 -30.0 0. -H -29.0 -29.0 0. -H -29.0 -28.0 0. -H -29.0 -27.0 0. -H -29.0 -26.0 0. -H -29.0 -25.0 0. -H -29.0 -24.0 0. -H -29.0 -23.0 0. -H -29.0 -22.0 0. -H -29.0 -21.0 0. -H -29.0 -20.0 0. -H -29.0 -19.0 0. -H -29.0 -18.0 0. -H -29.0 -17.0 0. -H -29.0 -16.0 0. -H -29.0 -15.0 0. -H -29.0 -14.0 0. -H -29.0 -13.0 0. -H -29.0 -12.0 0. -H -29.0 -11.0 0. -H -29.0 -10.0 0. -H -29.0 -9.0 0. -H -29.0 -8.0 0. -H -29.0 -7.0 0. -H -29.0 -6.0 0. -H -29.0 -5.0 0. -H -29.0 -4.0 0. -H -29.0 -3.0 0. -H -29.0 -2.0 0. -H -29.0 -1.0 0. -H -29.0 0.0 0. -H -29.0 1.0 0. -H -29.0 2.0 0. -H -29.0 3.0 0. -H -29.0 4.0 0. -H -29.0 5.0 0. -H -29.0 6.0 0. -H -29.0 7.0 0. -H -29.0 8.0 0. -H -29.0 9.0 0. -H -29.0 10.0 0. -H -29.0 11.0 0. -H -29.0 12.0 0. -H -29.0 13.0 0. -H -29.0 14.0 0. -H -29.0 15.0 0. -H -29.0 16.0 0. -H -29.0 17.0 0. -H -29.0 18.0 0. -H -29.0 19.0 0. -H -29.0 20.0 0. -H -29.0 21.0 0. -H -29.0 22.0 0. -H -29.0 23.0 0. -H -29.0 24.0 0. -H -29.0 25.0 0. -H -29.0 26.0 0. -H -29.0 27.0 0. -H -29.0 28.0 0. -H -29.0 29.0 0. -H -29.0 30.0 0. -H -29.0 31.0 0. -H -29.0 32.0 0. -H -29.0 33.0 0. -H -29.0 34.0 0. -H -29.0 35.0 0. -H -29.0 36.0 0. -H -29.0 37.0 0. -H -29.0 38.0 0. -H -29.0 39.0 0. -H -29.0 40.0 0. -H -29.0 41.0 0. -H -29.0 42.0 0. -H -29.0 43.0 0. -H -29.0 44.0 0. -H -29.0 45.0 0. -H -29.0 46.0 0. -H -29.0 47.0 0. -H -29.0 48.0 0. -H -29.0 49.0 0. -H -28.0 -49.0 0. -H -28.0 -48.0 0. -H -28.0 -47.0 0. -H -28.0 -46.0 0. -H -28.0 -45.0 0. -H -28.0 -44.0 0. -H -28.0 -43.0 0. -H -28.0 -42.0 0. -H -28.0 -41.0 0. -H -28.0 -40.0 0. -H -28.0 -39.0 0. -H -28.0 -38.0 0. -H -28.0 -37.0 0. -H -28.0 -36.0 0. -H -28.0 -35.0 0. -H -28.0 -34.0 0. -H -28.0 -33.0 0. -H -28.0 -32.0 0. -H -28.0 -31.0 0. -H -28.0 -30.0 0. -H -28.0 -29.0 0. -H -28.0 -28.0 0. -H -28.0 -27.0 0. -H -28.0 -26.0 0. -H -28.0 -25.0 0. -H -28.0 -24.0 0. -H -28.0 -23.0 0. -H -28.0 -22.0 0. -H -28.0 -21.0 0. -H -28.0 -20.0 0. -H -28.0 -19.0 0. -H -28.0 -18.0 0. -H -28.0 -17.0 0. -H -28.0 -16.0 0. -H -28.0 -15.0 0. -H -28.0 -14.0 0. -H -28.0 -13.0 0. -H -28.0 -12.0 0. -H -28.0 -11.0 0. -H -28.0 -10.0 0. -H -28.0 -9.0 0. -H -28.0 -8.0 0. -H -28.0 -7.0 0. -H -28.0 -6.0 0. -H -28.0 -5.0 0. -H -28.0 -4.0 0. -H -28.0 -3.0 0. -H -28.0 -2.0 0. -H -28.0 -1.0 0. -H -28.0 0.0 0. -H -28.0 1.0 0. -H -28.0 2.0 0. -H -28.0 3.0 0. -H -28.0 4.0 0. -H -28.0 5.0 0. -H -28.0 6.0 0. -H -28.0 7.0 0. -H -28.0 8.0 0. -H -28.0 9.0 0. -H -28.0 10.0 0. -H -28.0 11.0 0. -H -28.0 12.0 0. -H -28.0 13.0 0. -H -28.0 14.0 0. -H -28.0 15.0 0. -H -28.0 16.0 0. -H -28.0 17.0 0. -H -28.0 18.0 0. -H -28.0 19.0 0. -H -28.0 20.0 0. -H -28.0 21.0 0. -H -28.0 22.0 0. -H -28.0 23.0 0. -H -28.0 24.0 0. -H -28.0 25.0 0. -H -28.0 26.0 0. -H -28.0 27.0 0. -H -28.0 28.0 0. -H -28.0 29.0 0. -H -28.0 30.0 0. -H -28.0 31.0 0. -H -28.0 32.0 0. -H -28.0 33.0 0. -H -28.0 34.0 0. -H -28.0 35.0 0. -H -28.0 36.0 0. -H -28.0 37.0 0. -H -28.0 38.0 0. -H -28.0 39.0 0. -H -28.0 40.0 0. -H -28.0 41.0 0. -H -28.0 42.0 0. -H -28.0 43.0 0. -H -28.0 44.0 0. -H -28.0 45.0 0. -H -28.0 46.0 0. -H -28.0 47.0 0. -H -28.0 48.0 0. -H -28.0 49.0 0. -H -27.0 -49.0 0. -H -27.0 -48.0 0. -H -27.0 -47.0 0. -H -27.0 -46.0 0. -H -27.0 -45.0 0. -H -27.0 -44.0 0. -H -27.0 -43.0 0. -H -27.0 -42.0 0. -H -27.0 -41.0 0. -H -27.0 -40.0 0. -H -27.0 -39.0 0. -H -27.0 -38.0 0. -H -27.0 -37.0 0. -H -27.0 -36.0 0. -H -27.0 -35.0 0. -H -27.0 -34.0 0. -H -27.0 -33.0 0. -H -27.0 -32.0 0. -H -27.0 -31.0 0. -H -27.0 -30.0 0. -H -27.0 -29.0 0. -H -27.0 -28.0 0. -H -27.0 -27.0 0. -H -27.0 -26.0 0. -H -27.0 -25.0 0. -H -27.0 -24.0 0. -H -27.0 -23.0 0. -H -27.0 -22.0 0. -H -27.0 -21.0 0. -H -27.0 -20.0 0. -H -27.0 -19.0 0. -H -27.0 -18.0 0. -H -27.0 -17.0 0. -H -27.0 -16.0 0. -H -27.0 -15.0 0. -H -27.0 -14.0 0. -H -27.0 -13.0 0. -H -27.0 -12.0 0. -H -27.0 -11.0 0. -H -27.0 -10.0 0. -H -27.0 -9.0 0. -H -27.0 -8.0 0. -H -27.0 -7.0 0. -H -27.0 -6.0 0. -H -27.0 -5.0 0. -H -27.0 -4.0 0. -H -27.0 -3.0 0. -H -27.0 -2.0 0. -H -27.0 -1.0 0. -H -27.0 0.0 0. -H -27.0 1.0 0. -H -27.0 2.0 0. -H -27.0 3.0 0. -H -27.0 4.0 0. -H -27.0 5.0 0. -H -27.0 6.0 0. -H -27.0 7.0 0. -H -27.0 8.0 0. -H -27.0 9.0 0. -H -27.0 10.0 0. -H -27.0 11.0 0. -H -27.0 12.0 0. -H -27.0 13.0 0. -H -27.0 14.0 0. -H -27.0 15.0 0. -H -27.0 16.0 0. -H -27.0 17.0 0. -H -27.0 18.0 0. -H -27.0 19.0 0. -H -27.0 20.0 0. -H -27.0 21.0 0. -H -27.0 22.0 0. -H -27.0 23.0 0. -H -27.0 24.0 0. -H -27.0 25.0 0. -H -27.0 26.0 0. -H -27.0 27.0 0. -H -27.0 28.0 0. -H -27.0 29.0 0. -H -27.0 30.0 0. -H -27.0 31.0 0. -H -27.0 32.0 0. -H -27.0 33.0 0. -H -27.0 34.0 0. -H -27.0 35.0 0. -H -27.0 36.0 0. -H -27.0 37.0 0. -H -27.0 38.0 0. -H -27.0 39.0 0. -H -27.0 40.0 0. -H -27.0 41.0 0. -H -27.0 42.0 0. -H -27.0 43.0 0. -H -27.0 44.0 0. -H -27.0 45.0 0. -H -27.0 46.0 0. -H -27.0 47.0 0. -H -27.0 48.0 0. -H -27.0 49.0 0. -H -26.0 -49.0 0. -H -26.0 -48.0 0. -H -26.0 -47.0 0. -H -26.0 -46.0 0. -H -26.0 -45.0 0. -H -26.0 -44.0 0. -H -26.0 -43.0 0. -H -26.0 -42.0 0. -H -26.0 -41.0 0. -H -26.0 -40.0 0. -H -26.0 -39.0 0. -H -26.0 -38.0 0. -H -26.0 -37.0 0. -H -26.0 -36.0 0. -H -26.0 -35.0 0. -H -26.0 -34.0 0. -H -26.0 -33.0 0. -H -26.0 -32.0 0. -H -26.0 -31.0 0. -H -26.0 -30.0 0. -H -26.0 -29.0 0. -H -26.0 -28.0 0. -H -26.0 -27.0 0. -H -26.0 -26.0 0. -H -26.0 -25.0 0. -H -26.0 -24.0 0. -H -26.0 -23.0 0. -H -26.0 -22.0 0. -H -26.0 -21.0 0. -H -26.0 -20.0 0. -H -26.0 -19.0 0. -H -26.0 -18.0 0. -H -26.0 -17.0 0. -H -26.0 -16.0 0. -H -26.0 -15.0 0. -H -26.0 -14.0 0. -H -26.0 -13.0 0. -H -26.0 -12.0 0. -H -26.0 -11.0 0. -H -26.0 -10.0 0. -H -26.0 -9.0 0. -H -26.0 -8.0 0. -H -26.0 -7.0 0. -H -26.0 -6.0 0. -H -26.0 -5.0 0. -H -26.0 -4.0 0. -H -26.0 -3.0 0. -H -26.0 -2.0 0. -H -26.0 -1.0 0. -H -26.0 0.0 0. -H -26.0 1.0 0. -H -26.0 2.0 0. -H -26.0 3.0 0. -H -26.0 4.0 0. -H -26.0 5.0 0. -H -26.0 6.0 0. -H -26.0 7.0 0. -H -26.0 8.0 0. -H -26.0 9.0 0. -H -26.0 10.0 0. -H -26.0 11.0 0. -H -26.0 12.0 0. -H -26.0 13.0 0. -H -26.0 14.0 0. -H -26.0 15.0 0. -H -26.0 16.0 0. -H -26.0 17.0 0. -H -26.0 18.0 0. -H -26.0 19.0 0. -H -26.0 20.0 0. -H -26.0 21.0 0. -H -26.0 22.0 0. -H -26.0 23.0 0. -H -26.0 24.0 0. -H -26.0 25.0 0. -H -26.0 26.0 0. -H -26.0 27.0 0. -H -26.0 28.0 0. -H -26.0 29.0 0. -H -26.0 30.0 0. -H -26.0 31.0 0. -H -26.0 32.0 0. -H -26.0 33.0 0. -H -26.0 34.0 0. -H -26.0 35.0 0. -H -26.0 36.0 0. -H -26.0 37.0 0. -H -26.0 38.0 0. -H -26.0 39.0 0. -H -26.0 40.0 0. -H -26.0 41.0 0. -H -26.0 42.0 0. -H -26.0 43.0 0. -H -26.0 44.0 0. -H -26.0 45.0 0. -H -26.0 46.0 0. -H -26.0 47.0 0. -H -26.0 48.0 0. -H -26.0 49.0 0. -H -25.0 -49.0 0. -H -25.0 -48.0 0. -H -25.0 -47.0 0. -H -25.0 -46.0 0. -H -25.0 -45.0 0. -H -25.0 -44.0 0. -H -25.0 -43.0 0. -H -25.0 -42.0 0. -H -25.0 -41.0 0. -H -25.0 -40.0 0. -H -25.0 -39.0 0. -H -25.0 -38.0 0. -H -25.0 -37.0 0. -H -25.0 -36.0 0. -H -25.0 -35.0 0. -H -25.0 -34.0 0. -H -25.0 -33.0 0. -H -25.0 -32.0 0. -H -25.0 -31.0 0. -H -25.0 -30.0 0. -H -25.0 -29.0 0. -H -25.0 -28.0 0. -H -25.0 -27.0 0. -H -25.0 -26.0 0. -H -25.0 -25.0 0. -H -25.0 -24.0 0. -H -25.0 -23.0 0. -H -25.0 -22.0 0. -H -25.0 -21.0 0. -H -25.0 -20.0 0. -H -25.0 -19.0 0. -H -25.0 -18.0 0. -H -25.0 -17.0 0. -H -25.0 -16.0 0. -H -25.0 -15.0 0. -H -25.0 -14.0 0. -H -25.0 -13.0 0. -H -25.0 -12.0 0. -H -25.0 -11.0 0. -H -25.0 -10.0 0. -H -25.0 -9.0 0. -H -25.0 -8.0 0. -H -25.0 -7.0 0. -H -25.0 -6.0 0. -H -25.0 -5.0 0. -H -25.0 -4.0 0. -H -25.0 -3.0 0. -H -25.0 -2.0 0. -H -25.0 -1.0 0. -H -25.0 0.0 0. -H -25.0 1.0 0. -H -25.0 2.0 0. -H -25.0 3.0 0. -H -25.0 4.0 0. -H -25.0 5.0 0. -H -25.0 6.0 0. -H -25.0 7.0 0. -H -25.0 8.0 0. -H -25.0 9.0 0. -H -25.0 10.0 0. -H -25.0 11.0 0. -H -25.0 12.0 0. -H -25.0 13.0 0. -H -25.0 14.0 0. -H -25.0 15.0 0. -H -25.0 16.0 0. -H -25.0 17.0 0. -H -25.0 18.0 0. -H -25.0 19.0 0. -H -25.0 20.0 0. -H -25.0 21.0 0. -H -25.0 22.0 0. -H -25.0 23.0 0. -H -25.0 24.0 0. -H -25.0 25.0 0. -H -25.0 26.0 0. -H -25.0 27.0 0. -H -25.0 28.0 0. -H -25.0 29.0 0. -H -25.0 30.0 0. -H -25.0 31.0 0. -H -25.0 32.0 0. -H -25.0 33.0 0. -H -25.0 34.0 0. -H -25.0 35.0 0. -H -25.0 36.0 0. -H -25.0 37.0 0. -H -25.0 38.0 0. -H -25.0 39.0 0. -H -25.0 40.0 0. -H -25.0 41.0 0. -H -25.0 42.0 0. -H -25.0 43.0 0. -H -25.0 44.0 0. -H -25.0 45.0 0. -H -25.0 46.0 0. -H -25.0 47.0 0. -H -25.0 48.0 0. -H -25.0 49.0 0. -H -24.0 -49.0 0. -H -24.0 -48.0 0. -H -24.0 -47.0 0. -H -24.0 -46.0 0. -H -24.0 -45.0 0. -H -24.0 -44.0 0. -H -24.0 -43.0 0. -H -24.0 -42.0 0. -H -24.0 -41.0 0. -H -24.0 -40.0 0. -H -24.0 -39.0 0. -H -24.0 -38.0 0. -H -24.0 -37.0 0. -H -24.0 -36.0 0. -H -24.0 -35.0 0. -H -24.0 -34.0 0. -H -24.0 -33.0 0. -H -24.0 -32.0 0. -H -24.0 -31.0 0. -H -24.0 -30.0 0. -H -24.0 -29.0 0. -H -24.0 -28.0 0. -H -24.0 -27.0 0. -H -24.0 -26.0 0. -H -24.0 -25.0 0. -H -24.0 -24.0 0. -H -24.0 -23.0 0. -H -24.0 -22.0 0. -H -24.0 -21.0 0. -H -24.0 -20.0 0. -H -24.0 -19.0 0. -H -24.0 -18.0 0. -H -24.0 -17.0 0. -H -24.0 -16.0 0. -H -24.0 -15.0 0. -H -24.0 -14.0 0. -H -24.0 -13.0 0. -H -24.0 -12.0 0. -H -24.0 -11.0 0. -H -24.0 -10.0 0. -H -24.0 -9.0 0. -H -24.0 -8.0 0. -H -24.0 -7.0 0. -H -24.0 -6.0 0. -H -24.0 -5.0 0. -H -24.0 -4.0 0. -H -24.0 -3.0 0. -H -24.0 -2.0 0. -H -24.0 -1.0 0. -H -24.0 0.0 0. -H -24.0 1.0 0. -H -24.0 2.0 0. -H -24.0 3.0 0. -H -24.0 4.0 0. -H -24.0 5.0 0. -H -24.0 6.0 0. -H -24.0 7.0 0. -H -24.0 8.0 0. -H -24.0 9.0 0. -H -24.0 10.0 0. -H -24.0 11.0 0. -H -24.0 12.0 0. -H -24.0 13.0 0. -H -24.0 14.0 0. -H -24.0 15.0 0. -H -24.0 16.0 0. -H -24.0 17.0 0. -H -24.0 18.0 0. -H -24.0 19.0 0. -H -24.0 20.0 0. -H -24.0 21.0 0. -H -24.0 22.0 0. -H -24.0 23.0 0. -H -24.0 24.0 0. -H -24.0 25.0 0. -H -24.0 26.0 0. -H -24.0 27.0 0. -H -24.0 28.0 0. -H -24.0 29.0 0. -H -24.0 30.0 0. -H -24.0 31.0 0. -H -24.0 32.0 0. -H -24.0 33.0 0. -H -24.0 34.0 0. -H -24.0 35.0 0. -H -24.0 36.0 0. -H -24.0 37.0 0. -H -24.0 38.0 0. -H -24.0 39.0 0. -H -24.0 40.0 0. -H -24.0 41.0 0. -H -24.0 42.0 0. -H -24.0 43.0 0. -H -24.0 44.0 0. -H -24.0 45.0 0. -H -24.0 46.0 0. -H -24.0 47.0 0. -H -24.0 48.0 0. -H -24.0 49.0 0. -H -23.0 -49.0 0. -H -23.0 -48.0 0. -H -23.0 -47.0 0. -H -23.0 -46.0 0. -H -23.0 -45.0 0. -H -23.0 -44.0 0. -H -23.0 -43.0 0. -H -23.0 -42.0 0. -H -23.0 -41.0 0. -H -23.0 -40.0 0. -H -23.0 -39.0 0. -H -23.0 -38.0 0. -H -23.0 -37.0 0. -H -23.0 -36.0 0. -H -23.0 -35.0 0. -H -23.0 -34.0 0. -H -23.0 -33.0 0. -H -23.0 -32.0 0. -H -23.0 -31.0 0. -H -23.0 -30.0 0. -H -23.0 -29.0 0. -H -23.0 -28.0 0. -H -23.0 -27.0 0. -H -23.0 -26.0 0. -H -23.0 -25.0 0. -H -23.0 -24.0 0. -H -23.0 -23.0 0. -H -23.0 -22.0 0. -H -23.0 -21.0 0. -H -23.0 -20.0 0. -H -23.0 -19.0 0. -H -23.0 -18.0 0. -H -23.0 -17.0 0. -H -23.0 -16.0 0. -H -23.0 -15.0 0. -H -23.0 -14.0 0. -H -23.0 -13.0 0. -H -23.0 -12.0 0. -H -23.0 -11.0 0. -H -23.0 -10.0 0. -H -23.0 -9.0 0. -H -23.0 -8.0 0. -H -23.0 -7.0 0. -H -23.0 -6.0 0. -H -23.0 -5.0 0. -H -23.0 -4.0 0. -H -23.0 -3.0 0. -H -23.0 -2.0 0. -H -23.0 -1.0 0. -H -23.0 0.0 0. -H -23.0 1.0 0. -H -23.0 2.0 0. -H -23.0 3.0 0. -H -23.0 4.0 0. -H -23.0 5.0 0. -H -23.0 6.0 0. -H -23.0 7.0 0. -H -23.0 8.0 0. -H -23.0 9.0 0. -H -23.0 10.0 0. -H -23.0 11.0 0. -H -23.0 12.0 0. -H -23.0 13.0 0. -H -23.0 14.0 0. -H -23.0 15.0 0. -H -23.0 16.0 0. -H -23.0 17.0 0. -H -23.0 18.0 0. -H -23.0 19.0 0. -H -23.0 20.0 0. -H -23.0 21.0 0. -H -23.0 22.0 0. -H -23.0 23.0 0. -H -23.0 24.0 0. -H -23.0 25.0 0. -H -23.0 26.0 0. -H -23.0 27.0 0. -H -23.0 28.0 0. -H -23.0 29.0 0. -H -23.0 30.0 0. -H -23.0 31.0 0. -H -23.0 32.0 0. -H -23.0 33.0 0. -H -23.0 34.0 0. -H -23.0 35.0 0. -H -23.0 36.0 0. -H -23.0 37.0 0. -H -23.0 38.0 0. -H -23.0 39.0 0. -H -23.0 40.0 0. -H -23.0 41.0 0. -H -23.0 42.0 0. -H -23.0 43.0 0. -H -23.0 44.0 0. -H -23.0 45.0 0. -H -23.0 46.0 0. -H -23.0 47.0 0. -H -23.0 48.0 0. -H -23.0 49.0 0. -H -22.0 -48.0 0. -H -22.0 -47.0 0. -H -22.0 -46.0 0. -H -22.0 -45.0 0. -H -22.0 -44.0 0. -H -22.0 -43.0 0. -H -22.0 -42.0 0. -H -22.0 -41.0 0. -H -22.0 -40.0 0. -H -22.0 -39.0 0. -H -22.0 -38.0 0. -H -22.0 -37.0 0. -H -22.0 -36.0 0. -H -22.0 -35.0 0. -H -22.0 -34.0 0. -H -22.0 -33.0 0. -H -22.0 -32.0 0. -H -22.0 -31.0 0. -H -22.0 -30.0 0. -H -22.0 -29.0 0. -H -22.0 -28.0 0. -H -22.0 -27.0 0. -H -22.0 -26.0 0. -H -22.0 -25.0 0. -H -22.0 -24.0 0. -H -22.0 -23.0 0. -H -22.0 -22.0 0. -H -22.0 -21.0 0. -H -22.0 -20.0 0. -H -22.0 -19.0 0. -H -22.0 -18.0 0. -H -22.0 -17.0 0. -H -22.0 -16.0 0. -H -22.0 -15.0 0. -H -22.0 -14.0 0. -H -22.0 -13.0 0. -H -22.0 -12.0 0. -H -22.0 -11.0 0. -H -22.0 -10.0 0. -H -22.0 -9.0 0. -H -22.0 -8.0 0. -H -22.0 -7.0 0. -H -22.0 -6.0 0. -H -22.0 -5.0 0. -H -22.0 -4.0 0. -H -22.0 -3.0 0. -H -22.0 -2.0 0. -H -22.0 -1.0 0. -H -22.0 0.0 0. -H -22.0 1.0 0. -H -22.0 2.0 0. -H -22.0 3.0 0. -H -22.0 4.0 0. -H -22.0 5.0 0. -H -22.0 6.0 0. -H -22.0 7.0 0. -H -22.0 8.0 0. -H -22.0 9.0 0. -H -22.0 10.0 0. -H -22.0 11.0 0. -H -22.0 12.0 0. -H -22.0 13.0 0. -H -22.0 14.0 0. -H -22.0 15.0 0. -H -22.0 16.0 0. -H -22.0 17.0 0. -H -22.0 18.0 0. -H -22.0 19.0 0. -H -22.0 20.0 0. -H -22.0 21.0 0. -H -22.0 22.0 0. -H -22.0 23.0 0. -H -22.0 24.0 0. -H -22.0 25.0 0. -H -22.0 26.0 0. -H -22.0 27.0 0. -H -22.0 28.0 0. -H -22.0 29.0 0. -H -22.0 30.0 0. -H -22.0 31.0 0. -H -22.0 32.0 0. -H -22.0 33.0 0. -H -22.0 34.0 0. -H -22.0 35.0 0. -H -22.0 36.0 0. -H -22.0 37.0 0. -H -22.0 38.0 0. -H -22.0 39.0 0. -H -22.0 40.0 0. -H -22.0 41.0 0. -H -22.0 42.0 0. -H -22.0 43.0 0. -H -22.0 44.0 0. -H -22.0 45.0 0. -H -22.0 46.0 0. -H -22.0 47.0 0. -H -22.0 48.0 0. -H -21.0 -48.0 0. -H -21.0 -47.0 0. -H -21.0 -46.0 0. -H -21.0 -45.0 0. -H -21.0 -44.0 0. -H -21.0 -43.0 0. -H -21.0 -42.0 0. -H -21.0 -41.0 0. -H -21.0 -40.0 0. -H -21.0 -39.0 0. -H -21.0 -38.0 0. -H -21.0 -37.0 0. -H -21.0 -36.0 0. -H -21.0 -35.0 0. -H -21.0 -34.0 0. -H -21.0 -33.0 0. -H -21.0 -32.0 0. -H -21.0 -31.0 0. -H -21.0 -30.0 0. -H -21.0 -29.0 0. -H -21.0 -28.0 0. -H -21.0 -27.0 0. -H -21.0 -26.0 0. -H -21.0 -25.0 0. -H -21.0 -24.0 0. -H -21.0 -23.0 0. -H -21.0 -22.0 0. -H -21.0 -21.0 0. -H -21.0 -20.0 0. -H -21.0 -19.0 0. -H -21.0 -18.0 0. -H -21.0 -17.0 0. -H -21.0 -16.0 0. -H -21.0 -15.0 0. -H -21.0 -14.0 0. -H -21.0 -13.0 0. -H -21.0 -12.0 0. -H -21.0 -11.0 0. -H -21.0 -10.0 0. -H -21.0 -9.0 0. -H -21.0 -8.0 0. -H -21.0 -7.0 0. -H -21.0 -6.0 0. -H -21.0 -5.0 0. -H -21.0 -4.0 0. -H -21.0 -3.0 0. -H -21.0 -2.0 0. -H -21.0 -1.0 0. -H -21.0 0.0 0. -H -21.0 1.0 0. -H -21.0 2.0 0. -H -21.0 3.0 0. -H -21.0 4.0 0. -H -21.0 5.0 0. -H -21.0 6.0 0. -H -21.0 7.0 0. -H -21.0 8.0 0. -H -21.0 9.0 0. -H -21.0 10.0 0. -H -21.0 11.0 0. -H -21.0 12.0 0. -H -21.0 13.0 0. -H -21.0 14.0 0. -H -21.0 15.0 0. -H -21.0 16.0 0. -H -21.0 17.0 0. -H -21.0 18.0 0. -H -21.0 19.0 0. -H -21.0 20.0 0. -H -21.0 21.0 0. -H -21.0 22.0 0. -H -21.0 23.0 0. -H -21.0 24.0 0. -H -21.0 25.0 0. -H -21.0 26.0 0. -H -21.0 27.0 0. -H -21.0 28.0 0. -H -21.0 29.0 0. -H -21.0 30.0 0. -H -21.0 31.0 0. -H -21.0 32.0 0. -H -21.0 33.0 0. -H -21.0 34.0 0. -H -21.0 35.0 0. -H -21.0 36.0 0. -H -21.0 37.0 0. -H -21.0 38.0 0. -H -21.0 39.0 0. -H -21.0 40.0 0. -H -21.0 41.0 0. -H -21.0 42.0 0. -H -21.0 43.0 0. -H -21.0 44.0 0. -H -21.0 45.0 0. -H -21.0 46.0 0. -H -21.0 47.0 0. -H -21.0 48.0 0. -H -20.0 -47.0 0. -H -20.0 -46.0 0. -H -20.0 -45.0 0. -H -20.0 -44.0 0. -H -20.0 -43.0 0. -H -20.0 -42.0 0. -H -20.0 -41.0 0. -H -20.0 -40.0 0. -H -20.0 -39.0 0. -H -20.0 -38.0 0. -H -20.0 -37.0 0. -H -20.0 -36.0 0. -H -20.0 -35.0 0. -H -20.0 -34.0 0. -H -20.0 -33.0 0. -H -20.0 -32.0 0. -H -20.0 -31.0 0. -H -20.0 -30.0 0. -H -20.0 -29.0 0. -H -20.0 -28.0 0. -H -20.0 -27.0 0. -H -20.0 -26.0 0. -H -20.0 -25.0 0. -H -20.0 -24.0 0. -H -20.0 -23.0 0. -H -20.0 -22.0 0. -H -20.0 -21.0 0. -H -20.0 -20.0 0. -H -20.0 -19.0 0. -H -20.0 -18.0 0. -H -20.0 -17.0 0. -H -20.0 -16.0 0. -H -20.0 -15.0 0. -H -20.0 -14.0 0. -H -20.0 -13.0 0. -H -20.0 -12.0 0. -H -20.0 -11.0 0. -H -20.0 -10.0 0. -H -20.0 -9.0 0. -H -20.0 -8.0 0. -H -20.0 -7.0 0. -H -20.0 -6.0 0. -H -20.0 -5.0 0. -H -20.0 -4.0 0. -H -20.0 -3.0 0. -H -20.0 -2.0 0. -H -20.0 -1.0 0. -H -20.0 0.0 0. -H -20.0 1.0 0. -H -20.0 2.0 0. -H -20.0 3.0 0. -H -20.0 4.0 0. -H -20.0 5.0 0. -H -20.0 6.0 0. -H -20.0 7.0 0. -H -20.0 8.0 0. -H -20.0 9.0 0. -H -20.0 10.0 0. -H -20.0 11.0 0. -H -20.0 12.0 0. -H -20.0 13.0 0. -H -20.0 14.0 0. -H -20.0 15.0 0. -H -20.0 16.0 0. -H -20.0 17.0 0. -H -20.0 18.0 0. -H -20.0 19.0 0. -H -20.0 20.0 0. -H -20.0 21.0 0. -H -20.0 22.0 0. -H -20.0 23.0 0. -H -20.0 24.0 0. -H -20.0 25.0 0. -H -20.0 26.0 0. -H -20.0 27.0 0. -H -20.0 28.0 0. -H -20.0 29.0 0. -H -20.0 30.0 0. -H -20.0 31.0 0. -H -20.0 32.0 0. -H -20.0 33.0 0. -H -20.0 34.0 0. -H -20.0 35.0 0. -H -20.0 36.0 0. -H -20.0 37.0 0. -H -20.0 38.0 0. -H -20.0 39.0 0. -H -20.0 40.0 0. -H -20.0 41.0 0. -H -20.0 42.0 0. -H -20.0 43.0 0. -H -20.0 44.0 0. -H -20.0 45.0 0. -H -20.0 46.0 0. -H -20.0 47.0 0. -H -19.0 -46.0 0. -H -19.0 -45.0 0. -H -19.0 -44.0 0. -H -19.0 -43.0 0. -H -19.0 -42.0 0. -H -19.0 -41.0 0. -H -19.0 -40.0 0. -H -19.0 -39.0 0. -H -19.0 -38.0 0. -H -19.0 -37.0 0. -H -19.0 -36.0 0. -H -19.0 -35.0 0. -H -19.0 -34.0 0. -H -19.0 -33.0 0. -H -19.0 -32.0 0. -H -19.0 -31.0 0. -H -19.0 -30.0 0. -H -19.0 -29.0 0. -H -19.0 -28.0 0. -H -19.0 -27.0 0. -H -19.0 -26.0 0. -H -19.0 -25.0 0. -H -19.0 -24.0 0. -H -19.0 -23.0 0. -H -19.0 -22.0 0. -H -19.0 -21.0 0. -H -19.0 -20.0 0. -H -19.0 -19.0 0. -H -19.0 -18.0 0. -H -19.0 -17.0 0. -H -19.0 -16.0 0. -H -19.0 -15.0 0. -H -19.0 -14.0 0. -H -19.0 -13.0 0. -H -19.0 -12.0 0. -H -19.0 -11.0 0. -H -19.0 -10.0 0. -H -19.0 -9.0 0. -H -19.0 -8.0 0. -H -19.0 -7.0 0. -H -19.0 -6.0 0. -H -19.0 -5.0 0. -H -19.0 -4.0 0. -H -19.0 -3.0 0. -H -19.0 -2.0 0. -H -19.0 -1.0 0. -H -19.0 0.0 0. -H -19.0 1.0 0. -H -19.0 2.0 0. -H -19.0 3.0 0. -H -19.0 4.0 0. -H -19.0 5.0 0. -H -19.0 6.0 0. -H -19.0 7.0 0. -H -19.0 8.0 0. -H -19.0 9.0 0. -H -19.0 10.0 0. -H -19.0 11.0 0. -H -19.0 12.0 0. -H -19.0 13.0 0. -H -19.0 14.0 0. -H -19.0 15.0 0. -H -19.0 16.0 0. -H -19.0 17.0 0. -H -19.0 18.0 0. -H -19.0 19.0 0. -H -19.0 20.0 0. -H -19.0 21.0 0. -H -19.0 22.0 0. -H -19.0 23.0 0. -H -19.0 24.0 0. -H -19.0 25.0 0. -H -19.0 26.0 0. -H -19.0 27.0 0. -H -19.0 28.0 0. -H -19.0 29.0 0. -H -19.0 30.0 0. -H -19.0 31.0 0. -H -19.0 32.0 0. -H -19.0 33.0 0. -H -19.0 34.0 0. -H -19.0 35.0 0. -H -19.0 36.0 0. -H -19.0 37.0 0. -H -19.0 38.0 0. -H -19.0 39.0 0. -H -19.0 40.0 0. -H -19.0 41.0 0. -H -19.0 42.0 0. -H -19.0 43.0 0. -H -19.0 44.0 0. -H -19.0 45.0 0. -H -19.0 46.0 0. -H -18.0 -46.0 0. -H -18.0 -45.0 0. -H -18.0 -44.0 0. -H -18.0 -43.0 0. -H -18.0 -42.0 0. -H -18.0 -41.0 0. -H -18.0 -40.0 0. -H -18.0 -39.0 0. -H -18.0 -38.0 0. -H -18.0 -37.0 0. -H -18.0 -36.0 0. -H -18.0 -35.0 0. -H -18.0 -34.0 0. -H -18.0 -33.0 0. -H -18.0 -32.0 0. -H -18.0 -31.0 0. -H -18.0 -30.0 0. -H -18.0 -29.0 0. -H -18.0 -28.0 0. -H -18.0 -27.0 0. -H -18.0 -26.0 0. -H -18.0 -25.0 0. -H -18.0 -24.0 0. -H -18.0 -23.0 0. -H -18.0 -22.0 0. -H -18.0 -21.0 0. -H -18.0 -20.0 0. -H -18.0 -19.0 0. -H -18.0 -18.0 0. -H -18.0 -17.0 0. -H -18.0 -16.0 0. -H -18.0 -15.0 0. -H -18.0 -14.0 0. -H -18.0 -13.0 0. -H -18.0 -12.0 0. -H -18.0 -11.0 0. -H -18.0 -10.0 0. -H -18.0 -9.0 0. -H -18.0 -8.0 0. -H -18.0 -7.0 0. -H -18.0 -6.0 0. -H -18.0 -5.0 0. -H -18.0 -4.0 0. -H -18.0 -3.0 0. -H -18.0 -2.0 0. -H -18.0 -1.0 0. -H -18.0 0.0 0. -H -18.0 1.0 0. -H -18.0 2.0 0. -H -18.0 3.0 0. -H -18.0 4.0 0. -H -18.0 5.0 0. -H -18.0 6.0 0. -H -18.0 7.0 0. -H -18.0 8.0 0. -H -18.0 9.0 0. -H -18.0 10.0 0. -H -18.0 11.0 0. -H -18.0 12.0 0. -H -18.0 13.0 0. -H -18.0 14.0 0. -H -18.0 15.0 0. -H -18.0 16.0 0. -H -18.0 17.0 0. -H -18.0 18.0 0. -H -18.0 19.0 0. -H -18.0 20.0 0. -H -18.0 21.0 0. -H -18.0 22.0 0. -H -18.0 23.0 0. -H -18.0 24.0 0. -H -18.0 25.0 0. -H -18.0 26.0 0. -H -18.0 27.0 0. -H -18.0 28.0 0. -H -18.0 29.0 0. -H -18.0 30.0 0. -H -18.0 31.0 0. -H -18.0 32.0 0. -H -18.0 33.0 0. -H -18.0 34.0 0. -H -18.0 35.0 0. -H -18.0 36.0 0. -H -18.0 37.0 0. -H -18.0 38.0 0. -H -18.0 39.0 0. -H -18.0 40.0 0. -H -18.0 41.0 0. -H -18.0 42.0 0. -H -18.0 43.0 0. -H -18.0 44.0 0. -H -18.0 45.0 0. -H -18.0 46.0 0. -H -17.0 -44.0 0. -H -17.0 -43.0 0. -H -17.0 -42.0 0. -H -17.0 -41.0 0. -H -17.0 -40.0 0. -H -17.0 -39.0 0. -H -17.0 -38.0 0. -H -17.0 -37.0 0. -H -17.0 -36.0 0. -H -17.0 -35.0 0. -H -17.0 -34.0 0. -H -17.0 -33.0 0. -H -17.0 -32.0 0. -H -17.0 -31.0 0. -H -17.0 -30.0 0. -H -17.0 -29.0 0. -H -17.0 -28.0 0. -H -17.0 -27.0 0. -H -17.0 -26.0 0. -H -17.0 -25.0 0. -H -17.0 -24.0 0. -H -17.0 -23.0 0. -H -17.0 -22.0 0. -H -17.0 -21.0 0. -H -17.0 -20.0 0. -H -17.0 -19.0 0. -H -17.0 -18.0 0. -H -17.0 -17.0 0. -H -17.0 -16.0 0. -H -17.0 -15.0 0. -H -17.0 -14.0 0. -H -17.0 -13.0 0. -H -17.0 -12.0 0. -H -17.0 -11.0 0. -H -17.0 -10.0 0. -H -17.0 -9.0 0. -H -17.0 -8.0 0. -H -17.0 -7.0 0. -H -17.0 -6.0 0. -H -17.0 -5.0 0. -H -17.0 -4.0 0. -H -17.0 -3.0 0. -H -17.0 -2.0 0. -H -17.0 -1.0 0. -H -17.0 0.0 0. -H -17.0 1.0 0. -H -17.0 2.0 0. -H -17.0 3.0 0. -H -17.0 4.0 0. -H -17.0 5.0 0. -H -17.0 6.0 0. -H -17.0 7.0 0. -H -17.0 8.0 0. -H -17.0 9.0 0. -H -17.0 10.0 0. -H -17.0 11.0 0. -H -17.0 12.0 0. -H -17.0 13.0 0. -H -17.0 14.0 0. -H -17.0 15.0 0. -H -17.0 16.0 0. -H -17.0 17.0 0. -H -17.0 18.0 0. -H -17.0 19.0 0. -H -17.0 20.0 0. -H -17.0 21.0 0. -H -17.0 22.0 0. -H -17.0 23.0 0. -H -17.0 24.0 0. -H -17.0 25.0 0. -H -17.0 26.0 0. -H -17.0 27.0 0. -H -17.0 28.0 0. -H -17.0 29.0 0. -H -17.0 30.0 0. -H -17.0 31.0 0. -H -17.0 32.0 0. -H -17.0 33.0 0. -H -17.0 34.0 0. -H -17.0 35.0 0. -H -17.0 36.0 0. -H -17.0 37.0 0. -H -17.0 38.0 0. -H -17.0 39.0 0. -H -17.0 40.0 0. -H -17.0 41.0 0. -H -17.0 42.0 0. -H -17.0 43.0 0. -H -17.0 44.0 0. -H -16.0 -43.0 0. -H -16.0 -42.0 0. -H -16.0 -41.0 0. -H -16.0 -40.0 0. -H -16.0 -39.0 0. -H -16.0 -38.0 0. -H -16.0 -37.0 0. -H -16.0 -36.0 0. -H -16.0 -35.0 0. -H -16.0 -34.0 0. -H -16.0 -33.0 0. -H -16.0 -32.0 0. -H -16.0 -31.0 0. -H -16.0 -30.0 0. -H -16.0 -29.0 0. -H -16.0 -28.0 0. -H -16.0 -27.0 0. -H -16.0 -26.0 0. -H -16.0 -25.0 0. -H -16.0 -24.0 0. -H -16.0 -23.0 0. -H -16.0 -22.0 0. -H -16.0 -21.0 0. -H -16.0 -20.0 0. -H -16.0 -19.0 0. -H -16.0 -18.0 0. -H -16.0 -17.0 0. -H -16.0 -16.0 0. -H -16.0 -15.0 0. -H -16.0 -14.0 0. -H -16.0 -13.0 0. -H -16.0 -12.0 0. -H -16.0 -11.0 0. -H -16.0 -10.0 0. -H -16.0 -9.0 0. -H -16.0 -8.0 0. -H -16.0 -7.0 0. -H -16.0 -6.0 0. -H -16.0 -5.0 0. -H -16.0 -4.0 0. -H -16.0 -3.0 0. -H -16.0 -2.0 0. -H -16.0 -1.0 0. -H -16.0 0.0 0. -H -16.0 1.0 0. -H -16.0 2.0 0. -H -16.0 3.0 0. -H -16.0 4.0 0. -H -16.0 5.0 0. -H -16.0 6.0 0. -H -16.0 7.0 0. -H -16.0 8.0 0. -H -16.0 9.0 0. -H -16.0 10.0 0. -H -16.0 11.0 0. -H -16.0 12.0 0. -H -16.0 13.0 0. -H -16.0 14.0 0. -H -16.0 15.0 0. -H -16.0 16.0 0. -H -16.0 17.0 0. -H -16.0 18.0 0. -H -16.0 19.0 0. -H -16.0 20.0 0. -H -16.0 21.0 0. -H -16.0 22.0 0. -H -16.0 23.0 0. -H -16.0 24.0 0. -H -16.0 25.0 0. -H -16.0 26.0 0. -H -16.0 27.0 0. -H -16.0 28.0 0. -H -16.0 29.0 0. -H -16.0 30.0 0. -H -16.0 31.0 0. -H -16.0 32.0 0. -H -16.0 33.0 0. -H -16.0 34.0 0. -H -16.0 35.0 0. -H -16.0 36.0 0. -H -16.0 37.0 0. -H -16.0 38.0 0. -H -16.0 39.0 0. -H -16.0 40.0 0. -H -16.0 41.0 0. -H -16.0 42.0 0. -H -16.0 43.0 0. -H -15.0 -42.0 0. -H -15.0 -41.0 0. -H -15.0 -40.0 0. -H -15.0 -39.0 0. -H -15.0 -38.0 0. -H -15.0 -37.0 0. -H -15.0 -36.0 0. -H -15.0 -35.0 0. -H -15.0 -34.0 0. -H -15.0 -33.0 0. -H -15.0 -32.0 0. -H -15.0 -31.0 0. -H -15.0 -30.0 0. -H -15.0 -29.0 0. -H -15.0 -28.0 0. -H -15.0 -27.0 0. -H -15.0 -26.0 0. -H -15.0 -25.0 0. -H -15.0 -24.0 0. -H -15.0 -23.0 0. -H -15.0 -22.0 0. -H -15.0 -21.0 0. -H -15.0 -20.0 0. -H -15.0 -19.0 0. -H -15.0 -18.0 0. -H -15.0 -17.0 0. -H -15.0 -16.0 0. -H -15.0 -15.0 0. -H -15.0 -14.0 0. -H -15.0 -13.0 0. -H -15.0 -12.0 0. -H -15.0 -11.0 0. -H -15.0 -10.0 0. -H -15.0 -9.0 0. -H -15.0 -8.0 0. -H -15.0 -7.0 0. -H -15.0 -6.0 0. -H -15.0 -5.0 0. -H -15.0 -4.0 0. -H -15.0 -3.0 0. -H -15.0 -2.0 0. -H -15.0 -1.0 0. -H -15.0 0.0 0. -H -15.0 1.0 0. -H -15.0 2.0 0. -H -15.0 3.0 0. -H -15.0 4.0 0. -H -15.0 5.0 0. -H -15.0 6.0 0. -H -15.0 7.0 0. -H -15.0 8.0 0. -H -15.0 9.0 0. -H -15.0 10.0 0. -H -15.0 11.0 0. -H -15.0 12.0 0. -H -15.0 13.0 0. -H -15.0 14.0 0. -H -15.0 15.0 0. -H -15.0 16.0 0. -H -15.0 17.0 0. -H -15.0 18.0 0. -H -15.0 19.0 0. -H -15.0 20.0 0. -H -15.0 21.0 0. -H -15.0 22.0 0. -H -15.0 23.0 0. -H -15.0 24.0 0. -H -15.0 25.0 0. -H -15.0 26.0 0. -H -15.0 27.0 0. -H -15.0 28.0 0. -H -15.0 29.0 0. -H -15.0 30.0 0. -H -15.0 31.0 0. -H -15.0 32.0 0. -H -15.0 33.0 0. -H -15.0 34.0 0. -H -15.0 35.0 0. -H -15.0 36.0 0. -H -15.0 37.0 0. -H -15.0 38.0 0. -H -15.0 39.0 0. -H -15.0 40.0 0. -H -15.0 41.0 0. -H -15.0 42.0 0. -H -14.0 -40.0 0. -H -14.0 -39.0 0. -H -14.0 -38.0 0. -H -14.0 -37.0 0. -H -14.0 -36.0 0. -H -14.0 -35.0 0. -H -14.0 -34.0 0. -H -14.0 -33.0 0. -H -14.0 -32.0 0. -H -14.0 -31.0 0. -H -14.0 -30.0 0. -H -14.0 -29.0 0. -H -14.0 -28.0 0. -H -14.0 -27.0 0. -H -14.0 -26.0 0. -H -14.0 -25.0 0. -H -14.0 -24.0 0. -H -14.0 -23.0 0. -H -14.0 -22.0 0. -H -14.0 -21.0 0. -H -14.0 -20.0 0. -H -14.0 -19.0 0. -H -14.0 -18.0 0. -H -14.0 -17.0 0. -H -14.0 -16.0 0. -H -14.0 -15.0 0. -H -14.0 -14.0 0. -H -14.0 -13.0 0. -H -14.0 -12.0 0. -H -14.0 -11.0 0. -H -14.0 -10.0 0. -H -14.0 -9.0 0. -H -14.0 -8.0 0. -H -14.0 -7.0 0. -H -14.0 -6.0 0. -H -14.0 -5.0 0. -H -14.0 -4.0 0. -H -14.0 -3.0 0. -H -14.0 -2.0 0. -H -14.0 -1.0 0. -H -14.0 0.0 0. -H -14.0 1.0 0. -H -14.0 2.0 0. -H -14.0 3.0 0. -H -14.0 4.0 0. -H -14.0 5.0 0. -H -14.0 6.0 0. -H -14.0 7.0 0. -H -14.0 8.0 0. -H -14.0 9.0 0. -H -14.0 10.0 0. -H -14.0 11.0 0. -H -14.0 12.0 0. -H -14.0 13.0 0. -H -14.0 14.0 0. -H -14.0 15.0 0. -H -14.0 16.0 0. -H -14.0 17.0 0. -H -14.0 18.0 0. -H -14.0 19.0 0. -H -14.0 20.0 0. -H -14.0 21.0 0. -H -14.0 22.0 0. -H -14.0 23.0 0. -H -14.0 24.0 0. -H -14.0 25.0 0. -H -14.0 26.0 0. -H -14.0 27.0 0. -H -14.0 28.0 0. -H -14.0 29.0 0. -H -14.0 30.0 0. -H -14.0 31.0 0. -H -14.0 32.0 0. -H -14.0 33.0 0. -H -14.0 34.0 0. -H -14.0 35.0 0. -H -14.0 36.0 0. -H -14.0 37.0 0. -H -14.0 38.0 0. -H -14.0 39.0 0. -H -14.0 40.0 0. -H -13.0 -38.0 0. -H -13.0 -37.0 0. -H -13.0 -36.0 0. -H -13.0 -35.0 0. -H -13.0 -34.0 0. -H -13.0 -33.0 0. -H -13.0 -32.0 0. -H -13.0 -31.0 0. -H -13.0 -30.0 0. -H -13.0 -29.0 0. -H -13.0 -28.0 0. -H -13.0 -27.0 0. -H -13.0 -26.0 0. -H -13.0 -25.0 0. -H -13.0 -24.0 0. -H -13.0 -23.0 0. -H -13.0 -22.0 0. -H -13.0 -21.0 0. -H -13.0 -20.0 0. -H -13.0 -19.0 0. -H -13.0 -18.0 0. -H -13.0 -17.0 0. -H -13.0 -16.0 0. -H -13.0 -15.0 0. -H -13.0 -14.0 0. -H -13.0 -13.0 0. -H -13.0 -12.0 0. -H -13.0 -11.0 0. -H -13.0 -10.0 0. -H -13.0 -9.0 0. -H -13.0 -8.0 0. -H -13.0 -7.0 0. -H -13.0 -6.0 0. -H -13.0 -5.0 0. -H -13.0 -4.0 0. -H -13.0 -3.0 0. -H -13.0 -2.0 0. -H -13.0 -1.0 0. -H -13.0 0.0 0. -H -13.0 1.0 0. -H -13.0 2.0 0. -H -13.0 3.0 0. -H -13.0 4.0 0. -H -13.0 5.0 0. -H -13.0 6.0 0. -H -13.0 7.0 0. -H -13.0 8.0 0. -H -13.0 9.0 0. -H -13.0 10.0 0. -H -13.0 11.0 0. -H -13.0 12.0 0. -H -13.0 13.0 0. -H -13.0 14.0 0. -H -13.0 15.0 0. -H -13.0 16.0 0. -H -13.0 17.0 0. -H -13.0 18.0 0. -H -13.0 19.0 0. -H -13.0 20.0 0. -H -13.0 21.0 0. -H -13.0 22.0 0. -H -13.0 23.0 0. -H -13.0 24.0 0. -H -13.0 25.0 0. -H -13.0 26.0 0. -H -13.0 27.0 0. -H -13.0 28.0 0. -H -13.0 29.0 0. -H -13.0 30.0 0. -H -13.0 31.0 0. -H -13.0 32.0 0. -H -13.0 33.0 0. -H -13.0 34.0 0. -H -13.0 35.0 0. -H -13.0 36.0 0. -H -13.0 37.0 0. -H -13.0 38.0 0. -H -12.0 -36.0 0. -H -12.0 -35.0 0. -H -12.0 -34.0 0. -H -12.0 -33.0 0. -H -12.0 -32.0 0. -H -12.0 -31.0 0. -H -12.0 -30.0 0. -H -12.0 -29.0 0. -H -12.0 -28.0 0. -H -12.0 -27.0 0. -H -12.0 -26.0 0. -H -12.0 -25.0 0. -H -12.0 -24.0 0. -H -12.0 -23.0 0. -H -12.0 -22.0 0. -H -12.0 -21.0 0. -H -12.0 -20.0 0. -H -12.0 -19.0 0. -H -12.0 -18.0 0. -H -12.0 -17.0 0. -H -12.0 -16.0 0. -H -12.0 -15.0 0. -H -12.0 -14.0 0. -H -12.0 -13.0 0. -H -12.0 -12.0 0. -H -12.0 -11.0 0. -H -12.0 -10.0 0. -H -12.0 -9.0 0. -H -12.0 -8.0 0. -H -12.0 -7.0 0. -H -12.0 -6.0 0. -H -12.0 -5.0 0. -H -12.0 -4.0 0. -H -12.0 -3.0 0. -H -12.0 -2.0 0. -H -12.0 -1.0 0. -H -12.0 0.0 0. -H -12.0 1.0 0. -H -12.0 2.0 0. -H -12.0 3.0 0. -H -12.0 4.0 0. -H -12.0 5.0 0. -H -12.0 6.0 0. -H -12.0 7.0 0. -H -12.0 8.0 0. -H -12.0 9.0 0. -H -12.0 10.0 0. -H -12.0 11.0 0. -H -12.0 12.0 0. -H -12.0 13.0 0. -H -12.0 14.0 0. -H -12.0 15.0 0. -H -12.0 16.0 0. -H -12.0 17.0 0. -H -12.0 18.0 0. -H -12.0 19.0 0. -H -12.0 20.0 0. -H -12.0 21.0 0. -H -12.0 22.0 0. -H -12.0 23.0 0. -H -12.0 24.0 0. -H -12.0 25.0 0. -H -12.0 26.0 0. -H -12.0 27.0 0. -H -12.0 28.0 0. -H -12.0 29.0 0. -H -12.0 30.0 0. -H -12.0 31.0 0. -H -12.0 32.0 0. -H -12.0 33.0 0. -H -12.0 34.0 0. -H -12.0 35.0 0. -H -12.0 36.0 0. -H -11.0 -33.0 0. -H -11.0 -32.0 0. -H -11.0 -31.0 0. -H -11.0 -30.0 0. -H -11.0 -29.0 0. -H -11.0 -28.0 0. -H -11.0 -27.0 0. -H -11.0 -26.0 0. -H -11.0 -25.0 0. -H -11.0 -24.0 0. -H -11.0 -23.0 0. -H -11.0 -22.0 0. -H -11.0 -21.0 0. -H -11.0 -20.0 0. -H -11.0 -19.0 0. -H -11.0 -18.0 0. -H -11.0 -17.0 0. -H -11.0 -16.0 0. -H -11.0 -15.0 0. -H -11.0 -14.0 0. -H -11.0 -13.0 0. -H -11.0 -12.0 0. -H -11.0 -11.0 0. -H -11.0 -10.0 0. -H -11.0 -9.0 0. -H -11.0 -8.0 0. -H -11.0 -7.0 0. -H -11.0 -6.0 0. -H -11.0 -5.0 0. -H -11.0 -4.0 0. -H -11.0 -3.0 0. -H -11.0 -2.0 0. -H -11.0 -1.0 0. -H -11.0 0.0 0. -H -11.0 1.0 0. -H -11.0 2.0 0. -H -11.0 3.0 0. -H -11.0 4.0 0. -H -11.0 5.0 0. -H -11.0 6.0 0. -H -11.0 7.0 0. -H -11.0 8.0 0. -H -11.0 9.0 0. -H -11.0 10.0 0. -H -11.0 11.0 0. -H -11.0 12.0 0. -H -11.0 13.0 0. -H -11.0 14.0 0. -H -11.0 15.0 0. -H -11.0 16.0 0. -H -11.0 17.0 0. -H -11.0 18.0 0. -H -11.0 19.0 0. -H -11.0 20.0 0. -H -11.0 21.0 0. -H -11.0 22.0 0. -H -11.0 23.0 0. -H -11.0 24.0 0. -H -11.0 25.0 0. -H -11.0 26.0 0. -H -11.0 27.0 0. -H -11.0 28.0 0. -H -11.0 29.0 0. -H -11.0 30.0 0. -H -11.0 31.0 0. -H -11.0 32.0 0. -H -11.0 33.0 0. -H -10.0 -31.0 0. -H -10.0 -30.0 0. -H -10.0 -29.0 0. -H -10.0 -28.0 0. -H -10.0 -27.0 0. -H -10.0 -26.0 0. -H -10.0 -25.0 0. -H -10.0 -24.0 0. -H -10.0 -23.0 0. -H -10.0 -22.0 0. -H -10.0 -21.0 0. -H -10.0 -20.0 0. -H -10.0 -19.0 0. -H -10.0 -18.0 0. -H -10.0 -17.0 0. -H -10.0 -16.0 0. -H -10.0 -15.0 0. -H -10.0 -14.0 0. -H -10.0 -13.0 0. -H -10.0 -12.0 0. -H -10.0 -11.0 0. -H -10.0 -10.0 0. -H -10.0 -9.0 0. -H -10.0 -8.0 0. -H -10.0 -7.0 0. -H -10.0 -6.0 0. -H -10.0 -5.0 0. -H -10.0 -4.0 0. -H -10.0 -3.0 0. -H -10.0 -2.0 0. -H -10.0 -1.0 0. -H -10.0 0.0 0. -H -10.0 1.0 0. -H -10.0 2.0 0. -H -10.0 3.0 0. -H -10.0 4.0 0. -H -10.0 5.0 0. -H -10.0 6.0 0. -H -10.0 7.0 0. -H -10.0 8.0 0. -H -10.0 9.0 0. -H -10.0 10.0 0. -H -10.0 11.0 0. -H -10.0 12.0 0. -H -10.0 13.0 0. -H -10.0 14.0 0. -H -10.0 15.0 0. -H -10.0 16.0 0. -H -10.0 17.0 0. -H -10.0 18.0 0. -H -10.0 19.0 0. -H -10.0 20.0 0. -H -10.0 21.0 0. -H -10.0 22.0 0. -H -10.0 23.0 0. -H -10.0 24.0 0. -H -10.0 25.0 0. -H -10.0 26.0 0. -H -10.0 27.0 0. -H -10.0 28.0 0. -H -10.0 29.0 0. -H -10.0 30.0 0. -H -10.0 31.0 0. -H -9.0 -28.0 0. -H -9.0 -27.0 0. -H -9.0 -26.0 0. -H -9.0 -25.0 0. -H -9.0 -24.0 0. -H -9.0 -23.0 0. -H -9.0 -22.0 0. -H -9.0 -21.0 0. -H -9.0 -20.0 0. -H -9.0 -19.0 0. -H -9.0 -18.0 0. -H -9.0 -17.0 0. -H -9.0 -16.0 0. -H -9.0 -15.0 0. -H -9.0 -14.0 0. -H -9.0 -13.0 0. -H -9.0 -12.0 0. -H -9.0 -11.0 0. -H -9.0 -10.0 0. -H -9.0 -9.0 0. -H -9.0 -8.0 0. -H -9.0 -7.0 0. -H -9.0 -6.0 0. -H -9.0 -5.0 0. -H -9.0 -4.0 0. -H -9.0 -3.0 0. -H -9.0 -2.0 0. -H -9.0 -1.0 0. -H -9.0 0.0 0. -H -9.0 1.0 0. -H -9.0 2.0 0. -H -9.0 3.0 0. -H -9.0 4.0 0. -H -9.0 5.0 0. -H -9.0 6.0 0. -H -9.0 7.0 0. -H -9.0 8.0 0. -H -9.0 9.0 0. -H -9.0 10.0 0. -H -9.0 11.0 0. -H -9.0 12.0 0. -H -9.0 13.0 0. -H -9.0 14.0 0. -H -9.0 15.0 0. -H -9.0 16.0 0. -H -9.0 17.0 0. -H -9.0 18.0 0. -H -9.0 19.0 0. -H -9.0 20.0 0. -H -9.0 21.0 0. -H -9.0 22.0 0. -H -9.0 23.0 0. -H -9.0 24.0 0. -H -9.0 25.0 0. -H -9.0 26.0 0. -H -9.0 27.0 0. -H -9.0 28.0 0. -H -8.0 -25.0 0. -H -8.0 -24.0 0. -H -8.0 -23.0 0. -H -8.0 -22.0 0. -H -8.0 -21.0 0. -H -8.0 -20.0 0. -H -8.0 -19.0 0. -H -8.0 -18.0 0. -H -8.0 -17.0 0. -H -8.0 -16.0 0. -H -8.0 -15.0 0. -H -8.0 -14.0 0. -H -8.0 -13.0 0. -H -8.0 -12.0 0. -H -8.0 -11.0 0. -H -8.0 -10.0 0. -H -8.0 -9.0 0. -H -8.0 -8.0 0. -H -8.0 -7.0 0. -H -8.0 -6.0 0. -H -8.0 -5.0 0. -H -8.0 -4.0 0. -H -8.0 -3.0 0. -H -8.0 -2.0 0. -H -8.0 -1.0 0. -H -8.0 0.0 0. -H -8.0 1.0 0. -H -8.0 2.0 0. -H -8.0 3.0 0. -H -8.0 4.0 0. -H -8.0 5.0 0. -H -8.0 6.0 0. -H -8.0 7.0 0. -H -8.0 8.0 0. -H -8.0 9.0 0. -H -8.0 10.0 0. -H -8.0 11.0 0. -H -8.0 12.0 0. -H -8.0 13.0 0. -H -8.0 14.0 0. -H -8.0 15.0 0. -H -8.0 16.0 0. -H -8.0 17.0 0. -H -8.0 18.0 0. -H -8.0 19.0 0. -H -8.0 20.0 0. -H -8.0 21.0 0. -H -8.0 22.0 0. -H -8.0 23.0 0. -H -8.0 24.0 0. -H -8.0 25.0 0. -H -7.0 -23.0 0. -H -7.0 -22.0 0. -H -7.0 -21.0 0. -H -7.0 -20.0 0. -H -7.0 -19.0 0. -H -7.0 -18.0 0. -H -7.0 -17.0 0. -H -7.0 -16.0 0. -H -7.0 -15.0 0. -H -7.0 -14.0 0. -H -7.0 -13.0 0. -H -7.0 -12.0 0. -H -7.0 -11.0 0. -H -7.0 -10.0 0. -H -7.0 -9.0 0. -H -7.0 -8.0 0. -H -7.0 -7.0 0. -H -7.0 -6.0 0. -H -7.0 -5.0 0. -H -7.0 -4.0 0. -H -7.0 -3.0 0. -H -7.0 -2.0 0. -H -7.0 -1.0 0. -H -7.0 0.0 0. -H -7.0 1.0 0. -H -7.0 2.0 0. -H -7.0 3.0 0. -H -7.0 4.0 0. -H -7.0 5.0 0. -H -7.0 6.0 0. -H -7.0 7.0 0. -H -7.0 8.0 0. -H -7.0 9.0 0. -H -7.0 10.0 0. -H -7.0 11.0 0. -H -7.0 12.0 0. -H -7.0 13.0 0. -H -7.0 14.0 0. -H -7.0 15.0 0. -H -7.0 16.0 0. -H -7.0 17.0 0. -H -7.0 18.0 0. -H -7.0 19.0 0. -H -7.0 20.0 0. -H -7.0 21.0 0. -H -7.0 22.0 0. -H -7.0 23.0 0. -H -6.0 -20.0 0. -H -6.0 -19.0 0. -H -6.0 -18.0 0. -H -6.0 -17.0 0. -H -6.0 -16.0 0. -H -6.0 -15.0 0. -H -6.0 -14.0 0. -H -6.0 -13.0 0. -H -6.0 -12.0 0. -H -6.0 -11.0 0. -H -6.0 -10.0 0. -H -6.0 -9.0 0. -H -6.0 -8.0 0. -H -6.0 -7.0 0. -H -6.0 -6.0 0. -H -6.0 -5.0 0. -H -6.0 -4.0 0. -H -6.0 -3.0 0. -H -6.0 -2.0 0. -H -6.0 -1.0 0. -H -6.0 0.0 0. -H -6.0 1.0 0. -H -6.0 2.0 0. -H -6.0 3.0 0. -H -6.0 4.0 0. -H -6.0 5.0 0. -H -6.0 6.0 0. -H -6.0 7.0 0. -H -6.0 8.0 0. -H -6.0 9.0 0. -H -6.0 10.0 0. -H -6.0 11.0 0. -H -6.0 12.0 0. -H -6.0 13.0 0. -H -6.0 14.0 0. -H -6.0 15.0 0. -H -6.0 16.0 0. -H -6.0 17.0 0. -H -6.0 18.0 0. -H -6.0 19.0 0. -H -6.0 20.0 0. -H -5.0 -18.0 0. -H -5.0 -17.0 0. -H -5.0 -16.0 0. -H -5.0 -15.0 0. -H -5.0 -14.0 0. -H -5.0 -13.0 0. -H -5.0 -12.0 0. -H -5.0 -11.0 0. -H -5.0 -10.0 0. -H -5.0 -9.0 0. -H -5.0 -8.0 0. -H -5.0 -7.0 0. -H -5.0 -6.0 0. -H -5.0 -5.0 0. -H -5.0 -4.0 0. -H -5.0 -3.0 0. -H -5.0 -2.0 0. -H -5.0 -1.0 0. -H -5.0 0.0 0. -H -5.0 1.0 0. -H -5.0 2.0 0. -H -5.0 3.0 0. -H -5.0 4.0 0. -H -5.0 5.0 0. -H -5.0 6.0 0. -H -5.0 7.0 0. -H -5.0 8.0 0. -H -5.0 9.0 0. -H -5.0 10.0 0. -H -5.0 11.0 0. -H -5.0 12.0 0. -H -5.0 13.0 0. -H -5.0 14.0 0. -H -5.0 15.0 0. -H -5.0 16.0 0. -H -5.0 17.0 0. -H -5.0 18.0 0. -H -4.0 -16.0 0. -H -4.0 -15.0 0. -H -4.0 -14.0 0. -H -4.0 -13.0 0. -H -4.0 -12.0 0. -H -4.0 -11.0 0. -H -4.0 -10.0 0. -H -4.0 -9.0 0. -H -4.0 -8.0 0. -H -4.0 -7.0 0. -H -4.0 -6.0 0. -H -4.0 -5.0 0. -H -4.0 -4.0 0. -H -4.0 -3.0 0. -H -4.0 -2.0 0. -H -4.0 -1.0 0. -H -4.0 0.0 0. -H -4.0 1.0 0. -H -4.0 2.0 0. -H -4.0 3.0 0. -H -4.0 4.0 0. -H -4.0 5.0 0. -H -4.0 6.0 0. -H -4.0 7.0 0. -H -4.0 8.0 0. -H -4.0 9.0 0. -H -4.0 10.0 0. -H -4.0 11.0 0. -H -4.0 12.0 0. -H -4.0 13.0 0. -H -4.0 14.0 0. -H -4.0 15.0 0. -H -4.0 16.0 0. -H -3.0 -14.0 0. -H -3.0 -13.0 0. -H -3.0 -12.0 0. -H -3.0 -11.0 0. -H -3.0 -10.0 0. -H -3.0 -9.0 0. -H -3.0 -8.0 0. -H -3.0 -7.0 0. -H -3.0 -6.0 0. -H -3.0 -5.0 0. -H -3.0 -4.0 0. -H -3.0 -3.0 0. -H -3.0 -2.0 0. -H -3.0 -1.0 0. -H -3.0 0.0 0. -H -3.0 1.0 0. -H -3.0 2.0 0. -H -3.0 3.0 0. -H -3.0 4.0 0. -H -3.0 5.0 0. -H -3.0 6.0 0. -H -3.0 7.0 0. -H -3.0 8.0 0. -H -3.0 9.0 0. -H -3.0 10.0 0. -H -3.0 11.0 0. -H -3.0 12.0 0. -H -3.0 13.0 0. -H -3.0 14.0 0. -H -2.0 -13.0 0. -H -2.0 -12.0 0. -H -2.0 -11.0 0. -H -2.0 -10.0 0. -H -2.0 -9.0 0. -H -2.0 -8.0 0. -H -2.0 -7.0 0. -H -2.0 -6.0 0. -H -2.0 -5.0 0. -H -2.0 -4.0 0. -H -2.0 -3.0 0. -H -2.0 -2.0 0. -H -2.0 -1.0 0. -H -2.0 0.0 0. -H -2.0 1.0 0. -H -2.0 2.0 0. -H -2.0 3.0 0. -H -2.0 4.0 0. -H -2.0 5.0 0. -H -2.0 6.0 0. -H -2.0 7.0 0. -H -2.0 8.0 0. -H -2.0 9.0 0. -H -2.0 10.0 0. -H -2.0 11.0 0. -H -2.0 12.0 0. -H -2.0 13.0 0. -H -1.0 -12.0 0. -H -1.0 -11.0 0. -H -1.0 -10.0 0. -H -1.0 -9.0 0. -H -1.0 -8.0 0. -H -1.0 -7.0 0. -H -1.0 -6.0 0. -H -1.0 -5.0 0. -H -1.0 -4.0 0. -H -1.0 -3.0 0. -H -1.0 -2.0 0. -H -1.0 -1.0 0. -H -1.0 0.0 0. -H -1.0 1.0 0. -H -1.0 2.0 0. -H -1.0 3.0 0. -H -1.0 4.0 0. -H -1.0 5.0 0. -H -1.0 6.0 0. -H -1.0 7.0 0. -H -1.0 8.0 0. -H -1.0 9.0 0. -H -1.0 10.0 0. -H -1.0 11.0 0. -H -1.0 12.0 0. -H 0.0 -12.0 0. -H 0.0 -11.0 0. -H 0.0 -10.0 0. -H 0.0 -9.0 0. -H 0.0 -8.0 0. -H 0.0 -7.0 0. -H 0.0 -6.0 0. -H 0.0 -5.0 0. -H 0.0 -4.0 0. -H 0.0 -3.0 0. -H 0.0 -2.0 0. -H 0.0 -1.0 0. -H 0.0 0.0 0. -H 0.0 1.0 0. -H 0.0 2.0 0. -H 0.0 3.0 0. -H 0.0 4.0 0. -H 0.0 5.0 0. -H 0.0 6.0 0. -H 0.0 7.0 0. -H 0.0 8.0 0. -H 0.0 9.0 0. -H 0.0 10.0 0. -H 0.0 11.0 0. -H 0.0 12.0 0. -H 1.0 -12.0 0. -H 1.0 -11.0 0. -H 1.0 -10.0 0. -H 1.0 -9.0 0. -H 1.0 -8.0 0. -H 1.0 -7.0 0. -H 1.0 -6.0 0. -H 1.0 -5.0 0. -H 1.0 -4.0 0. -H 1.0 -3.0 0. -H 1.0 -2.0 0. -H 1.0 -1.0 0. -H 1.0 0.0 0. -H 1.0 1.0 0. -H 1.0 2.0 0. -H 1.0 3.0 0. -H 1.0 4.0 0. -H 1.0 5.0 0. -H 1.0 6.0 0. -H 1.0 7.0 0. -H 1.0 8.0 0. -H 1.0 9.0 0. -H 1.0 10.0 0. -H 1.0 11.0 0. -H 1.0 12.0 0. -H 2.0 -13.0 0. -H 2.0 -12.0 0. -H 2.0 -11.0 0. -H 2.0 -10.0 0. -H 2.0 -9.0 0. -H 2.0 -8.0 0. -H 2.0 -7.0 0. -H 2.0 -6.0 0. -H 2.0 -5.0 0. -H 2.0 -4.0 0. -H 2.0 -3.0 0. -H 2.0 -2.0 0. -H 2.0 -1.0 0. -H 2.0 0.0 0. -H 2.0 1.0 0. -H 2.0 2.0 0. -H 2.0 3.0 0. -H 2.0 4.0 0. -H 2.0 5.0 0. -H 2.0 6.0 0. -H 2.0 7.0 0. -H 2.0 8.0 0. -H 2.0 9.0 0. -H 2.0 10.0 0. -H 2.0 11.0 0. -H 2.0 12.0 0. -H 2.0 13.0 0. -H 3.0 -14.0 0. -H 3.0 -13.0 0. -H 3.0 -12.0 0. -H 3.0 -11.0 0. -H 3.0 -10.0 0. -H 3.0 -9.0 0. -H 3.0 -8.0 0. -H 3.0 -7.0 0. -H 3.0 -6.0 0. -H 3.0 -5.0 0. -H 3.0 -4.0 0. -H 3.0 -3.0 0. -H 3.0 -2.0 0. -H 3.0 -1.0 0. -H 3.0 0.0 0. -H 3.0 1.0 0. -H 3.0 2.0 0. -H 3.0 3.0 0. -H 3.0 4.0 0. -H 3.0 5.0 0. -H 3.0 6.0 0. -H 3.0 7.0 0. -H 3.0 8.0 0. -H 3.0 9.0 0. -H 3.0 10.0 0. -H 3.0 11.0 0. -H 3.0 12.0 0. -H 3.0 13.0 0. -H 3.0 14.0 0. -H 4.0 -16.0 0. -H 4.0 -15.0 0. -H 4.0 -14.0 0. -H 4.0 -13.0 0. -H 4.0 -12.0 0. -H 4.0 -11.0 0. -H 4.0 -10.0 0. -H 4.0 -9.0 0. -H 4.0 -8.0 0. -H 4.0 -7.0 0. -H 4.0 -6.0 0. -H 4.0 -5.0 0. -H 4.0 -4.0 0. -H 4.0 -3.0 0. -H 4.0 -2.0 0. -H 4.0 -1.0 0. -H 4.0 0.0 0. -H 4.0 1.0 0. -H 4.0 2.0 0. -H 4.0 3.0 0. -H 4.0 4.0 0. -H 4.0 5.0 0. -H 4.0 6.0 0. -H 4.0 7.0 0. -H 4.0 8.0 0. -H 4.0 9.0 0. -H 4.0 10.0 0. -H 4.0 11.0 0. -H 4.0 12.0 0. -H 4.0 13.0 0. -H 4.0 14.0 0. -H 4.0 15.0 0. -H 4.0 16.0 0. -H 5.0 -18.0 0. -H 5.0 -17.0 0. -H 5.0 -16.0 0. -H 5.0 -15.0 0. -H 5.0 -14.0 0. -H 5.0 -13.0 0. -H 5.0 -12.0 0. -H 5.0 -11.0 0. -H 5.0 -10.0 0. -H 5.0 -9.0 0. -H 5.0 -8.0 0. -H 5.0 -7.0 0. -H 5.0 -6.0 0. -H 5.0 -5.0 0. -H 5.0 -4.0 0. -H 5.0 -3.0 0. -H 5.0 -2.0 0. -H 5.0 -1.0 0. -H 5.0 0.0 0. -H 5.0 1.0 0. -H 5.0 2.0 0. -H 5.0 3.0 0. -H 5.0 4.0 0. -H 5.0 5.0 0. -H 5.0 6.0 0. -H 5.0 7.0 0. -H 5.0 8.0 0. -H 5.0 9.0 0. -H 5.0 10.0 0. -H 5.0 11.0 0. -H 5.0 12.0 0. -H 5.0 13.0 0. -H 5.0 14.0 0. -H 5.0 15.0 0. -H 5.0 16.0 0. -H 5.0 17.0 0. -H 5.0 18.0 0. -H 6.0 -20.0 0. -H 6.0 -19.0 0. -H 6.0 -18.0 0. -H 6.0 -17.0 0. -H 6.0 -16.0 0. -H 6.0 -15.0 0. -H 6.0 -14.0 0. -H 6.0 -13.0 0. -H 6.0 -12.0 0. -H 6.0 -11.0 0. -H 6.0 -10.0 0. -H 6.0 -9.0 0. -H 6.0 -8.0 0. -H 6.0 -7.0 0. -H 6.0 -6.0 0. -H 6.0 -5.0 0. -H 6.0 -4.0 0. -H 6.0 -3.0 0. -H 6.0 -2.0 0. -H 6.0 -1.0 0. -H 6.0 0.0 0. -H 6.0 1.0 0. -H 6.0 2.0 0. -H 6.0 3.0 0. -H 6.0 4.0 0. -H 6.0 5.0 0. -H 6.0 6.0 0. -H 6.0 7.0 0. -H 6.0 8.0 0. -H 6.0 9.0 0. -H 6.0 10.0 0. -H 6.0 11.0 0. -H 6.0 12.0 0. -H 6.0 13.0 0. -H 6.0 14.0 0. -H 6.0 15.0 0. -H 6.0 16.0 0. -H 6.0 17.0 0. -H 6.0 18.0 0. -H 6.0 19.0 0. -H 6.0 20.0 0. -H 7.0 -23.0 0. -H 7.0 -22.0 0. -H 7.0 -21.0 0. -H 7.0 -20.0 0. -H 7.0 -19.0 0. -H 7.0 -18.0 0. -H 7.0 -17.0 0. -H 7.0 -16.0 0. -H 7.0 -15.0 0. -H 7.0 -14.0 0. -H 7.0 -13.0 0. -H 7.0 -12.0 0. -H 7.0 -11.0 0. -H 7.0 -10.0 0. -H 7.0 -9.0 0. -H 7.0 -8.0 0. -H 7.0 -7.0 0. -H 7.0 -6.0 0. -H 7.0 -5.0 0. -H 7.0 -4.0 0. -H 7.0 -3.0 0. -H 7.0 -2.0 0. -H 7.0 -1.0 0. -H 7.0 0.0 0. -H 7.0 1.0 0. -H 7.0 2.0 0. -H 7.0 3.0 0. -H 7.0 4.0 0. -H 7.0 5.0 0. -H 7.0 6.0 0. -H 7.0 7.0 0. -H 7.0 8.0 0. -H 7.0 9.0 0. -H 7.0 10.0 0. -H 7.0 11.0 0. -H 7.0 12.0 0. -H 7.0 13.0 0. -H 7.0 14.0 0. -H 7.0 15.0 0. -H 7.0 16.0 0. -H 7.0 17.0 0. -H 7.0 18.0 0. -H 7.0 19.0 0. -H 7.0 20.0 0. -H 7.0 21.0 0. -H 7.0 22.0 0. -H 7.0 23.0 0. -H 8.0 -25.0 0. -H 8.0 -24.0 0. -H 8.0 -23.0 0. -H 8.0 -22.0 0. -H 8.0 -21.0 0. -H 8.0 -20.0 0. -H 8.0 -19.0 0. -H 8.0 -18.0 0. -H 8.0 -17.0 0. -H 8.0 -16.0 0. -H 8.0 -15.0 0. -H 8.0 -14.0 0. -H 8.0 -13.0 0. -H 8.0 -12.0 0. -H 8.0 -11.0 0. -H 8.0 -10.0 0. -H 8.0 -9.0 0. -H 8.0 -8.0 0. -H 8.0 -7.0 0. -H 8.0 -6.0 0. -H 8.0 -5.0 0. -H 8.0 -4.0 0. -H 8.0 -3.0 0. -H 8.0 -2.0 0. -H 8.0 -1.0 0. -H 8.0 0.0 0. -H 8.0 1.0 0. -H 8.0 2.0 0. -H 8.0 3.0 0. -H 8.0 4.0 0. -H 8.0 5.0 0. -H 8.0 6.0 0. -H 8.0 7.0 0. -H 8.0 8.0 0. -H 8.0 9.0 0. -H 8.0 10.0 0. -H 8.0 11.0 0. -H 8.0 12.0 0. -H 8.0 13.0 0. -H 8.0 14.0 0. -H 8.0 15.0 0. -H 8.0 16.0 0. -H 8.0 17.0 0. -H 8.0 18.0 0. -H 8.0 19.0 0. -H 8.0 20.0 0. -H 8.0 21.0 0. -H 8.0 22.0 0. -H 8.0 23.0 0. -H 8.0 24.0 0. -H 8.0 25.0 0. -H 9.0 -28.0 0. -H 9.0 -27.0 0. -H 9.0 -26.0 0. -H 9.0 -25.0 0. -H 9.0 -24.0 0. -H 9.0 -23.0 0. -H 9.0 -22.0 0. -H 9.0 -21.0 0. -H 9.0 -20.0 0. -H 9.0 -19.0 0. -H 9.0 -18.0 0. -H 9.0 -17.0 0. -H 9.0 -16.0 0. -H 9.0 -15.0 0. -H 9.0 -14.0 0. -H 9.0 -13.0 0. -H 9.0 -12.0 0. -H 9.0 -11.0 0. -H 9.0 -10.0 0. -H 9.0 -9.0 0. -H 9.0 -8.0 0. -H 9.0 -7.0 0. -H 9.0 -6.0 0. -H 9.0 -5.0 0. -H 9.0 -4.0 0. -H 9.0 -3.0 0. -H 9.0 -2.0 0. -H 9.0 -1.0 0. -H 9.0 0.0 0. -H 9.0 1.0 0. -H 9.0 2.0 0. -H 9.0 3.0 0. -H 9.0 4.0 0. -H 9.0 5.0 0. -H 9.0 6.0 0. -H 9.0 7.0 0. -H 9.0 8.0 0. -H 9.0 9.0 0. -H 9.0 10.0 0. -H 9.0 11.0 0. -H 9.0 12.0 0. -H 9.0 13.0 0. -H 9.0 14.0 0. -H 9.0 15.0 0. -H 9.0 16.0 0. -H 9.0 17.0 0. -H 9.0 18.0 0. -H 9.0 19.0 0. -H 9.0 20.0 0. -H 9.0 21.0 0. -H 9.0 22.0 0. -H 9.0 23.0 0. -H 9.0 24.0 0. -H 9.0 25.0 0. -H 9.0 26.0 0. -H 9.0 27.0 0. -H 9.0 28.0 0. -H 10.0 -31.0 0. -H 10.0 -30.0 0. -H 10.0 -29.0 0. -H 10.0 -28.0 0. -H 10.0 -27.0 0. -H 10.0 -26.0 0. -H 10.0 -25.0 0. -H 10.0 -24.0 0. -H 10.0 -23.0 0. -H 10.0 -22.0 0. -H 10.0 -21.0 0. -H 10.0 -20.0 0. -H 10.0 -19.0 0. -H 10.0 -18.0 0. -H 10.0 -17.0 0. -H 10.0 -16.0 0. -H 10.0 -15.0 0. -H 10.0 -14.0 0. -H 10.0 -13.0 0. -H 10.0 -12.0 0. -H 10.0 -11.0 0. -H 10.0 -10.0 0. -H 10.0 -9.0 0. -H 10.0 -8.0 0. -H 10.0 -7.0 0. -H 10.0 -6.0 0. -H 10.0 -5.0 0. -H 10.0 -4.0 0. -H 10.0 -3.0 0. -H 10.0 -2.0 0. -H 10.0 -1.0 0. -H 10.0 0.0 0. -H 10.0 1.0 0. -H 10.0 2.0 0. -H 10.0 3.0 0. -H 10.0 4.0 0. -H 10.0 5.0 0. -H 10.0 6.0 0. -H 10.0 7.0 0. -H 10.0 8.0 0. -H 10.0 9.0 0. -H 10.0 10.0 0. -H 10.0 11.0 0. -H 10.0 12.0 0. -H 10.0 13.0 0. -H 10.0 14.0 0. -H 10.0 15.0 0. -H 10.0 16.0 0. -H 10.0 17.0 0. -H 10.0 18.0 0. -H 10.0 19.0 0. -H 10.0 20.0 0. -H 10.0 21.0 0. -H 10.0 22.0 0. -H 10.0 23.0 0. -H 10.0 24.0 0. -H 10.0 25.0 0. -H 10.0 26.0 0. -H 10.0 27.0 0. -H 10.0 28.0 0. -H 10.0 29.0 0. -H 10.0 30.0 0. -H 10.0 31.0 0. -H 11.0 -33.0 0. -H 11.0 -32.0 0. -H 11.0 -31.0 0. -H 11.0 -30.0 0. -H 11.0 -29.0 0. -H 11.0 -28.0 0. -H 11.0 -27.0 0. -H 11.0 -26.0 0. -H 11.0 -25.0 0. -H 11.0 -24.0 0. -H 11.0 -23.0 0. -H 11.0 -22.0 0. -H 11.0 -21.0 0. -H 11.0 -20.0 0. -H 11.0 -19.0 0. -H 11.0 -18.0 0. -H 11.0 -17.0 0. -H 11.0 -16.0 0. -H 11.0 -15.0 0. -H 11.0 -14.0 0. -H 11.0 -13.0 0. -H 11.0 -12.0 0. -H 11.0 -11.0 0. -H 11.0 -10.0 0. -H 11.0 -9.0 0. -H 11.0 -8.0 0. -H 11.0 -7.0 0. -H 11.0 -6.0 0. -H 11.0 -5.0 0. -H 11.0 -4.0 0. -H 11.0 -3.0 0. -H 11.0 -2.0 0. -H 11.0 -1.0 0. -H 11.0 0.0 0. -H 11.0 1.0 0. -H 11.0 2.0 0. -H 11.0 3.0 0. -H 11.0 4.0 0. -H 11.0 5.0 0. -H 11.0 6.0 0. -H 11.0 7.0 0. -H 11.0 8.0 0. -H 11.0 9.0 0. -H 11.0 10.0 0. -H 11.0 11.0 0. -H 11.0 12.0 0. -H 11.0 13.0 0. -H 11.0 14.0 0. -H 11.0 15.0 0. -H 11.0 16.0 0. -H 11.0 17.0 0. -H 11.0 18.0 0. -H 11.0 19.0 0. -H 11.0 20.0 0. -H 11.0 21.0 0. -H 11.0 22.0 0. -H 11.0 23.0 0. -H 11.0 24.0 0. -H 11.0 25.0 0. -H 11.0 26.0 0. -H 11.0 27.0 0. -H 11.0 28.0 0. -H 11.0 29.0 0. -H 11.0 30.0 0. -H 11.0 31.0 0. -H 11.0 32.0 0. -H 11.0 33.0 0. -H 12.0 -36.0 0. -H 12.0 -35.0 0. -H 12.0 -34.0 0. -H 12.0 -33.0 0. -H 12.0 -32.0 0. -H 12.0 -31.0 0. -H 12.0 -30.0 0. -H 12.0 -29.0 0. -H 12.0 -28.0 0. -H 12.0 -27.0 0. -H 12.0 -26.0 0. -H 12.0 -25.0 0. -H 12.0 -24.0 0. -H 12.0 -23.0 0. -H 12.0 -22.0 0. -H 12.0 -21.0 0. -H 12.0 -20.0 0. -H 12.0 -19.0 0. -H 12.0 -18.0 0. -H 12.0 -17.0 0. -H 12.0 -16.0 0. -H 12.0 -15.0 0. -H 12.0 -14.0 0. -H 12.0 -13.0 0. -H 12.0 -12.0 0. -H 12.0 -11.0 0. -H 12.0 -10.0 0. -H 12.0 -9.0 0. -H 12.0 -8.0 0. -H 12.0 -7.0 0. -H 12.0 -6.0 0. -H 12.0 -5.0 0. -H 12.0 -4.0 0. -H 12.0 -3.0 0. -H 12.0 -2.0 0. -H 12.0 -1.0 0. -H 12.0 0.0 0. -H 12.0 1.0 0. -H 12.0 2.0 0. -H 12.0 3.0 0. -H 12.0 4.0 0. -H 12.0 5.0 0. -H 12.0 6.0 0. -H 12.0 7.0 0. -H 12.0 8.0 0. -H 12.0 9.0 0. -H 12.0 10.0 0. -H 12.0 11.0 0. -H 12.0 12.0 0. -H 12.0 13.0 0. -H 12.0 14.0 0. -H 12.0 15.0 0. -H 12.0 16.0 0. -H 12.0 17.0 0. -H 12.0 18.0 0. -H 12.0 19.0 0. -H 12.0 20.0 0. -H 12.0 21.0 0. -H 12.0 22.0 0. -H 12.0 23.0 0. -H 12.0 24.0 0. -H 12.0 25.0 0. -H 12.0 26.0 0. -H 12.0 27.0 0. -H 12.0 28.0 0. -H 12.0 29.0 0. -H 12.0 30.0 0. -H 12.0 31.0 0. -H 12.0 32.0 0. -H 12.0 33.0 0. -H 12.0 34.0 0. -H 12.0 35.0 0. -H 12.0 36.0 0. -H 13.0 -38.0 0. -H 13.0 -37.0 0. -H 13.0 -36.0 0. -H 13.0 -35.0 0. -H 13.0 -34.0 0. -H 13.0 -33.0 0. -H 13.0 -32.0 0. -H 13.0 -31.0 0. -H 13.0 -30.0 0. -H 13.0 -29.0 0. -H 13.0 -28.0 0. -H 13.0 -27.0 0. -H 13.0 -26.0 0. -H 13.0 -25.0 0. -H 13.0 -24.0 0. -H 13.0 -23.0 0. -H 13.0 -22.0 0. -H 13.0 -21.0 0. -H 13.0 -20.0 0. -H 13.0 -19.0 0. -H 13.0 -18.0 0. -H 13.0 -17.0 0. -H 13.0 -16.0 0. -H 13.0 -15.0 0. -H 13.0 -14.0 0. -H 13.0 -13.0 0. -H 13.0 -12.0 0. -H 13.0 -11.0 0. -H 13.0 -10.0 0. -H 13.0 -9.0 0. -H 13.0 -8.0 0. -H 13.0 -7.0 0. -H 13.0 -6.0 0. -H 13.0 -5.0 0. -H 13.0 -4.0 0. -H 13.0 -3.0 0. -H 13.0 -2.0 0. -H 13.0 -1.0 0. -H 13.0 0.0 0. -H 13.0 1.0 0. -H 13.0 2.0 0. -H 13.0 3.0 0. -H 13.0 4.0 0. -H 13.0 5.0 0. -H 13.0 6.0 0. -H 13.0 7.0 0. -H 13.0 8.0 0. -H 13.0 9.0 0. -H 13.0 10.0 0. -H 13.0 11.0 0. -H 13.0 12.0 0. -H 13.0 13.0 0. -H 13.0 14.0 0. -H 13.0 15.0 0. -H 13.0 16.0 0. -H 13.0 17.0 0. -H 13.0 18.0 0. -H 13.0 19.0 0. -H 13.0 20.0 0. -H 13.0 21.0 0. -H 13.0 22.0 0. -H 13.0 23.0 0. -H 13.0 24.0 0. -H 13.0 25.0 0. -H 13.0 26.0 0. -H 13.0 27.0 0. -H 13.0 28.0 0. -H 13.0 29.0 0. -H 13.0 30.0 0. -H 13.0 31.0 0. -H 13.0 32.0 0. -H 13.0 33.0 0. -H 13.0 34.0 0. -H 13.0 35.0 0. -H 13.0 36.0 0. -H 13.0 37.0 0. -H 13.0 38.0 0. -H 14.0 -40.0 0. -H 14.0 -39.0 0. -H 14.0 -38.0 0. -H 14.0 -37.0 0. -H 14.0 -36.0 0. -H 14.0 -35.0 0. -H 14.0 -34.0 0. -H 14.0 -33.0 0. -H 14.0 -32.0 0. -H 14.0 -31.0 0. -H 14.0 -30.0 0. -H 14.0 -29.0 0. -H 14.0 -28.0 0. -H 14.0 -27.0 0. -H 14.0 -26.0 0. -H 14.0 -25.0 0. -H 14.0 -24.0 0. -H 14.0 -23.0 0. -H 14.0 -22.0 0. -H 14.0 -21.0 0. -H 14.0 -20.0 0. -H 14.0 -19.0 0. -H 14.0 -18.0 0. -H 14.0 -17.0 0. -H 14.0 -16.0 0. -H 14.0 -15.0 0. -H 14.0 -14.0 0. -H 14.0 -13.0 0. -H 14.0 -12.0 0. -H 14.0 -11.0 0. -H 14.0 -10.0 0. -H 14.0 -9.0 0. -H 14.0 -8.0 0. -H 14.0 -7.0 0. -H 14.0 -6.0 0. -H 14.0 -5.0 0. -H 14.0 -4.0 0. -H 14.0 -3.0 0. -H 14.0 -2.0 0. -H 14.0 -1.0 0. -H 14.0 0.0 0. -H 14.0 1.0 0. -H 14.0 2.0 0. -H 14.0 3.0 0. -H 14.0 4.0 0. -H 14.0 5.0 0. -H 14.0 6.0 0. -H 14.0 7.0 0. -H 14.0 8.0 0. -H 14.0 9.0 0. -H 14.0 10.0 0. -H 14.0 11.0 0. -H 14.0 12.0 0. -H 14.0 13.0 0. -H 14.0 14.0 0. -H 14.0 15.0 0. -H 14.0 16.0 0. -H 14.0 17.0 0. -H 14.0 18.0 0. -H 14.0 19.0 0. -H 14.0 20.0 0. -H 14.0 21.0 0. -H 14.0 22.0 0. -H 14.0 23.0 0. -H 14.0 24.0 0. -H 14.0 25.0 0. -H 14.0 26.0 0. -H 14.0 27.0 0. -H 14.0 28.0 0. -H 14.0 29.0 0. -H 14.0 30.0 0. -H 14.0 31.0 0. -H 14.0 32.0 0. -H 14.0 33.0 0. -H 14.0 34.0 0. -H 14.0 35.0 0. -H 14.0 36.0 0. -H 14.0 37.0 0. -H 14.0 38.0 0. -H 14.0 39.0 0. -H 14.0 40.0 0. -H 15.0 -42.0 0. -H 15.0 -41.0 0. -H 15.0 -40.0 0. -H 15.0 -39.0 0. -H 15.0 -38.0 0. -H 15.0 -37.0 0. -H 15.0 -36.0 0. -H 15.0 -35.0 0. -H 15.0 -34.0 0. -H 15.0 -33.0 0. -H 15.0 -32.0 0. -H 15.0 -31.0 0. -H 15.0 -30.0 0. -H 15.0 -29.0 0. -H 15.0 -28.0 0. -H 15.0 -27.0 0. -H 15.0 -26.0 0. -H 15.0 -25.0 0. -H 15.0 -24.0 0. -H 15.0 -23.0 0. -H 15.0 -22.0 0. -H 15.0 -21.0 0. -H 15.0 -20.0 0. -H 15.0 -19.0 0. -H 15.0 -18.0 0. -H 15.0 -17.0 0. -H 15.0 -16.0 0. -H 15.0 -15.0 0. -H 15.0 -14.0 0. -H 15.0 -13.0 0. -H 15.0 -12.0 0. -H 15.0 -11.0 0. -H 15.0 -10.0 0. -H 15.0 -9.0 0. -H 15.0 -8.0 0. -H 15.0 -7.0 0. -H 15.0 -6.0 0. -H 15.0 -5.0 0. -H 15.0 -4.0 0. -H 15.0 -3.0 0. -H 15.0 -2.0 0. -H 15.0 -1.0 0. -H 15.0 0.0 0. -H 15.0 1.0 0. -H 15.0 2.0 0. -H 15.0 3.0 0. -H 15.0 4.0 0. -H 15.0 5.0 0. -H 15.0 6.0 0. -H 15.0 7.0 0. -H 15.0 8.0 0. -H 15.0 9.0 0. -H 15.0 10.0 0. -H 15.0 11.0 0. -H 15.0 12.0 0. -H 15.0 13.0 0. -H 15.0 14.0 0. -H 15.0 15.0 0. -H 15.0 16.0 0. -H 15.0 17.0 0. -H 15.0 18.0 0. -H 15.0 19.0 0. -H 15.0 20.0 0. -H 15.0 21.0 0. -H 15.0 22.0 0. -H 15.0 23.0 0. -H 15.0 24.0 0. -H 15.0 25.0 0. -H 15.0 26.0 0. -H 15.0 27.0 0. -H 15.0 28.0 0. -H 15.0 29.0 0. -H 15.0 30.0 0. -H 15.0 31.0 0. -H 15.0 32.0 0. -H 15.0 33.0 0. -H 15.0 34.0 0. -H 15.0 35.0 0. -H 15.0 36.0 0. -H 15.0 37.0 0. -H 15.0 38.0 0. -H 15.0 39.0 0. -H 15.0 40.0 0. -H 15.0 41.0 0. -H 15.0 42.0 0. -H 16.0 -43.0 0. -H 16.0 -42.0 0. -H 16.0 -41.0 0. -H 16.0 -40.0 0. -H 16.0 -39.0 0. -H 16.0 -38.0 0. -H 16.0 -37.0 0. -H 16.0 -36.0 0. -H 16.0 -35.0 0. -H 16.0 -34.0 0. -H 16.0 -33.0 0. -H 16.0 -32.0 0. -H 16.0 -31.0 0. -H 16.0 -30.0 0. -H 16.0 -29.0 0. -H 16.0 -28.0 0. -H 16.0 -27.0 0. -H 16.0 -26.0 0. -H 16.0 -25.0 0. -H 16.0 -24.0 0. -H 16.0 -23.0 0. -H 16.0 -22.0 0. -H 16.0 -21.0 0. -H 16.0 -20.0 0. -H 16.0 -19.0 0. -H 16.0 -18.0 0. -H 16.0 -17.0 0. -H 16.0 -16.0 0. -H 16.0 -15.0 0. -H 16.0 -14.0 0. -H 16.0 -13.0 0. -H 16.0 -12.0 0. -H 16.0 -11.0 0. -H 16.0 -10.0 0. -H 16.0 -9.0 0. -H 16.0 -8.0 0. -H 16.0 -7.0 0. -H 16.0 -6.0 0. -H 16.0 -5.0 0. -H 16.0 -4.0 0. -H 16.0 -3.0 0. -H 16.0 -2.0 0. -H 16.0 -1.0 0. -H 16.0 0.0 0. -H 16.0 1.0 0. -H 16.0 2.0 0. -H 16.0 3.0 0. -H 16.0 4.0 0. -H 16.0 5.0 0. -H 16.0 6.0 0. -H 16.0 7.0 0. -H 16.0 8.0 0. -H 16.0 9.0 0. -H 16.0 10.0 0. -H 16.0 11.0 0. -H 16.0 12.0 0. -H 16.0 13.0 0. -H 16.0 14.0 0. -H 16.0 15.0 0. -H 16.0 16.0 0. -H 16.0 17.0 0. -H 16.0 18.0 0. -H 16.0 19.0 0. -H 16.0 20.0 0. -H 16.0 21.0 0. -H 16.0 22.0 0. -H 16.0 23.0 0. -H 16.0 24.0 0. -H 16.0 25.0 0. -H 16.0 26.0 0. -H 16.0 27.0 0. -H 16.0 28.0 0. -H 16.0 29.0 0. -H 16.0 30.0 0. -H 16.0 31.0 0. -H 16.0 32.0 0. -H 16.0 33.0 0. -H 16.0 34.0 0. -H 16.0 35.0 0. -H 16.0 36.0 0. -H 16.0 37.0 0. -H 16.0 38.0 0. -H 16.0 39.0 0. -H 16.0 40.0 0. -H 16.0 41.0 0. -H 16.0 42.0 0. -H 16.0 43.0 0. -H 17.0 -44.0 0. -H 17.0 -43.0 0. -H 17.0 -42.0 0. -H 17.0 -41.0 0. -H 17.0 -40.0 0. -H 17.0 -39.0 0. -H 17.0 -38.0 0. -H 17.0 -37.0 0. -H 17.0 -36.0 0. -H 17.0 -35.0 0. -H 17.0 -34.0 0. -H 17.0 -33.0 0. -H 17.0 -32.0 0. -H 17.0 -31.0 0. -H 17.0 -30.0 0. -H 17.0 -29.0 0. -H 17.0 -28.0 0. -H 17.0 -27.0 0. -H 17.0 -26.0 0. -H 17.0 -25.0 0. -H 17.0 -24.0 0. -H 17.0 -23.0 0. -H 17.0 -22.0 0. -H 17.0 -21.0 0. -H 17.0 -20.0 0. -H 17.0 -19.0 0. -H 17.0 -18.0 0. -H 17.0 -17.0 0. -H 17.0 -16.0 0. -H 17.0 -15.0 0. -H 17.0 -14.0 0. -H 17.0 -13.0 0. -H 17.0 -12.0 0. -H 17.0 -11.0 0. -H 17.0 -10.0 0. -H 17.0 -9.0 0. -H 17.0 -8.0 0. -H 17.0 -7.0 0. -H 17.0 -6.0 0. -H 17.0 -5.0 0. -H 17.0 -4.0 0. -H 17.0 -3.0 0. -H 17.0 -2.0 0. -H 17.0 -1.0 0. -H 17.0 0.0 0. -H 17.0 1.0 0. -H 17.0 2.0 0. -H 17.0 3.0 0. -H 17.0 4.0 0. -H 17.0 5.0 0. -H 17.0 6.0 0. -H 17.0 7.0 0. -H 17.0 8.0 0. -H 17.0 9.0 0. -H 17.0 10.0 0. -H 17.0 11.0 0. -H 17.0 12.0 0. -H 17.0 13.0 0. -H 17.0 14.0 0. -H 17.0 15.0 0. -H 17.0 16.0 0. -H 17.0 17.0 0. -H 17.0 18.0 0. -H 17.0 19.0 0. -H 17.0 20.0 0. -H 17.0 21.0 0. -H 17.0 22.0 0. -H 17.0 23.0 0. -H 17.0 24.0 0. -H 17.0 25.0 0. -H 17.0 26.0 0. -H 17.0 27.0 0. -H 17.0 28.0 0. -H 17.0 29.0 0. -H 17.0 30.0 0. -H 17.0 31.0 0. -H 17.0 32.0 0. -H 17.0 33.0 0. -H 17.0 34.0 0. -H 17.0 35.0 0. -H 17.0 36.0 0. -H 17.0 37.0 0. -H 17.0 38.0 0. -H 17.0 39.0 0. -H 17.0 40.0 0. -H 17.0 41.0 0. -H 17.0 42.0 0. -H 17.0 43.0 0. -H 17.0 44.0 0. -H 18.0 -46.0 0. -H 18.0 -45.0 0. -H 18.0 -44.0 0. -H 18.0 -43.0 0. -H 18.0 -42.0 0. -H 18.0 -41.0 0. -H 18.0 -40.0 0. -H 18.0 -39.0 0. -H 18.0 -38.0 0. -H 18.0 -37.0 0. -H 18.0 -36.0 0. -H 18.0 -35.0 0. -H 18.0 -34.0 0. -H 18.0 -33.0 0. -H 18.0 -32.0 0. -H 18.0 -31.0 0. -H 18.0 -30.0 0. -H 18.0 -29.0 0. -H 18.0 -28.0 0. -H 18.0 -27.0 0. -H 18.0 -26.0 0. -H 18.0 -25.0 0. -H 18.0 -24.0 0. -H 18.0 -23.0 0. -H 18.0 -22.0 0. -H 18.0 -21.0 0. -H 18.0 -20.0 0. -H 18.0 -19.0 0. -H 18.0 -18.0 0. -H 18.0 -17.0 0. -H 18.0 -16.0 0. -H 18.0 -15.0 0. -H 18.0 -14.0 0. -H 18.0 -13.0 0. -H 18.0 -12.0 0. -H 18.0 -11.0 0. -H 18.0 -10.0 0. -H 18.0 -9.0 0. -H 18.0 -8.0 0. -H 18.0 -7.0 0. -H 18.0 -6.0 0. -H 18.0 -5.0 0. -H 18.0 -4.0 0. -H 18.0 -3.0 0. -H 18.0 -2.0 0. -H 18.0 -1.0 0. -H 18.0 0.0 0. -H 18.0 1.0 0. -H 18.0 2.0 0. -H 18.0 3.0 0. -H 18.0 4.0 0. -H 18.0 5.0 0. -H 18.0 6.0 0. -H 18.0 7.0 0. -H 18.0 8.0 0. -H 18.0 9.0 0. -H 18.0 10.0 0. -H 18.0 11.0 0. -H 18.0 12.0 0. -H 18.0 13.0 0. -H 18.0 14.0 0. -H 18.0 15.0 0. -H 18.0 16.0 0. -H 18.0 17.0 0. -H 18.0 18.0 0. -H 18.0 19.0 0. -H 18.0 20.0 0. -H 18.0 21.0 0. -H 18.0 22.0 0. -H 18.0 23.0 0. -H 18.0 24.0 0. -H 18.0 25.0 0. -H 18.0 26.0 0. -H 18.0 27.0 0. -H 18.0 28.0 0. -H 18.0 29.0 0. -H 18.0 30.0 0. -H 18.0 31.0 0. -H 18.0 32.0 0. -H 18.0 33.0 0. -H 18.0 34.0 0. -H 18.0 35.0 0. -H 18.0 36.0 0. -H 18.0 37.0 0. -H 18.0 38.0 0. -H 18.0 39.0 0. -H 18.0 40.0 0. -H 18.0 41.0 0. -H 18.0 42.0 0. -H 18.0 43.0 0. -H 18.0 44.0 0. -H 18.0 45.0 0. -H 18.0 46.0 0. -H 19.0 -46.0 0. -H 19.0 -45.0 0. -H 19.0 -44.0 0. -H 19.0 -43.0 0. -H 19.0 -42.0 0. -H 19.0 -41.0 0. -H 19.0 -40.0 0. -H 19.0 -39.0 0. -H 19.0 -38.0 0. -H 19.0 -37.0 0. -H 19.0 -36.0 0. -H 19.0 -35.0 0. -H 19.0 -34.0 0. -H 19.0 -33.0 0. -H 19.0 -32.0 0. -H 19.0 -31.0 0. -H 19.0 -30.0 0. -H 19.0 -29.0 0. -H 19.0 -28.0 0. -H 19.0 -27.0 0. -H 19.0 -26.0 0. -H 19.0 -25.0 0. -H 19.0 -24.0 0. -H 19.0 -23.0 0. -H 19.0 -22.0 0. -H 19.0 -21.0 0. -H 19.0 -20.0 0. -H 19.0 -19.0 0. -H 19.0 -18.0 0. -H 19.0 -17.0 0. -H 19.0 -16.0 0. -H 19.0 -15.0 0. -H 19.0 -14.0 0. -H 19.0 -13.0 0. -H 19.0 -12.0 0. -H 19.0 -11.0 0. -H 19.0 -10.0 0. -H 19.0 -9.0 0. -H 19.0 -8.0 0. -H 19.0 -7.0 0. -H 19.0 -6.0 0. -H 19.0 -5.0 0. -H 19.0 -4.0 0. -H 19.0 -3.0 0. -H 19.0 -2.0 0. -H 19.0 -1.0 0. -H 19.0 0.0 0. -H 19.0 1.0 0. -H 19.0 2.0 0. -H 19.0 3.0 0. -H 19.0 4.0 0. -H 19.0 5.0 0. -H 19.0 6.0 0. -H 19.0 7.0 0. -H 19.0 8.0 0. -H 19.0 9.0 0. -H 19.0 10.0 0. -H 19.0 11.0 0. -H 19.0 12.0 0. -H 19.0 13.0 0. -H 19.0 14.0 0. -H 19.0 15.0 0. -H 19.0 16.0 0. -H 19.0 17.0 0. -H 19.0 18.0 0. -H 19.0 19.0 0. -H 19.0 20.0 0. -H 19.0 21.0 0. -H 19.0 22.0 0. -H 19.0 23.0 0. -H 19.0 24.0 0. -H 19.0 25.0 0. -H 19.0 26.0 0. -H 19.0 27.0 0. -H 19.0 28.0 0. -H 19.0 29.0 0. -H 19.0 30.0 0. -H 19.0 31.0 0. -H 19.0 32.0 0. -H 19.0 33.0 0. -H 19.0 34.0 0. -H 19.0 35.0 0. -H 19.0 36.0 0. -H 19.0 37.0 0. -H 19.0 38.0 0. -H 19.0 39.0 0. -H 19.0 40.0 0. -H 19.0 41.0 0. -H 19.0 42.0 0. -H 19.0 43.0 0. -H 19.0 44.0 0. -H 19.0 45.0 0. -H 19.0 46.0 0. -H 20.0 -47.0 0. -H 20.0 -46.0 0. -H 20.0 -45.0 0. -H 20.0 -44.0 0. -H 20.0 -43.0 0. -H 20.0 -42.0 0. -H 20.0 -41.0 0. -H 20.0 -40.0 0. -H 20.0 -39.0 0. -H 20.0 -38.0 0. -H 20.0 -37.0 0. -H 20.0 -36.0 0. -H 20.0 -35.0 0. -H 20.0 -34.0 0. -H 20.0 -33.0 0. -H 20.0 -32.0 0. -H 20.0 -31.0 0. -H 20.0 -30.0 0. -H 20.0 -29.0 0. -H 20.0 -28.0 0. -H 20.0 -27.0 0. -H 20.0 -26.0 0. -H 20.0 -25.0 0. -H 20.0 -24.0 0. -H 20.0 -23.0 0. -H 20.0 -22.0 0. -H 20.0 -21.0 0. -H 20.0 -20.0 0. -H 20.0 -19.0 0. -H 20.0 -18.0 0. -H 20.0 -17.0 0. -H 20.0 -16.0 0. -H 20.0 -15.0 0. -H 20.0 -14.0 0. -H 20.0 -13.0 0. -H 20.0 -12.0 0. -H 20.0 -11.0 0. -H 20.0 -10.0 0. -H 20.0 -9.0 0. -H 20.0 -8.0 0. -H 20.0 -7.0 0. -H 20.0 -6.0 0. -H 20.0 -5.0 0. -H 20.0 -4.0 0. -H 20.0 -3.0 0. -H 20.0 -2.0 0. -H 20.0 -1.0 0. -H 20.0 0.0 0. -H 20.0 1.0 0. -H 20.0 2.0 0. -H 20.0 3.0 0. -H 20.0 4.0 0. -H 20.0 5.0 0. -H 20.0 6.0 0. -H 20.0 7.0 0. -H 20.0 8.0 0. -H 20.0 9.0 0. -H 20.0 10.0 0. -H 20.0 11.0 0. -H 20.0 12.0 0. -H 20.0 13.0 0. -H 20.0 14.0 0. -H 20.0 15.0 0. -H 20.0 16.0 0. -H 20.0 17.0 0. -H 20.0 18.0 0. -H 20.0 19.0 0. -H 20.0 20.0 0. -H 20.0 21.0 0. -H 20.0 22.0 0. -H 20.0 23.0 0. -H 20.0 24.0 0. -H 20.0 25.0 0. -H 20.0 26.0 0. -H 20.0 27.0 0. -H 20.0 28.0 0. -H 20.0 29.0 0. -H 20.0 30.0 0. -H 20.0 31.0 0. -H 20.0 32.0 0. -H 20.0 33.0 0. -H 20.0 34.0 0. -H 20.0 35.0 0. -H 20.0 36.0 0. -H 20.0 37.0 0. -H 20.0 38.0 0. -H 20.0 39.0 0. -H 20.0 40.0 0. -H 20.0 41.0 0. -H 20.0 42.0 0. -H 20.0 43.0 0. -H 20.0 44.0 0. -H 20.0 45.0 0. -H 20.0 46.0 0. -H 20.0 47.0 0. -H 21.0 -48.0 0. -H 21.0 -47.0 0. -H 21.0 -46.0 0. -H 21.0 -45.0 0. -H 21.0 -44.0 0. -H 21.0 -43.0 0. -H 21.0 -42.0 0. -H 21.0 -41.0 0. -H 21.0 -40.0 0. -H 21.0 -39.0 0. -H 21.0 -38.0 0. -H 21.0 -37.0 0. -H 21.0 -36.0 0. -H 21.0 -35.0 0. -H 21.0 -34.0 0. -H 21.0 -33.0 0. -H 21.0 -32.0 0. -H 21.0 -31.0 0. -H 21.0 -30.0 0. -H 21.0 -29.0 0. -H 21.0 -28.0 0. -H 21.0 -27.0 0. -H 21.0 -26.0 0. -H 21.0 -25.0 0. -H 21.0 -24.0 0. -H 21.0 -23.0 0. -H 21.0 -22.0 0. -H 21.0 -21.0 0. -H 21.0 -20.0 0. -H 21.0 -19.0 0. -H 21.0 -18.0 0. -H 21.0 -17.0 0. -H 21.0 -16.0 0. -H 21.0 -15.0 0. -H 21.0 -14.0 0. -H 21.0 -13.0 0. -H 21.0 -12.0 0. -H 21.0 -11.0 0. -H 21.0 -10.0 0. -H 21.0 -9.0 0. -H 21.0 -8.0 0. -H 21.0 -7.0 0. -H 21.0 -6.0 0. -H 21.0 -5.0 0. -H 21.0 -4.0 0. -H 21.0 -3.0 0. -H 21.0 -2.0 0. -H 21.0 -1.0 0. -H 21.0 0.0 0. -H 21.0 1.0 0. -H 21.0 2.0 0. -H 21.0 3.0 0. -H 21.0 4.0 0. -H 21.0 5.0 0. -H 21.0 6.0 0. -H 21.0 7.0 0. -H 21.0 8.0 0. -H 21.0 9.0 0. -H 21.0 10.0 0. -H 21.0 11.0 0. -H 21.0 12.0 0. -H 21.0 13.0 0. -H 21.0 14.0 0. -H 21.0 15.0 0. -H 21.0 16.0 0. -H 21.0 17.0 0. -H 21.0 18.0 0. -H 21.0 19.0 0. -H 21.0 20.0 0. -H 21.0 21.0 0. -H 21.0 22.0 0. -H 21.0 23.0 0. -H 21.0 24.0 0. -H 21.0 25.0 0. -H 21.0 26.0 0. -H 21.0 27.0 0. -H 21.0 28.0 0. -H 21.0 29.0 0. -H 21.0 30.0 0. -H 21.0 31.0 0. -H 21.0 32.0 0. -H 21.0 33.0 0. -H 21.0 34.0 0. -H 21.0 35.0 0. -H 21.0 36.0 0. -H 21.0 37.0 0. -H 21.0 38.0 0. -H 21.0 39.0 0. -H 21.0 40.0 0. -H 21.0 41.0 0. -H 21.0 42.0 0. -H 21.0 43.0 0. -H 21.0 44.0 0. -H 21.0 45.0 0. -H 21.0 46.0 0. -H 21.0 47.0 0. -H 21.0 48.0 0. -H 22.0 -48.0 0. -H 22.0 -47.0 0. -H 22.0 -46.0 0. -H 22.0 -45.0 0. -H 22.0 -44.0 0. -H 22.0 -43.0 0. -H 22.0 -42.0 0. -H 22.0 -41.0 0. -H 22.0 -40.0 0. -H 22.0 -39.0 0. -H 22.0 -38.0 0. -H 22.0 -37.0 0. -H 22.0 -36.0 0. -H 22.0 -35.0 0. -H 22.0 -34.0 0. -H 22.0 -33.0 0. -H 22.0 -32.0 0. -H 22.0 -31.0 0. -H 22.0 -30.0 0. -H 22.0 -29.0 0. -H 22.0 -28.0 0. -H 22.0 -27.0 0. -H 22.0 -26.0 0. -H 22.0 -25.0 0. -H 22.0 -24.0 0. -H 22.0 -23.0 0. -H 22.0 -22.0 0. -H 22.0 -21.0 0. -H 22.0 -20.0 0. -H 22.0 -19.0 0. -H 22.0 -18.0 0. -H 22.0 -17.0 0. -H 22.0 -16.0 0. -H 22.0 -15.0 0. -H 22.0 -14.0 0. -H 22.0 -13.0 0. -H 22.0 -12.0 0. -H 22.0 -11.0 0. -H 22.0 -10.0 0. -H 22.0 -9.0 0. -H 22.0 -8.0 0. -H 22.0 -7.0 0. -H 22.0 -6.0 0. -H 22.0 -5.0 0. -H 22.0 -4.0 0. -H 22.0 -3.0 0. -H 22.0 -2.0 0. -H 22.0 -1.0 0. -H 22.0 0.0 0. -H 22.0 1.0 0. -H 22.0 2.0 0. -H 22.0 3.0 0. -H 22.0 4.0 0. -H 22.0 5.0 0. -H 22.0 6.0 0. -H 22.0 7.0 0. -H 22.0 8.0 0. -H 22.0 9.0 0. -H 22.0 10.0 0. -H 22.0 11.0 0. -H 22.0 12.0 0. -H 22.0 13.0 0. -H 22.0 14.0 0. -H 22.0 15.0 0. -H 22.0 16.0 0. -H 22.0 17.0 0. -H 22.0 18.0 0. -H 22.0 19.0 0. -H 22.0 20.0 0. -H 22.0 21.0 0. -H 22.0 22.0 0. -H 22.0 23.0 0. -H 22.0 24.0 0. -H 22.0 25.0 0. -H 22.0 26.0 0. -H 22.0 27.0 0. -H 22.0 28.0 0. -H 22.0 29.0 0. -H 22.0 30.0 0. -H 22.0 31.0 0. -H 22.0 32.0 0. -H 22.0 33.0 0. -H 22.0 34.0 0. -H 22.0 35.0 0. -H 22.0 36.0 0. -H 22.0 37.0 0. -H 22.0 38.0 0. -H 22.0 39.0 0. -H 22.0 40.0 0. -H 22.0 41.0 0. -H 22.0 42.0 0. -H 22.0 43.0 0. -H 22.0 44.0 0. -H 22.0 45.0 0. -H 22.0 46.0 0. -H 22.0 47.0 0. -H 22.0 48.0 0. -H 23.0 -49.0 0. -H 23.0 -48.0 0. -H 23.0 -47.0 0. -H 23.0 -46.0 0. -H 23.0 -45.0 0. -H 23.0 -44.0 0. -H 23.0 -43.0 0. -H 23.0 -42.0 0. -H 23.0 -41.0 0. -H 23.0 -40.0 0. -H 23.0 -39.0 0. -H 23.0 -38.0 0. -H 23.0 -37.0 0. -H 23.0 -36.0 0. -H 23.0 -35.0 0. -H 23.0 -34.0 0. -H 23.0 -33.0 0. -H 23.0 -32.0 0. -H 23.0 -31.0 0. -H 23.0 -30.0 0. -H 23.0 -29.0 0. -H 23.0 -28.0 0. -H 23.0 -27.0 0. -H 23.0 -26.0 0. -H 23.0 -25.0 0. -H 23.0 -24.0 0. -H 23.0 -23.0 0. -H 23.0 -22.0 0. -H 23.0 -21.0 0. -H 23.0 -20.0 0. -H 23.0 -19.0 0. -H 23.0 -18.0 0. -H 23.0 -17.0 0. -H 23.0 -16.0 0. -H 23.0 -15.0 0. -H 23.0 -14.0 0. -H 23.0 -13.0 0. -H 23.0 -12.0 0. -H 23.0 -11.0 0. -H 23.0 -10.0 0. -H 23.0 -9.0 0. -H 23.0 -8.0 0. -H 23.0 -7.0 0. -H 23.0 -6.0 0. -H 23.0 -5.0 0. -H 23.0 -4.0 0. -H 23.0 -3.0 0. -H 23.0 -2.0 0. -H 23.0 -1.0 0. -H 23.0 0.0 0. -H 23.0 1.0 0. -H 23.0 2.0 0. -H 23.0 3.0 0. -H 23.0 4.0 0. -H 23.0 5.0 0. -H 23.0 6.0 0. -H 23.0 7.0 0. -H 23.0 8.0 0. -H 23.0 9.0 0. -H 23.0 10.0 0. -H 23.0 11.0 0. -H 23.0 12.0 0. -H 23.0 13.0 0. -H 23.0 14.0 0. -H 23.0 15.0 0. -H 23.0 16.0 0. -H 23.0 17.0 0. -H 23.0 18.0 0. -H 23.0 19.0 0. -H 23.0 20.0 0. -H 23.0 21.0 0. -H 23.0 22.0 0. -H 23.0 23.0 0. -H 23.0 24.0 0. -H 23.0 25.0 0. -H 23.0 26.0 0. -H 23.0 27.0 0. -H 23.0 28.0 0. -H 23.0 29.0 0. -H 23.0 30.0 0. -H 23.0 31.0 0. -H 23.0 32.0 0. -H 23.0 33.0 0. -H 23.0 34.0 0. -H 23.0 35.0 0. -H 23.0 36.0 0. -H 23.0 37.0 0. -H 23.0 38.0 0. -H 23.0 39.0 0. -H 23.0 40.0 0. -H 23.0 41.0 0. -H 23.0 42.0 0. -H 23.0 43.0 0. -H 23.0 44.0 0. -H 23.0 45.0 0. -H 23.0 46.0 0. -H 23.0 47.0 0. -H 23.0 48.0 0. -H 23.0 49.0 0. -H 24.0 -49.0 0. -H 24.0 -48.0 0. -H 24.0 -47.0 0. -H 24.0 -46.0 0. -H 24.0 -45.0 0. -H 24.0 -44.0 0. -H 24.0 -43.0 0. -H 24.0 -42.0 0. -H 24.0 -41.0 0. -H 24.0 -40.0 0. -H 24.0 -39.0 0. -H 24.0 -38.0 0. -H 24.0 -37.0 0. -H 24.0 -36.0 0. -H 24.0 -35.0 0. -H 24.0 -34.0 0. -H 24.0 -33.0 0. -H 24.0 -32.0 0. -H 24.0 -31.0 0. -H 24.0 -30.0 0. -H 24.0 -29.0 0. -H 24.0 -28.0 0. -H 24.0 -27.0 0. -H 24.0 -26.0 0. -H 24.0 -25.0 0. -H 24.0 -24.0 0. -H 24.0 -23.0 0. -H 24.0 -22.0 0. -H 24.0 -21.0 0. -H 24.0 -20.0 0. -H 24.0 -19.0 0. -H 24.0 -18.0 0. -H 24.0 -17.0 0. -H 24.0 -16.0 0. -H 24.0 -15.0 0. -H 24.0 -14.0 0. -H 24.0 -13.0 0. -H 24.0 -12.0 0. -H 24.0 -11.0 0. -H 24.0 -10.0 0. -H 24.0 -9.0 0. -H 24.0 -8.0 0. -H 24.0 -7.0 0. -H 24.0 -6.0 0. -H 24.0 -5.0 0. -H 24.0 -4.0 0. -H 24.0 -3.0 0. -H 24.0 -2.0 0. -H 24.0 -1.0 0. -H 24.0 0.0 0. -H 24.0 1.0 0. -H 24.0 2.0 0. -H 24.0 3.0 0. -H 24.0 4.0 0. -H 24.0 5.0 0. -H 24.0 6.0 0. -H 24.0 7.0 0. -H 24.0 8.0 0. -H 24.0 9.0 0. -H 24.0 10.0 0. -H 24.0 11.0 0. -H 24.0 12.0 0. -H 24.0 13.0 0. -H 24.0 14.0 0. -H 24.0 15.0 0. -H 24.0 16.0 0. -H 24.0 17.0 0. -H 24.0 18.0 0. -H 24.0 19.0 0. -H 24.0 20.0 0. -H 24.0 21.0 0. -H 24.0 22.0 0. -H 24.0 23.0 0. -H 24.0 24.0 0. -H 24.0 25.0 0. -H 24.0 26.0 0. -H 24.0 27.0 0. -H 24.0 28.0 0. -H 24.0 29.0 0. -H 24.0 30.0 0. -H 24.0 31.0 0. -H 24.0 32.0 0. -H 24.0 33.0 0. -H 24.0 34.0 0. -H 24.0 35.0 0. -H 24.0 36.0 0. -H 24.0 37.0 0. -H 24.0 38.0 0. -H 24.0 39.0 0. -H 24.0 40.0 0. -H 24.0 41.0 0. -H 24.0 42.0 0. -H 24.0 43.0 0. -H 24.0 44.0 0. -H 24.0 45.0 0. -H 24.0 46.0 0. -H 24.0 47.0 0. -H 24.0 48.0 0. -H 24.0 49.0 0. -H 25.0 -49.0 0. -H 25.0 -48.0 0. -H 25.0 -47.0 0. -H 25.0 -46.0 0. -H 25.0 -45.0 0. -H 25.0 -44.0 0. -H 25.0 -43.0 0. -H 25.0 -42.0 0. -H 25.0 -41.0 0. -H 25.0 -40.0 0. -H 25.0 -39.0 0. -H 25.0 -38.0 0. -H 25.0 -37.0 0. -H 25.0 -36.0 0. -H 25.0 -35.0 0. -H 25.0 -34.0 0. -H 25.0 -33.0 0. -H 25.0 -32.0 0. -H 25.0 -31.0 0. -H 25.0 -30.0 0. -H 25.0 -29.0 0. -H 25.0 -28.0 0. -H 25.0 -27.0 0. -H 25.0 -26.0 0. -H 25.0 -25.0 0. -H 25.0 -24.0 0. -H 25.0 -23.0 0. -H 25.0 -22.0 0. -H 25.0 -21.0 0. -H 25.0 -20.0 0. -H 25.0 -19.0 0. -H 25.0 -18.0 0. -H 25.0 -17.0 0. -H 25.0 -16.0 0. -H 25.0 -15.0 0. -H 25.0 -14.0 0. -H 25.0 -13.0 0. -H 25.0 -12.0 0. -H 25.0 -11.0 0. -H 25.0 -10.0 0. -H 25.0 -9.0 0. -H 25.0 -8.0 0. -H 25.0 -7.0 0. -H 25.0 -6.0 0. -H 25.0 -5.0 0. -H 25.0 -4.0 0. -H 25.0 -3.0 0. -H 25.0 -2.0 0. -H 25.0 -1.0 0. -H 25.0 0.0 0. -H 25.0 1.0 0. -H 25.0 2.0 0. -H 25.0 3.0 0. -H 25.0 4.0 0. -H 25.0 5.0 0. -H 25.0 6.0 0. -H 25.0 7.0 0. -H 25.0 8.0 0. -H 25.0 9.0 0. -H 25.0 10.0 0. -H 25.0 11.0 0. -H 25.0 12.0 0. -H 25.0 13.0 0. -H 25.0 14.0 0. -H 25.0 15.0 0. -H 25.0 16.0 0. -H 25.0 17.0 0. -H 25.0 18.0 0. -H 25.0 19.0 0. -H 25.0 20.0 0. -H 25.0 21.0 0. -H 25.0 22.0 0. -H 25.0 23.0 0. -H 25.0 24.0 0. -H 25.0 25.0 0. -H 25.0 26.0 0. -H 25.0 27.0 0. -H 25.0 28.0 0. -H 25.0 29.0 0. -H 25.0 30.0 0. -H 25.0 31.0 0. -H 25.0 32.0 0. -H 25.0 33.0 0. -H 25.0 34.0 0. -H 25.0 35.0 0. -H 25.0 36.0 0. -H 25.0 37.0 0. -H 25.0 38.0 0. -H 25.0 39.0 0. -H 25.0 40.0 0. -H 25.0 41.0 0. -H 25.0 42.0 0. -H 25.0 43.0 0. -H 25.0 44.0 0. -H 25.0 45.0 0. -H 25.0 46.0 0. -H 25.0 47.0 0. -H 25.0 48.0 0. -H 25.0 49.0 0. -H 26.0 -49.0 0. -H 26.0 -48.0 0. -H 26.0 -47.0 0. -H 26.0 -46.0 0. -H 26.0 -45.0 0. -H 26.0 -44.0 0. -H 26.0 -43.0 0. -H 26.0 -42.0 0. -H 26.0 -41.0 0. -H 26.0 -40.0 0. -H 26.0 -39.0 0. -H 26.0 -38.0 0. -H 26.0 -37.0 0. -H 26.0 -36.0 0. -H 26.0 -35.0 0. -H 26.0 -34.0 0. -H 26.0 -33.0 0. -H 26.0 -32.0 0. -H 26.0 -31.0 0. -H 26.0 -30.0 0. -H 26.0 -29.0 0. -H 26.0 -28.0 0. -H 26.0 -27.0 0. -H 26.0 -26.0 0. -H 26.0 -25.0 0. -H 26.0 -24.0 0. -H 26.0 -23.0 0. -H 26.0 -22.0 0. -H 26.0 -21.0 0. -H 26.0 -20.0 0. -H 26.0 -19.0 0. -H 26.0 -18.0 0. -H 26.0 -17.0 0. -H 26.0 -16.0 0. -H 26.0 -15.0 0. -H 26.0 -14.0 0. -H 26.0 -13.0 0. -H 26.0 -12.0 0. -H 26.0 -11.0 0. -H 26.0 -10.0 0. -H 26.0 -9.0 0. -H 26.0 -8.0 0. -H 26.0 -7.0 0. -H 26.0 -6.0 0. -H 26.0 -5.0 0. -H 26.0 -4.0 0. -H 26.0 -3.0 0. -H 26.0 -2.0 0. -H 26.0 -1.0 0. -H 26.0 0.0 0. -H 26.0 1.0 0. -H 26.0 2.0 0. -H 26.0 3.0 0. -H 26.0 4.0 0. -H 26.0 5.0 0. -H 26.0 6.0 0. -H 26.0 7.0 0. -H 26.0 8.0 0. -H 26.0 9.0 0. -H 26.0 10.0 0. -H 26.0 11.0 0. -H 26.0 12.0 0. -H 26.0 13.0 0. -H 26.0 14.0 0. -H 26.0 15.0 0. -H 26.0 16.0 0. -H 26.0 17.0 0. -H 26.0 18.0 0. -H 26.0 19.0 0. -H 26.0 20.0 0. -H 26.0 21.0 0. -H 26.0 22.0 0. -H 26.0 23.0 0. -H 26.0 24.0 0. -H 26.0 25.0 0. -H 26.0 26.0 0. -H 26.0 27.0 0. -H 26.0 28.0 0. -H 26.0 29.0 0. -H 26.0 30.0 0. -H 26.0 31.0 0. -H 26.0 32.0 0. -H 26.0 33.0 0. -H 26.0 34.0 0. -H 26.0 35.0 0. -H 26.0 36.0 0. -H 26.0 37.0 0. -H 26.0 38.0 0. -H 26.0 39.0 0. -H 26.0 40.0 0. -H 26.0 41.0 0. -H 26.0 42.0 0. -H 26.0 43.0 0. -H 26.0 44.0 0. -H 26.0 45.0 0. -H 26.0 46.0 0. -H 26.0 47.0 0. -H 26.0 48.0 0. -H 26.0 49.0 0. -H 27.0 -49.0 0. -H 27.0 -48.0 0. -H 27.0 -47.0 0. -H 27.0 -46.0 0. -H 27.0 -45.0 0. -H 27.0 -44.0 0. -H 27.0 -43.0 0. -H 27.0 -42.0 0. -H 27.0 -41.0 0. -H 27.0 -40.0 0. -H 27.0 -39.0 0. -H 27.0 -38.0 0. -H 27.0 -37.0 0. -H 27.0 -36.0 0. -H 27.0 -35.0 0. -H 27.0 -34.0 0. -H 27.0 -33.0 0. -H 27.0 -32.0 0. -H 27.0 -31.0 0. -H 27.0 -30.0 0. -H 27.0 -29.0 0. -H 27.0 -28.0 0. -H 27.0 -27.0 0. -H 27.0 -26.0 0. -H 27.0 -25.0 0. -H 27.0 -24.0 0. -H 27.0 -23.0 0. -H 27.0 -22.0 0. -H 27.0 -21.0 0. -H 27.0 -20.0 0. -H 27.0 -19.0 0. -H 27.0 -18.0 0. -H 27.0 -17.0 0. -H 27.0 -16.0 0. -H 27.0 -15.0 0. -H 27.0 -14.0 0. -H 27.0 -13.0 0. -H 27.0 -12.0 0. -H 27.0 -11.0 0. -H 27.0 -10.0 0. -H 27.0 -9.0 0. -H 27.0 -8.0 0. -H 27.0 -7.0 0. -H 27.0 -6.0 0. -H 27.0 -5.0 0. -H 27.0 -4.0 0. -H 27.0 -3.0 0. -H 27.0 -2.0 0. -H 27.0 -1.0 0. -H 27.0 0.0 0. -H 27.0 1.0 0. -H 27.0 2.0 0. -H 27.0 3.0 0. -H 27.0 4.0 0. -H 27.0 5.0 0. -H 27.0 6.0 0. -H 27.0 7.0 0. -H 27.0 8.0 0. -H 27.0 9.0 0. -H 27.0 10.0 0. -H 27.0 11.0 0. -H 27.0 12.0 0. -H 27.0 13.0 0. -H 27.0 14.0 0. -H 27.0 15.0 0. -H 27.0 16.0 0. -H 27.0 17.0 0. -H 27.0 18.0 0. -H 27.0 19.0 0. -H 27.0 20.0 0. -H 27.0 21.0 0. -H 27.0 22.0 0. -H 27.0 23.0 0. -H 27.0 24.0 0. -H 27.0 25.0 0. -H 27.0 26.0 0. -H 27.0 27.0 0. -H 27.0 28.0 0. -H 27.0 29.0 0. -H 27.0 30.0 0. -H 27.0 31.0 0. -H 27.0 32.0 0. -H 27.0 33.0 0. -H 27.0 34.0 0. -H 27.0 35.0 0. -H 27.0 36.0 0. -H 27.0 37.0 0. -H 27.0 38.0 0. -H 27.0 39.0 0. -H 27.0 40.0 0. -H 27.0 41.0 0. -H 27.0 42.0 0. -H 27.0 43.0 0. -H 27.0 44.0 0. -H 27.0 45.0 0. -H 27.0 46.0 0. -H 27.0 47.0 0. -H 27.0 48.0 0. -H 27.0 49.0 0. -H 28.0 -49.0 0. -H 28.0 -48.0 0. -H 28.0 -47.0 0. -H 28.0 -46.0 0. -H 28.0 -45.0 0. -H 28.0 -44.0 0. -H 28.0 -43.0 0. -H 28.0 -42.0 0. -H 28.0 -41.0 0. -H 28.0 -40.0 0. -H 28.0 -39.0 0. -H 28.0 -38.0 0. -H 28.0 -37.0 0. -H 28.0 -36.0 0. -H 28.0 -35.0 0. -H 28.0 -34.0 0. -H 28.0 -33.0 0. -H 28.0 -32.0 0. -H 28.0 -31.0 0. -H 28.0 -30.0 0. -H 28.0 -29.0 0. -H 28.0 -28.0 0. -H 28.0 -27.0 0. -H 28.0 -26.0 0. -H 28.0 -25.0 0. -H 28.0 -24.0 0. -H 28.0 -23.0 0. -H 28.0 -22.0 0. -H 28.0 -21.0 0. -H 28.0 -20.0 0. -H 28.0 -19.0 0. -H 28.0 -18.0 0. -H 28.0 -17.0 0. -H 28.0 -16.0 0. -H 28.0 -15.0 0. -H 28.0 -14.0 0. -H 28.0 -13.0 0. -H 28.0 -12.0 0. -H 28.0 -11.0 0. -H 28.0 -10.0 0. -H 28.0 -9.0 0. -H 28.0 -8.0 0. -H 28.0 -7.0 0. -H 28.0 -6.0 0. -H 28.0 -5.0 0. -H 28.0 -4.0 0. -H 28.0 -3.0 0. -H 28.0 -2.0 0. -H 28.0 -1.0 0. -H 28.0 0.0 0. -H 28.0 1.0 0. -H 28.0 2.0 0. -H 28.0 3.0 0. -H 28.0 4.0 0. -H 28.0 5.0 0. -H 28.0 6.0 0. -H 28.0 7.0 0. -H 28.0 8.0 0. -H 28.0 9.0 0. -H 28.0 10.0 0. -H 28.0 11.0 0. -H 28.0 12.0 0. -H 28.0 13.0 0. -H 28.0 14.0 0. -H 28.0 15.0 0. -H 28.0 16.0 0. -H 28.0 17.0 0. -H 28.0 18.0 0. -H 28.0 19.0 0. -H 28.0 20.0 0. -H 28.0 21.0 0. -H 28.0 22.0 0. -H 28.0 23.0 0. -H 28.0 24.0 0. -H 28.0 25.0 0. -H 28.0 26.0 0. -H 28.0 27.0 0. -H 28.0 28.0 0. -H 28.0 29.0 0. -H 28.0 30.0 0. -H 28.0 31.0 0. -H 28.0 32.0 0. -H 28.0 33.0 0. -H 28.0 34.0 0. -H 28.0 35.0 0. -H 28.0 36.0 0. -H 28.0 37.0 0. -H 28.0 38.0 0. -H 28.0 39.0 0. -H 28.0 40.0 0. -H 28.0 41.0 0. -H 28.0 42.0 0. -H 28.0 43.0 0. -H 28.0 44.0 0. -H 28.0 45.0 0. -H 28.0 46.0 0. -H 28.0 47.0 0. -H 28.0 48.0 0. -H 28.0 49.0 0. -H 29.0 -49.0 0. -H 29.0 -48.0 0. -H 29.0 -47.0 0. -H 29.0 -46.0 0. -H 29.0 -45.0 0. -H 29.0 -44.0 0. -H 29.0 -43.0 0. -H 29.0 -42.0 0. -H 29.0 -41.0 0. -H 29.0 -40.0 0. -H 29.0 -39.0 0. -H 29.0 -38.0 0. -H 29.0 -37.0 0. -H 29.0 -36.0 0. -H 29.0 -35.0 0. -H 29.0 -34.0 0. -H 29.0 -33.0 0. -H 29.0 -32.0 0. -H 29.0 -31.0 0. -H 29.0 -30.0 0. -H 29.0 -29.0 0. -H 29.0 -28.0 0. -H 29.0 -27.0 0. -H 29.0 -26.0 0. -H 29.0 -25.0 0. -H 29.0 -24.0 0. -H 29.0 -23.0 0. -H 29.0 -22.0 0. -H 29.0 -21.0 0. -H 29.0 -20.0 0. -H 29.0 -19.0 0. -H 29.0 -18.0 0. -H 29.0 -17.0 0. -H 29.0 -16.0 0. -H 29.0 -15.0 0. -H 29.0 -14.0 0. -H 29.0 -13.0 0. -H 29.0 -12.0 0. -H 29.0 -11.0 0. -H 29.0 -10.0 0. -H 29.0 -9.0 0. -H 29.0 -8.0 0. -H 29.0 -7.0 0. -H 29.0 -6.0 0. -H 29.0 -5.0 0. -H 29.0 -4.0 0. -H 29.0 -3.0 0. -H 29.0 -2.0 0. -H 29.0 -1.0 0. -H 29.0 0.0 0. -H 29.0 1.0 0. -H 29.0 2.0 0. -H 29.0 3.0 0. -H 29.0 4.0 0. -H 29.0 5.0 0. -H 29.0 6.0 0. -H 29.0 7.0 0. -H 29.0 8.0 0. -H 29.0 9.0 0. -H 29.0 10.0 0. -H 29.0 11.0 0. -H 29.0 12.0 0. -H 29.0 13.0 0. -H 29.0 14.0 0. -H 29.0 15.0 0. -H 29.0 16.0 0. -H 29.0 17.0 0. -H 29.0 18.0 0. -H 29.0 19.0 0. -H 29.0 20.0 0. -H 29.0 21.0 0. -H 29.0 22.0 0. -H 29.0 23.0 0. -H 29.0 24.0 0. -H 29.0 25.0 0. -H 29.0 26.0 0. -H 29.0 27.0 0. -H 29.0 28.0 0. -H 29.0 29.0 0. -H 29.0 30.0 0. -H 29.0 31.0 0. -H 29.0 32.0 0. -H 29.0 33.0 0. -H 29.0 34.0 0. -H 29.0 35.0 0. -H 29.0 36.0 0. -H 29.0 37.0 0. -H 29.0 38.0 0. -H 29.0 39.0 0. -H 29.0 40.0 0. -H 29.0 41.0 0. -H 29.0 42.0 0. -H 29.0 43.0 0. -H 29.0 44.0 0. -H 29.0 45.0 0. -H 29.0 46.0 0. -H 29.0 47.0 0. -H 29.0 48.0 0. -H 29.0 49.0 0. -H 30.0 -49.0 0. -H 30.0 -48.0 0. -H 30.0 -47.0 0. -H 30.0 -46.0 0. -H 30.0 -45.0 0. -H 30.0 -44.0 0. -H 30.0 -43.0 0. -H 30.0 -42.0 0. -H 30.0 -41.0 0. -H 30.0 -40.0 0. -H 30.0 -39.0 0. -H 30.0 -38.0 0. -H 30.0 -37.0 0. -H 30.0 -36.0 0. -H 30.0 -35.0 0. -H 30.0 -34.0 0. -H 30.0 -33.0 0. -H 30.0 -32.0 0. -H 30.0 -31.0 0. -H 30.0 -30.0 0. -H 30.0 -29.0 0. -H 30.0 -28.0 0. -H 30.0 -27.0 0. -H 30.0 -26.0 0. -H 30.0 -25.0 0. -H 30.0 -24.0 0. -H 30.0 -23.0 0. -H 30.0 -22.0 0. -H 30.0 -21.0 0. -H 30.0 -20.0 0. -H 30.0 -19.0 0. -H 30.0 -18.0 0. -H 30.0 -17.0 0. -H 30.0 -16.0 0. -H 30.0 -15.0 0. -H 30.0 -14.0 0. -H 30.0 -13.0 0. -H 30.0 -12.0 0. -H 30.0 -11.0 0. -H 30.0 -10.0 0. -H 30.0 -9.0 0. -H 30.0 -8.0 0. -H 30.0 -7.0 0. -H 30.0 -6.0 0. -H 30.0 -5.0 0. -H 30.0 -4.0 0. -H 30.0 -3.0 0. -H 30.0 -2.0 0. -H 30.0 -1.0 0. -H 30.0 0.0 0. -H 30.0 1.0 0. -H 30.0 2.0 0. -H 30.0 3.0 0. -H 30.0 4.0 0. -H 30.0 5.0 0. -H 30.0 6.0 0. -H 30.0 7.0 0. -H 30.0 8.0 0. -H 30.0 9.0 0. -H 30.0 10.0 0. -H 30.0 11.0 0. -H 30.0 12.0 0. -H 30.0 13.0 0. -H 30.0 14.0 0. -H 30.0 15.0 0. -H 30.0 16.0 0. -H 30.0 17.0 0. -H 30.0 18.0 0. -H 30.0 19.0 0. -H 30.0 20.0 0. -H 30.0 21.0 0. -H 30.0 22.0 0. -H 30.0 23.0 0. -H 30.0 24.0 0. -H 30.0 25.0 0. -H 30.0 26.0 0. -H 30.0 27.0 0. -H 30.0 28.0 0. -H 30.0 29.0 0. -H 30.0 30.0 0. -H 30.0 31.0 0. -H 30.0 32.0 0. -H 30.0 33.0 0. -H 30.0 34.0 0. -H 30.0 35.0 0. -H 30.0 36.0 0. -H 30.0 37.0 0. -H 30.0 38.0 0. -H 30.0 39.0 0. -H 30.0 40.0 0. -H 30.0 41.0 0. -H 30.0 42.0 0. -H 30.0 43.0 0. -H 30.0 44.0 0. -H 30.0 45.0 0. -H 30.0 46.0 0. -H 30.0 47.0 0. -H 30.0 48.0 0. -H 30.0 49.0 0. -H 31.0 -49.0 0. -H 31.0 -48.0 0. -H 31.0 -47.0 0. -H 31.0 -46.0 0. -H 31.0 -45.0 0. -H 31.0 -44.0 0. -H 31.0 -43.0 0. -H 31.0 -42.0 0. -H 31.0 -41.0 0. -H 31.0 -40.0 0. -H 31.0 -39.0 0. -H 31.0 -38.0 0. -H 31.0 -37.0 0. -H 31.0 -36.0 0. -H 31.0 -35.0 0. -H 31.0 -34.0 0. -H 31.0 -33.0 0. -H 31.0 -32.0 0. -H 31.0 -31.0 0. -H 31.0 -30.0 0. -H 31.0 -29.0 0. -H 31.0 -28.0 0. -H 31.0 -27.0 0. -H 31.0 -26.0 0. -H 31.0 -25.0 0. -H 31.0 -24.0 0. -H 31.0 -23.0 0. -H 31.0 -22.0 0. -H 31.0 -21.0 0. -H 31.0 -20.0 0. -H 31.0 -19.0 0. -H 31.0 -18.0 0. -H 31.0 -17.0 0. -H 31.0 -16.0 0. -H 31.0 -15.0 0. -H 31.0 -14.0 0. -H 31.0 -13.0 0. -H 31.0 -12.0 0. -H 31.0 -11.0 0. -H 31.0 -10.0 0. -H 31.0 -9.0 0. -H 31.0 -8.0 0. -H 31.0 -7.0 0. -H 31.0 -6.0 0. -H 31.0 -5.0 0. -H 31.0 -4.0 0. -H 31.0 -3.0 0. -H 31.0 -2.0 0. -H 31.0 -1.0 0. -H 31.0 0.0 0. -H 31.0 1.0 0. -H 31.0 2.0 0. -H 31.0 3.0 0. -H 31.0 4.0 0. -H 31.0 5.0 0. -H 31.0 6.0 0. -H 31.0 7.0 0. -H 31.0 8.0 0. -H 31.0 9.0 0. -H 31.0 10.0 0. -H 31.0 11.0 0. -H 31.0 12.0 0. -H 31.0 13.0 0. -H 31.0 14.0 0. -H 31.0 15.0 0. -H 31.0 16.0 0. -H 31.0 17.0 0. -H 31.0 18.0 0. -H 31.0 19.0 0. -H 31.0 20.0 0. -H 31.0 21.0 0. -H 31.0 22.0 0. -H 31.0 23.0 0. -H 31.0 24.0 0. -H 31.0 25.0 0. -H 31.0 26.0 0. -H 31.0 27.0 0. -H 31.0 28.0 0. -H 31.0 29.0 0. -H 31.0 30.0 0. -H 31.0 31.0 0. -H 31.0 32.0 0. -H 31.0 33.0 0. -H 31.0 34.0 0. -H 31.0 35.0 0. -H 31.0 36.0 0. -H 31.0 37.0 0. -H 31.0 38.0 0. -H 31.0 39.0 0. -H 31.0 40.0 0. -H 31.0 41.0 0. -H 31.0 42.0 0. -H 31.0 43.0 0. -H 31.0 44.0 0. -H 31.0 45.0 0. -H 31.0 46.0 0. -H 31.0 47.0 0. -H 31.0 48.0 0. -H 31.0 49.0 0. -H 32.0 -49.0 0. -H 32.0 -48.0 0. -H 32.0 -47.0 0. -H 32.0 -46.0 0. -H 32.0 -45.0 0. -H 32.0 -44.0 0. -H 32.0 -43.0 0. -H 32.0 -42.0 0. -H 32.0 -41.0 0. -H 32.0 -40.0 0. -H 32.0 -39.0 0. -H 32.0 -38.0 0. -H 32.0 -37.0 0. -H 32.0 -36.0 0. -H 32.0 -35.0 0. -H 32.0 -34.0 0. -H 32.0 -33.0 0. -H 32.0 -32.0 0. -H 32.0 -31.0 0. -H 32.0 -30.0 0. -H 32.0 -29.0 0. -H 32.0 -28.0 0. -H 32.0 -27.0 0. -H 32.0 -26.0 0. -H 32.0 -25.0 0. -H 32.0 -24.0 0. -H 32.0 -23.0 0. -H 32.0 -22.0 0. -H 32.0 -21.0 0. -H 32.0 -20.0 0. -H 32.0 -19.0 0. -H 32.0 -18.0 0. -H 32.0 -17.0 0. -H 32.0 -16.0 0. -H 32.0 -15.0 0. -H 32.0 -14.0 0. -H 32.0 -13.0 0. -H 32.0 -12.0 0. -H 32.0 -11.0 0. -H 32.0 -10.0 0. -H 32.0 -9.0 0. -H 32.0 -8.0 0. -H 32.0 -7.0 0. -H 32.0 -6.0 0. -H 32.0 -5.0 0. -H 32.0 -4.0 0. -H 32.0 -3.0 0. -H 32.0 -2.0 0. -H 32.0 -1.0 0. -H 32.0 0.0 0. -H 32.0 1.0 0. -H 32.0 2.0 0. -H 32.0 3.0 0. -H 32.0 4.0 0. -H 32.0 5.0 0. -H 32.0 6.0 0. -H 32.0 7.0 0. -H 32.0 8.0 0. -H 32.0 9.0 0. -H 32.0 10.0 0. -H 32.0 11.0 0. -H 32.0 12.0 0. -H 32.0 13.0 0. -H 32.0 14.0 0. -H 32.0 15.0 0. -H 32.0 16.0 0. -H 32.0 17.0 0. -H 32.0 18.0 0. -H 32.0 19.0 0. -H 32.0 20.0 0. -H 32.0 21.0 0. -H 32.0 22.0 0. -H 32.0 23.0 0. -H 32.0 24.0 0. -H 32.0 25.0 0. -H 32.0 26.0 0. -H 32.0 27.0 0. -H 32.0 28.0 0. -H 32.0 29.0 0. -H 32.0 30.0 0. -H 32.0 31.0 0. -H 32.0 32.0 0. -H 32.0 33.0 0. -H 32.0 34.0 0. -H 32.0 35.0 0. -H 32.0 36.0 0. -H 32.0 37.0 0. -H 32.0 38.0 0. -H 32.0 39.0 0. -H 32.0 40.0 0. -H 32.0 41.0 0. -H 32.0 42.0 0. -H 32.0 43.0 0. -H 32.0 44.0 0. -H 32.0 45.0 0. -H 32.0 46.0 0. -H 32.0 47.0 0. -H 32.0 48.0 0. -H 32.0 49.0 0. -H 33.0 -49.0 0. -H 33.0 -48.0 0. -H 33.0 -47.0 0. -H 33.0 -46.0 0. -H 33.0 -45.0 0. -H 33.0 -44.0 0. -H 33.0 -43.0 0. -H 33.0 -42.0 0. -H 33.0 -41.0 0. -H 33.0 -40.0 0. -H 33.0 -39.0 0. -H 33.0 -38.0 0. -H 33.0 -37.0 0. -H 33.0 -36.0 0. -H 33.0 -35.0 0. -H 33.0 -34.0 0. -H 33.0 -33.0 0. -H 33.0 -32.0 0. -H 33.0 -31.0 0. -H 33.0 -30.0 0. -H 33.0 -29.0 0. -H 33.0 -28.0 0. -H 33.0 -27.0 0. -H 33.0 -26.0 0. -H 33.0 -25.0 0. -H 33.0 -24.0 0. -H 33.0 -23.0 0. -H 33.0 -22.0 0. -H 33.0 -21.0 0. -H 33.0 -20.0 0. -H 33.0 -19.0 0. -H 33.0 -18.0 0. -H 33.0 -17.0 0. -H 33.0 -16.0 0. -H 33.0 -15.0 0. -H 33.0 -14.0 0. -H 33.0 -13.0 0. -H 33.0 -12.0 0. -H 33.0 -11.0 0. -H 33.0 -10.0 0. -H 33.0 -9.0 0. -H 33.0 -8.0 0. -H 33.0 -7.0 0. -H 33.0 -6.0 0. -H 33.0 -5.0 0. -H 33.0 -4.0 0. -H 33.0 -3.0 0. -H 33.0 -2.0 0. -H 33.0 -1.0 0. -H 33.0 0.0 0. -H 33.0 1.0 0. -H 33.0 2.0 0. -H 33.0 3.0 0. -H 33.0 4.0 0. -H 33.0 5.0 0. -H 33.0 6.0 0. -H 33.0 7.0 0. -H 33.0 8.0 0. -H 33.0 9.0 0. -H 33.0 10.0 0. -H 33.0 11.0 0. -H 33.0 12.0 0. -H 33.0 13.0 0. -H 33.0 14.0 0. -H 33.0 15.0 0. -H 33.0 16.0 0. -H 33.0 17.0 0. -H 33.0 18.0 0. -H 33.0 19.0 0. -H 33.0 20.0 0. -H 33.0 21.0 0. -H 33.0 22.0 0. -H 33.0 23.0 0. -H 33.0 24.0 0. -H 33.0 25.0 0. -H 33.0 26.0 0. -H 33.0 27.0 0. -H 33.0 28.0 0. -H 33.0 29.0 0. -H 33.0 30.0 0. -H 33.0 31.0 0. -H 33.0 32.0 0. -H 33.0 33.0 0. -H 33.0 34.0 0. -H 33.0 35.0 0. -H 33.0 36.0 0. -H 33.0 37.0 0. -H 33.0 38.0 0. -H 33.0 39.0 0. -H 33.0 40.0 0. -H 33.0 41.0 0. -H 33.0 42.0 0. -H 33.0 43.0 0. -H 33.0 44.0 0. -H 33.0 45.0 0. -H 33.0 46.0 0. -H 33.0 47.0 0. -H 33.0 48.0 0. -H 33.0 49.0 0. -H 34.0 -49.0 0. -H 34.0 -48.0 0. -H 34.0 -47.0 0. -H 34.0 -46.0 0. -H 34.0 -45.0 0. -H 34.0 -44.0 0. -H 34.0 -43.0 0. -H 34.0 -42.0 0. -H 34.0 -41.0 0. -H 34.0 -40.0 0. -H 34.0 -39.0 0. -H 34.0 -38.0 0. -H 34.0 -37.0 0. -H 34.0 -36.0 0. -H 34.0 -35.0 0. -H 34.0 -34.0 0. -H 34.0 -33.0 0. -H 34.0 -32.0 0. -H 34.0 -31.0 0. -H 34.0 -30.0 0. -H 34.0 -29.0 0. -H 34.0 -28.0 0. -H 34.0 -27.0 0. -H 34.0 -26.0 0. -H 34.0 -25.0 0. -H 34.0 -24.0 0. -H 34.0 -23.0 0. -H 34.0 -22.0 0. -H 34.0 -21.0 0. -H 34.0 -20.0 0. -H 34.0 -19.0 0. -H 34.0 -18.0 0. -H 34.0 -17.0 0. -H 34.0 -16.0 0. -H 34.0 -15.0 0. -H 34.0 -14.0 0. -H 34.0 -13.0 0. -H 34.0 -12.0 0. -H 34.0 -11.0 0. -H 34.0 -10.0 0. -H 34.0 -9.0 0. -H 34.0 -8.0 0. -H 34.0 -7.0 0. -H 34.0 -6.0 0. -H 34.0 -5.0 0. -H 34.0 -4.0 0. -H 34.0 -3.0 0. -H 34.0 -2.0 0. -H 34.0 -1.0 0. -H 34.0 0.0 0. -H 34.0 1.0 0. -H 34.0 2.0 0. -H 34.0 3.0 0. -H 34.0 4.0 0. -H 34.0 5.0 0. -H 34.0 6.0 0. -H 34.0 7.0 0. -H 34.0 8.0 0. -H 34.0 9.0 0. -H 34.0 10.0 0. -H 34.0 11.0 0. -H 34.0 12.0 0. -H 34.0 13.0 0. -H 34.0 14.0 0. -H 34.0 15.0 0. -H 34.0 16.0 0. -H 34.0 17.0 0. -H 34.0 18.0 0. -H 34.0 19.0 0. -H 34.0 20.0 0. -H 34.0 21.0 0. -H 34.0 22.0 0. -H 34.0 23.0 0. -H 34.0 24.0 0. -H 34.0 25.0 0. -H 34.0 26.0 0. -H 34.0 27.0 0. -H 34.0 28.0 0. -H 34.0 29.0 0. -H 34.0 30.0 0. -H 34.0 31.0 0. -H 34.0 32.0 0. -H 34.0 33.0 0. -H 34.0 34.0 0. -H 34.0 35.0 0. -H 34.0 36.0 0. -H 34.0 37.0 0. -H 34.0 38.0 0. -H 34.0 39.0 0. -H 34.0 40.0 0. -H 34.0 41.0 0. -H 34.0 42.0 0. -H 34.0 43.0 0. -H 34.0 44.0 0. -H 34.0 45.0 0. -H 34.0 46.0 0. -H 34.0 47.0 0. -H 34.0 48.0 0. -H 34.0 49.0 0. -H 35.0 -49.0 0. -H 35.0 -48.0 0. -H 35.0 -47.0 0. -H 35.0 -46.0 0. -H 35.0 -45.0 0. -H 35.0 -44.0 0. -H 35.0 -43.0 0. -H 35.0 -42.0 0. -H 35.0 -41.0 0. -H 35.0 -40.0 0. -H 35.0 -39.0 0. -H 35.0 -38.0 0. -H 35.0 -37.0 0. -H 35.0 -36.0 0. -H 35.0 -35.0 0. -H 35.0 -34.0 0. -H 35.0 -33.0 0. -H 35.0 -32.0 0. -H 35.0 -31.0 0. -H 35.0 -30.0 0. -H 35.0 -29.0 0. -H 35.0 -28.0 0. -H 35.0 -27.0 0. -H 35.0 -26.0 0. -H 35.0 -25.0 0. -H 35.0 -24.0 0. -H 35.0 -23.0 0. -H 35.0 -22.0 0. -H 35.0 -21.0 0. -H 35.0 -20.0 0. -H 35.0 -19.0 0. -H 35.0 -18.0 0. -H 35.0 -17.0 0. -H 35.0 -16.0 0. -H 35.0 -15.0 0. -H 35.0 -14.0 0. -H 35.0 -13.0 0. -H 35.0 -12.0 0. -H 35.0 -11.0 0. -H 35.0 -10.0 0. -H 35.0 -9.0 0. -H 35.0 -8.0 0. -H 35.0 -7.0 0. -H 35.0 -6.0 0. -H 35.0 -5.0 0. -H 35.0 -4.0 0. -H 35.0 -3.0 0. -H 35.0 -2.0 0. -H 35.0 -1.0 0. -H 35.0 0.0 0. -H 35.0 1.0 0. -H 35.0 2.0 0. -H 35.0 3.0 0. -H 35.0 4.0 0. -H 35.0 5.0 0. -H 35.0 6.0 0. -H 35.0 7.0 0. -H 35.0 8.0 0. -H 35.0 9.0 0. -H 35.0 10.0 0. -H 35.0 11.0 0. -H 35.0 12.0 0. -H 35.0 13.0 0. -H 35.0 14.0 0. -H 35.0 15.0 0. -H 35.0 16.0 0. -H 35.0 17.0 0. -H 35.0 18.0 0. -H 35.0 19.0 0. -H 35.0 20.0 0. -H 35.0 21.0 0. -H 35.0 22.0 0. -H 35.0 23.0 0. -H 35.0 24.0 0. -H 35.0 25.0 0. -H 35.0 26.0 0. -H 35.0 27.0 0. -H 35.0 28.0 0. -H 35.0 29.0 0. -H 35.0 30.0 0. -H 35.0 31.0 0. -H 35.0 32.0 0. -H 35.0 33.0 0. -H 35.0 34.0 0. -H 35.0 35.0 0. -H 35.0 36.0 0. -H 35.0 37.0 0. -H 35.0 38.0 0. -H 35.0 39.0 0. -H 35.0 40.0 0. -H 35.0 41.0 0. -H 35.0 42.0 0. -H 35.0 43.0 0. -H 35.0 44.0 0. -H 35.0 45.0 0. -H 35.0 46.0 0. -H 35.0 47.0 0. -H 35.0 48.0 0. -H 35.0 49.0 0. -H 36.0 -49.0 0. -H 36.0 -48.0 0. -H 36.0 -47.0 0. -H 36.0 -46.0 0. -H 36.0 -45.0 0. -H 36.0 -44.0 0. -H 36.0 -43.0 0. -H 36.0 -42.0 0. -H 36.0 -41.0 0. -H 36.0 -40.0 0. -H 36.0 -39.0 0. -H 36.0 -38.0 0. -H 36.0 -37.0 0. -H 36.0 -36.0 0. -H 36.0 -35.0 0. -H 36.0 -34.0 0. -H 36.0 -33.0 0. -H 36.0 -32.0 0. -H 36.0 -31.0 0. -H 36.0 -30.0 0. -H 36.0 -29.0 0. -H 36.0 -28.0 0. -H 36.0 -27.0 0. -H 36.0 -26.0 0. -H 36.0 -25.0 0. -H 36.0 -24.0 0. -H 36.0 -23.0 0. -H 36.0 -22.0 0. -H 36.0 -21.0 0. -H 36.0 -20.0 0. -H 36.0 -19.0 0. -H 36.0 -18.0 0. -H 36.0 -17.0 0. -H 36.0 -16.0 0. -H 36.0 -15.0 0. -H 36.0 -14.0 0. -H 36.0 -13.0 0. -H 36.0 -12.0 0. -H 36.0 -11.0 0. -H 36.0 -10.0 0. -H 36.0 -9.0 0. -H 36.0 -8.0 0. -H 36.0 -7.0 0. -H 36.0 -6.0 0. -H 36.0 -5.0 0. -H 36.0 -4.0 0. -H 36.0 -3.0 0. -H 36.0 -2.0 0. -H 36.0 -1.0 0. -H 36.0 0.0 0. -H 36.0 1.0 0. -H 36.0 2.0 0. -H 36.0 3.0 0. -H 36.0 4.0 0. -H 36.0 5.0 0. -H 36.0 6.0 0. -H 36.0 7.0 0. -H 36.0 8.0 0. -H 36.0 9.0 0. -H 36.0 10.0 0. -H 36.0 11.0 0. -H 36.0 12.0 0. -H 36.0 13.0 0. -H 36.0 14.0 0. -H 36.0 15.0 0. -H 36.0 16.0 0. -H 36.0 17.0 0. -H 36.0 18.0 0. -H 36.0 19.0 0. -H 36.0 20.0 0. -H 36.0 21.0 0. -H 36.0 22.0 0. -H 36.0 23.0 0. -H 36.0 24.0 0. -H 36.0 25.0 0. -H 36.0 26.0 0. -H 36.0 27.0 0. -H 36.0 28.0 0. -H 36.0 29.0 0. -H 36.0 30.0 0. -H 36.0 31.0 0. -H 36.0 32.0 0. -H 36.0 33.0 0. -H 36.0 34.0 0. -H 36.0 35.0 0. -H 36.0 36.0 0. -H 36.0 37.0 0. -H 36.0 38.0 0. -H 36.0 39.0 0. -H 36.0 40.0 0. -H 36.0 41.0 0. -H 36.0 42.0 0. -H 36.0 43.0 0. -H 36.0 44.0 0. -H 36.0 45.0 0. -H 36.0 46.0 0. -H 36.0 47.0 0. -H 36.0 48.0 0. -H 36.0 49.0 0. -H 37.0 -49.0 0. -H 37.0 -48.0 0. -H 37.0 -47.0 0. -H 37.0 -46.0 0. -H 37.0 -45.0 0. -H 37.0 -44.0 0. -H 37.0 -43.0 0. -H 37.0 -42.0 0. -H 37.0 -41.0 0. -H 37.0 -40.0 0. -H 37.0 -39.0 0. -H 37.0 -38.0 0. -H 37.0 -37.0 0. -H 37.0 -36.0 0. -H 37.0 -35.0 0. -H 37.0 -34.0 0. -H 37.0 -33.0 0. -H 37.0 -32.0 0. -H 37.0 -31.0 0. -H 37.0 -30.0 0. -H 37.0 -29.0 0. -H 37.0 -28.0 0. -H 37.0 -27.0 0. -H 37.0 -26.0 0. -H 37.0 -25.0 0. -H 37.0 -24.0 0. -H 37.0 -23.0 0. -H 37.0 -22.0 0. -H 37.0 -21.0 0. -H 37.0 -20.0 0. -H 37.0 -19.0 0. -H 37.0 -18.0 0. -H 37.0 -17.0 0. -H 37.0 -16.0 0. -H 37.0 -15.0 0. -H 37.0 -14.0 0. -H 37.0 -13.0 0. -H 37.0 -12.0 0. -H 37.0 -11.0 0. -H 37.0 -10.0 0. -H 37.0 -9.0 0. -H 37.0 -8.0 0. -H 37.0 -7.0 0. -H 37.0 -6.0 0. -H 37.0 -5.0 0. -H 37.0 -4.0 0. -H 37.0 -3.0 0. -H 37.0 -2.0 0. -H 37.0 -1.0 0. -H 37.0 0.0 0. -H 37.0 1.0 0. -H 37.0 2.0 0. -H 37.0 3.0 0. -H 37.0 4.0 0. -H 37.0 5.0 0. -H 37.0 6.0 0. -H 37.0 7.0 0. -H 37.0 8.0 0. -H 37.0 9.0 0. -H 37.0 10.0 0. -H 37.0 11.0 0. -H 37.0 12.0 0. -H 37.0 13.0 0. -H 37.0 14.0 0. -H 37.0 15.0 0. -H 37.0 16.0 0. -H 37.0 17.0 0. -H 37.0 18.0 0. -H 37.0 19.0 0. -H 37.0 20.0 0. -H 37.0 21.0 0. -H 37.0 22.0 0. -H 37.0 23.0 0. -H 37.0 24.0 0. -H 37.0 25.0 0. -H 37.0 26.0 0. -H 37.0 27.0 0. -H 37.0 28.0 0. -H 37.0 29.0 0. -H 37.0 30.0 0. -H 37.0 31.0 0. -H 37.0 32.0 0. -H 37.0 33.0 0. -H 37.0 34.0 0. -H 37.0 35.0 0. -H 37.0 36.0 0. -H 37.0 37.0 0. -H 37.0 38.0 0. -H 37.0 39.0 0. -H 37.0 40.0 0. -H 37.0 41.0 0. -H 37.0 42.0 0. -H 37.0 43.0 0. -H 37.0 44.0 0. -H 37.0 45.0 0. -H 37.0 46.0 0. -H 37.0 47.0 0. -H 37.0 48.0 0. -H 37.0 49.0 0. -H 38.0 -49.0 0. -H 38.0 -48.0 0. -H 38.0 -47.0 0. -H 38.0 -46.0 0. -H 38.0 -45.0 0. -H 38.0 -44.0 0. -H 38.0 -43.0 0. -H 38.0 -42.0 0. -H 38.0 -41.0 0. -H 38.0 -40.0 0. -H 38.0 -39.0 0. -H 38.0 -38.0 0. -H 38.0 -37.0 0. -H 38.0 -36.0 0. -H 38.0 -35.0 0. -H 38.0 -34.0 0. -H 38.0 -33.0 0. -H 38.0 -32.0 0. -H 38.0 -31.0 0. -H 38.0 -30.0 0. -H 38.0 -29.0 0. -H 38.0 -28.0 0. -H 38.0 -27.0 0. -H 38.0 -26.0 0. -H 38.0 -25.0 0. -H 38.0 -24.0 0. -H 38.0 -23.0 0. -H 38.0 -22.0 0. -H 38.0 -21.0 0. -H 38.0 -20.0 0. -H 38.0 -19.0 0. -H 38.0 -18.0 0. -H 38.0 -17.0 0. -H 38.0 -16.0 0. -H 38.0 -15.0 0. -H 38.0 -14.0 0. -H 38.0 -13.0 0. -H 38.0 -12.0 0. -H 38.0 -11.0 0. -H 38.0 -10.0 0. -H 38.0 -9.0 0. -H 38.0 -8.0 0. -H 38.0 -7.0 0. -H 38.0 -6.0 0. -H 38.0 -5.0 0. -H 38.0 -4.0 0. -H 38.0 -3.0 0. -H 38.0 -2.0 0. -H 38.0 -1.0 0. -H 38.0 0.0 0. -H 38.0 1.0 0. -H 38.0 2.0 0. -H 38.0 3.0 0. -H 38.0 4.0 0. -H 38.0 5.0 0. -H 38.0 6.0 0. -H 38.0 7.0 0. -H 38.0 8.0 0. -H 38.0 9.0 0. -H 38.0 10.0 0. -H 38.0 11.0 0. -H 38.0 12.0 0. -H 38.0 13.0 0. -H 38.0 14.0 0. -H 38.0 15.0 0. -H 38.0 16.0 0. -H 38.0 17.0 0. -H 38.0 18.0 0. -H 38.0 19.0 0. -H 38.0 20.0 0. -H 38.0 21.0 0. -H 38.0 22.0 0. -H 38.0 23.0 0. -H 38.0 24.0 0. -H 38.0 25.0 0. -H 38.0 26.0 0. -H 38.0 27.0 0. -H 38.0 28.0 0. -H 38.0 29.0 0. -H 38.0 30.0 0. -H 38.0 31.0 0. -H 38.0 32.0 0. -H 38.0 33.0 0. -H 38.0 34.0 0. -H 38.0 35.0 0. -H 38.0 36.0 0. -H 38.0 37.0 0. -H 38.0 38.0 0. -H 38.0 39.0 0. -H 38.0 40.0 0. -H 38.0 41.0 0. -H 38.0 42.0 0. -H 38.0 43.0 0. -H 38.0 44.0 0. -H 38.0 45.0 0. -H 38.0 46.0 0. -H 38.0 47.0 0. -H 38.0 48.0 0. -H 38.0 49.0 0. -H 39.0 -49.0 0. -H 39.0 -48.0 0. -H 39.0 -47.0 0. -H 39.0 -46.0 0. -H 39.0 -45.0 0. -H 39.0 -44.0 0. -H 39.0 -43.0 0. -H 39.0 -42.0 0. -H 39.0 -41.0 0. -H 39.0 -40.0 0. -H 39.0 -39.0 0. -H 39.0 -38.0 0. -H 39.0 -37.0 0. -H 39.0 -36.0 0. -H 39.0 -35.0 0. -H 39.0 -34.0 0. -H 39.0 -33.0 0. -H 39.0 -32.0 0. -H 39.0 -31.0 0. -H 39.0 -30.0 0. -H 39.0 -29.0 0. -H 39.0 -28.0 0. -H 39.0 -27.0 0. -H 39.0 -26.0 0. -H 39.0 -25.0 0. -H 39.0 -24.0 0. -H 39.0 -23.0 0. -H 39.0 -22.0 0. -H 39.0 -21.0 0. -H 39.0 -20.0 0. -H 39.0 -19.0 0. -H 39.0 -18.0 0. -H 39.0 -17.0 0. -H 39.0 -16.0 0. -H 39.0 -15.0 0. -H 39.0 -14.0 0. -H 39.0 -13.0 0. -H 39.0 -12.0 0. -H 39.0 -11.0 0. -H 39.0 -10.0 0. -H 39.0 -9.0 0. -H 39.0 -8.0 0. -H 39.0 -7.0 0. -H 39.0 -6.0 0. -H 39.0 -5.0 0. -H 39.0 -4.0 0. -H 39.0 -3.0 0. -H 39.0 -2.0 0. -H 39.0 -1.0 0. -H 39.0 0.0 0. -H 39.0 1.0 0. -H 39.0 2.0 0. -H 39.0 3.0 0. -H 39.0 4.0 0. -H 39.0 5.0 0. -H 39.0 6.0 0. -H 39.0 7.0 0. -H 39.0 8.0 0. -H 39.0 9.0 0. -H 39.0 10.0 0. -H 39.0 11.0 0. -H 39.0 12.0 0. -H 39.0 13.0 0. -H 39.0 14.0 0. -H 39.0 15.0 0. -H 39.0 16.0 0. -H 39.0 17.0 0. -H 39.0 18.0 0. -H 39.0 19.0 0. -H 39.0 20.0 0. -H 39.0 21.0 0. -H 39.0 22.0 0. -H 39.0 23.0 0. -H 39.0 24.0 0. -H 39.0 25.0 0. -H 39.0 26.0 0. -H 39.0 27.0 0. -H 39.0 28.0 0. -H 39.0 29.0 0. -H 39.0 30.0 0. -H 39.0 31.0 0. -H 39.0 32.0 0. -H 39.0 33.0 0. -H 39.0 34.0 0. -H 39.0 35.0 0. -H 39.0 36.0 0. -H 39.0 37.0 0. -H 39.0 38.0 0. -H 39.0 39.0 0. -H 39.0 40.0 0. -H 39.0 41.0 0. -H 39.0 42.0 0. -H 39.0 43.0 0. -H 39.0 44.0 0. -H 39.0 45.0 0. -H 39.0 46.0 0. -H 39.0 47.0 0. -H 39.0 48.0 0. -H 39.0 49.0 0. -H 40.0 -49.0 0. -H 40.0 -48.0 0. -H 40.0 -47.0 0. -H 40.0 -46.0 0. -H 40.0 -45.0 0. -H 40.0 -44.0 0. -H 40.0 -43.0 0. -H 40.0 -42.0 0. -H 40.0 -41.0 0. -H 40.0 -40.0 0. -H 40.0 -39.0 0. -H 40.0 -38.0 0. -H 40.0 -37.0 0. -H 40.0 -36.0 0. -H 40.0 -35.0 0. -H 40.0 -34.0 0. -H 40.0 -33.0 0. -H 40.0 -32.0 0. -H 40.0 -31.0 0. -H 40.0 -30.0 0. -H 40.0 -29.0 0. -H 40.0 -28.0 0. -H 40.0 -27.0 0. -H 40.0 -26.0 0. -H 40.0 -25.0 0. -H 40.0 -24.0 0. -H 40.0 -23.0 0. -H 40.0 -22.0 0. -H 40.0 -21.0 0. -H 40.0 -20.0 0. -H 40.0 -19.0 0. -H 40.0 -18.0 0. -H 40.0 -17.0 0. -H 40.0 -16.0 0. -H 40.0 -15.0 0. -H 40.0 -14.0 0. -H 40.0 -13.0 0. -H 40.0 -12.0 0. -H 40.0 -11.0 0. -H 40.0 -10.0 0. -H 40.0 -9.0 0. -H 40.0 -8.0 0. -H 40.0 -7.0 0. -H 40.0 -6.0 0. -H 40.0 -5.0 0. -H 40.0 -4.0 0. -H 40.0 -3.0 0. -H 40.0 -2.0 0. -H 40.0 -1.0 0. -H 40.0 0.0 0. -H 40.0 1.0 0. -H 40.0 2.0 0. -H 40.0 3.0 0. -H 40.0 4.0 0. -H 40.0 5.0 0. -H 40.0 6.0 0. -H 40.0 7.0 0. -H 40.0 8.0 0. -H 40.0 9.0 0. -H 40.0 10.0 0. -H 40.0 11.0 0. -H 40.0 12.0 0. -H 40.0 13.0 0. -H 40.0 14.0 0. -H 40.0 15.0 0. -H 40.0 16.0 0. -H 40.0 17.0 0. -H 40.0 18.0 0. -H 40.0 19.0 0. -H 40.0 20.0 0. -H 40.0 21.0 0. -H 40.0 22.0 0. -H 40.0 23.0 0. -H 40.0 24.0 0. -H 40.0 25.0 0. -H 40.0 26.0 0. -H 40.0 27.0 0. -H 40.0 28.0 0. -H 40.0 29.0 0. -H 40.0 30.0 0. -H 40.0 31.0 0. -H 40.0 32.0 0. -H 40.0 33.0 0. -H 40.0 34.0 0. -H 40.0 35.0 0. -H 40.0 36.0 0. -H 40.0 37.0 0. -H 40.0 38.0 0. -H 40.0 39.0 0. -H 40.0 40.0 0. -H 40.0 41.0 0. -H 40.0 42.0 0. -H 40.0 43.0 0. -H 40.0 44.0 0. -H 40.0 45.0 0. -H 40.0 46.0 0. -H 40.0 47.0 0. -H 40.0 48.0 0. -H 40.0 49.0 0. -H 41.0 -49.0 0. -H 41.0 -48.0 0. -H 41.0 -47.0 0. -H 41.0 -46.0 0. -H 41.0 -45.0 0. -H 41.0 -44.0 0. -H 41.0 -43.0 0. -H 41.0 -42.0 0. -H 41.0 -41.0 0. -H 41.0 -40.0 0. -H 41.0 -39.0 0. -H 41.0 -38.0 0. -H 41.0 -37.0 0. -H 41.0 -36.0 0. -H 41.0 -35.0 0. -H 41.0 -34.0 0. -H 41.0 -33.0 0. -H 41.0 -32.0 0. -H 41.0 -31.0 0. -H 41.0 -30.0 0. -H 41.0 -29.0 0. -H 41.0 -28.0 0. -H 41.0 -27.0 0. -H 41.0 -26.0 0. -H 41.0 -25.0 0. -H 41.0 -24.0 0. -H 41.0 -23.0 0. -H 41.0 -22.0 0. -H 41.0 -21.0 0. -H 41.0 -20.0 0. -H 41.0 -19.0 0. -H 41.0 -18.0 0. -H 41.0 -17.0 0. -H 41.0 -16.0 0. -H 41.0 -15.0 0. -H 41.0 -14.0 0. -H 41.0 -13.0 0. -H 41.0 -12.0 0. -H 41.0 -11.0 0. -H 41.0 -10.0 0. -H 41.0 -9.0 0. -H 41.0 -8.0 0. -H 41.0 -7.0 0. -H 41.0 -6.0 0. -H 41.0 -5.0 0. -H 41.0 -4.0 0. -H 41.0 -3.0 0. -H 41.0 -2.0 0. -H 41.0 -1.0 0. -H 41.0 0.0 0. -H 41.0 1.0 0. -H 41.0 2.0 0. -H 41.0 3.0 0. -H 41.0 4.0 0. -H 41.0 5.0 0. -H 41.0 6.0 0. -H 41.0 7.0 0. -H 41.0 8.0 0. -H 41.0 9.0 0. -H 41.0 10.0 0. -H 41.0 11.0 0. -H 41.0 12.0 0. -H 41.0 13.0 0. -H 41.0 14.0 0. -H 41.0 15.0 0. -H 41.0 16.0 0. -H 41.0 17.0 0. -H 41.0 18.0 0. -H 41.0 19.0 0. -H 41.0 20.0 0. -H 41.0 21.0 0. -H 41.0 22.0 0. -H 41.0 23.0 0. -H 41.0 24.0 0. -H 41.0 25.0 0. -H 41.0 26.0 0. -H 41.0 27.0 0. -H 41.0 28.0 0. -H 41.0 29.0 0. -H 41.0 30.0 0. -H 41.0 31.0 0. -H 41.0 32.0 0. -H 41.0 33.0 0. -H 41.0 34.0 0. -H 41.0 35.0 0. -H 41.0 36.0 0. -H 41.0 37.0 0. -H 41.0 38.0 0. -H 41.0 39.0 0. -H 41.0 40.0 0. -H 41.0 41.0 0. -H 41.0 42.0 0. -H 41.0 43.0 0. -H 41.0 44.0 0. -H 41.0 45.0 0. -H 41.0 46.0 0. -H 41.0 47.0 0. -H 41.0 48.0 0. -H 41.0 49.0 0. -H 42.0 -49.0 0. -H 42.0 -48.0 0. -H 42.0 -47.0 0. -H 42.0 -46.0 0. -H 42.0 -45.0 0. -H 42.0 -44.0 0. -H 42.0 -43.0 0. -H 42.0 -42.0 0. -H 42.0 -41.0 0. -H 42.0 -40.0 0. -H 42.0 -39.0 0. -H 42.0 -38.0 0. -H 42.0 -37.0 0. -H 42.0 -36.0 0. -H 42.0 -35.0 0. -H 42.0 -34.0 0. -H 42.0 -33.0 0. -H 42.0 -32.0 0. -H 42.0 -31.0 0. -H 42.0 -30.0 0. -H 42.0 -29.0 0. -H 42.0 -28.0 0. -H 42.0 -27.0 0. -H 42.0 -26.0 0. -H 42.0 -25.0 0. -H 42.0 -24.0 0. -H 42.0 -23.0 0. -H 42.0 -22.0 0. -H 42.0 -21.0 0. -H 42.0 -20.0 0. -H 42.0 -19.0 0. -H 42.0 -18.0 0. -H 42.0 -17.0 0. -H 42.0 -16.0 0. -H 42.0 -15.0 0. -H 42.0 -14.0 0. -H 42.0 -13.0 0. -H 42.0 -12.0 0. -H 42.0 -11.0 0. -H 42.0 -10.0 0. -H 42.0 -9.0 0. -H 42.0 -8.0 0. -H 42.0 -7.0 0. -H 42.0 -6.0 0. -H 42.0 -5.0 0. -H 42.0 -4.0 0. -H 42.0 -3.0 0. -H 42.0 -2.0 0. -H 42.0 -1.0 0. -H 42.0 0.0 0. -H 42.0 1.0 0. -H 42.0 2.0 0. -H 42.0 3.0 0. -H 42.0 4.0 0. -H 42.0 5.0 0. -H 42.0 6.0 0. -H 42.0 7.0 0. -H 42.0 8.0 0. -H 42.0 9.0 0. -H 42.0 10.0 0. -H 42.0 11.0 0. -H 42.0 12.0 0. -H 42.0 13.0 0. -H 42.0 14.0 0. -H 42.0 15.0 0. -H 42.0 16.0 0. -H 42.0 17.0 0. -H 42.0 18.0 0. -H 42.0 19.0 0. -H 42.0 20.0 0. -H 42.0 21.0 0. -H 42.0 22.0 0. -H 42.0 23.0 0. -H 42.0 24.0 0. -H 42.0 25.0 0. -H 42.0 26.0 0. -H 42.0 27.0 0. -H 42.0 28.0 0. -H 42.0 29.0 0. -H 42.0 30.0 0. -H 42.0 31.0 0. -H 42.0 32.0 0. -H 42.0 33.0 0. -H 42.0 34.0 0. -H 42.0 35.0 0. -H 42.0 36.0 0. -H 42.0 37.0 0. -H 42.0 38.0 0. -H 42.0 39.0 0. -H 42.0 40.0 0. -H 42.0 41.0 0. -H 42.0 42.0 0. -H 42.0 43.0 0. -H 42.0 44.0 0. -H 42.0 45.0 0. -H 42.0 46.0 0. -H 42.0 47.0 0. -H 42.0 48.0 0. -H 42.0 49.0 0. -H 43.0 -49.0 0. -H 43.0 -48.0 0. -H 43.0 -47.0 0. -H 43.0 -46.0 0. -H 43.0 -45.0 0. -H 43.0 -44.0 0. -H 43.0 -43.0 0. -H 43.0 -42.0 0. -H 43.0 -41.0 0. -H 43.0 -40.0 0. -H 43.0 -39.0 0. -H 43.0 -38.0 0. -H 43.0 -37.0 0. -H 43.0 -36.0 0. -H 43.0 -35.0 0. -H 43.0 -34.0 0. -H 43.0 -33.0 0. -H 43.0 -32.0 0. -H 43.0 -31.0 0. -H 43.0 -30.0 0. -H 43.0 -29.0 0. -H 43.0 -28.0 0. -H 43.0 -27.0 0. -H 43.0 -26.0 0. -H 43.0 -25.0 0. -H 43.0 -24.0 0. -H 43.0 -23.0 0. -H 43.0 -22.0 0. -H 43.0 -21.0 0. -H 43.0 -20.0 0. -H 43.0 -19.0 0. -H 43.0 -18.0 0. -H 43.0 -17.0 0. -H 43.0 -16.0 0. -H 43.0 -15.0 0. -H 43.0 -14.0 0. -H 43.0 -13.0 0. -H 43.0 -12.0 0. -H 43.0 -11.0 0. -H 43.0 -10.0 0. -H 43.0 -9.0 0. -H 43.0 -8.0 0. -H 43.0 -7.0 0. -H 43.0 -6.0 0. -H 43.0 -5.0 0. -H 43.0 -4.0 0. -H 43.0 -3.0 0. -H 43.0 -2.0 0. -H 43.0 -1.0 0. -H 43.0 0.0 0. -H 43.0 1.0 0. -H 43.0 2.0 0. -H 43.0 3.0 0. -H 43.0 4.0 0. -H 43.0 5.0 0. -H 43.0 6.0 0. -H 43.0 7.0 0. -H 43.0 8.0 0. -H 43.0 9.0 0. -H 43.0 10.0 0. -H 43.0 11.0 0. -H 43.0 12.0 0. -H 43.0 13.0 0. -H 43.0 14.0 0. -H 43.0 15.0 0. -H 43.0 16.0 0. -H 43.0 17.0 0. -H 43.0 18.0 0. -H 43.0 19.0 0. -H 43.0 20.0 0. -H 43.0 21.0 0. -H 43.0 22.0 0. -H 43.0 23.0 0. -H 43.0 24.0 0. -H 43.0 25.0 0. -H 43.0 26.0 0. -H 43.0 27.0 0. -H 43.0 28.0 0. -H 43.0 29.0 0. -H 43.0 30.0 0. -H 43.0 31.0 0. -H 43.0 32.0 0. -H 43.0 33.0 0. -H 43.0 34.0 0. -H 43.0 35.0 0. -H 43.0 36.0 0. -H 43.0 37.0 0. -H 43.0 38.0 0. -H 43.0 39.0 0. -H 43.0 40.0 0. -H 43.0 41.0 0. -H 43.0 42.0 0. -H 43.0 43.0 0. -H 43.0 44.0 0. -H 43.0 45.0 0. -H 43.0 46.0 0. -H 43.0 47.0 0. -H 43.0 48.0 0. -H 43.0 49.0 0. -H 44.0 -49.0 0. -H 44.0 -48.0 0. -H 44.0 -47.0 0. -H 44.0 -46.0 0. -H 44.0 -45.0 0. -H 44.0 -44.0 0. -H 44.0 -43.0 0. -H 44.0 -42.0 0. -H 44.0 -41.0 0. -H 44.0 -40.0 0. -H 44.0 -39.0 0. -H 44.0 -38.0 0. -H 44.0 -37.0 0. -H 44.0 -36.0 0. -H 44.0 -35.0 0. -H 44.0 -34.0 0. -H 44.0 -33.0 0. -H 44.0 -32.0 0. -H 44.0 -31.0 0. -H 44.0 -30.0 0. -H 44.0 -29.0 0. -H 44.0 -28.0 0. -H 44.0 -27.0 0. -H 44.0 -26.0 0. -H 44.0 -25.0 0. -H 44.0 -24.0 0. -H 44.0 -23.0 0. -H 44.0 -22.0 0. -H 44.0 -21.0 0. -H 44.0 -20.0 0. -H 44.0 -19.0 0. -H 44.0 -18.0 0. -H 44.0 -17.0 0. -H 44.0 -16.0 0. -H 44.0 -15.0 0. -H 44.0 -14.0 0. -H 44.0 -13.0 0. -H 44.0 -12.0 0. -H 44.0 -11.0 0. -H 44.0 -10.0 0. -H 44.0 -9.0 0. -H 44.0 -8.0 0. -H 44.0 -7.0 0. -H 44.0 -6.0 0. -H 44.0 -5.0 0. -H 44.0 -4.0 0. -H 44.0 -3.0 0. -H 44.0 -2.0 0. -H 44.0 -1.0 0. -H 44.0 0.0 0. -H 44.0 1.0 0. -H 44.0 2.0 0. -H 44.0 3.0 0. -H 44.0 4.0 0. -H 44.0 5.0 0. -H 44.0 6.0 0. -H 44.0 7.0 0. -H 44.0 8.0 0. -H 44.0 9.0 0. -H 44.0 10.0 0. -H 44.0 11.0 0. -H 44.0 12.0 0. -H 44.0 13.0 0. -H 44.0 14.0 0. -H 44.0 15.0 0. -H 44.0 16.0 0. -H 44.0 17.0 0. -H 44.0 18.0 0. -H 44.0 19.0 0. -H 44.0 20.0 0. -H 44.0 21.0 0. -H 44.0 22.0 0. -H 44.0 23.0 0. -H 44.0 24.0 0. -H 44.0 25.0 0. -H 44.0 26.0 0. -H 44.0 27.0 0. -H 44.0 28.0 0. -H 44.0 29.0 0. -H 44.0 30.0 0. -H 44.0 31.0 0. -H 44.0 32.0 0. -H 44.0 33.0 0. -H 44.0 34.0 0. -H 44.0 35.0 0. -H 44.0 36.0 0. -H 44.0 37.0 0. -H 44.0 38.0 0. -H 44.0 39.0 0. -H 44.0 40.0 0. -H 44.0 41.0 0. -H 44.0 42.0 0. -H 44.0 43.0 0. -H 44.0 44.0 0. -H 44.0 45.0 0. -H 44.0 46.0 0. -H 44.0 47.0 0. -H 44.0 48.0 0. -H 44.0 49.0 0. -H 45.0 -49.0 0. -H 45.0 -48.0 0. -H 45.0 -47.0 0. -H 45.0 -46.0 0. -H 45.0 -45.0 0. -H 45.0 -44.0 0. -H 45.0 -43.0 0. -H 45.0 -42.0 0. -H 45.0 -41.0 0. -H 45.0 -40.0 0. -H 45.0 -39.0 0. -H 45.0 -38.0 0. -H 45.0 -37.0 0. -H 45.0 -36.0 0. -H 45.0 -35.0 0. -H 45.0 -34.0 0. -H 45.0 -33.0 0. -H 45.0 -32.0 0. -H 45.0 -31.0 0. -H 45.0 -30.0 0. -H 45.0 -29.0 0. -H 45.0 -28.0 0. -H 45.0 -27.0 0. -H 45.0 -26.0 0. -H 45.0 -25.0 0. -H 45.0 -24.0 0. -H 45.0 -23.0 0. -H 45.0 -22.0 0. -H 45.0 -21.0 0. -H 45.0 -20.0 0. -H 45.0 -19.0 0. -H 45.0 -18.0 0. -H 45.0 -17.0 0. -H 45.0 -16.0 0. -H 45.0 -15.0 0. -H 45.0 -14.0 0. -H 45.0 -13.0 0. -H 45.0 -12.0 0. -H 45.0 -11.0 0. -H 45.0 -10.0 0. -H 45.0 -9.0 0. -H 45.0 -8.0 0. -H 45.0 -7.0 0. -H 45.0 -6.0 0. -H 45.0 -5.0 0. -H 45.0 -4.0 0. -H 45.0 -3.0 0. -H 45.0 -2.0 0. -H 45.0 -1.0 0. -H 45.0 0.0 0. -H 45.0 1.0 0. -H 45.0 2.0 0. -H 45.0 3.0 0. -H 45.0 4.0 0. -H 45.0 5.0 0. -H 45.0 6.0 0. -H 45.0 7.0 0. -H 45.0 8.0 0. -H 45.0 9.0 0. -H 45.0 10.0 0. -H 45.0 11.0 0. -H 45.0 12.0 0. -H 45.0 13.0 0. -H 45.0 14.0 0. -H 45.0 15.0 0. -H 45.0 16.0 0. -H 45.0 17.0 0. -H 45.0 18.0 0. -H 45.0 19.0 0. -H 45.0 20.0 0. -H 45.0 21.0 0. -H 45.0 22.0 0. -H 45.0 23.0 0. -H 45.0 24.0 0. -H 45.0 25.0 0. -H 45.0 26.0 0. -H 45.0 27.0 0. -H 45.0 28.0 0. -H 45.0 29.0 0. -H 45.0 30.0 0. -H 45.0 31.0 0. -H 45.0 32.0 0. -H 45.0 33.0 0. -H 45.0 34.0 0. -H 45.0 35.0 0. -H 45.0 36.0 0. -H 45.0 37.0 0. -H 45.0 38.0 0. -H 45.0 39.0 0. -H 45.0 40.0 0. -H 45.0 41.0 0. -H 45.0 42.0 0. -H 45.0 43.0 0. -H 45.0 44.0 0. -H 45.0 45.0 0. -H 45.0 46.0 0. -H 45.0 47.0 0. -H 45.0 48.0 0. -H 45.0 49.0 0. -H 46.0 -49.0 0. -H 46.0 -48.0 0. -H 46.0 -47.0 0. -H 46.0 -46.0 0. -H 46.0 -45.0 0. -H 46.0 -44.0 0. -H 46.0 -43.0 0. -H 46.0 -42.0 0. -H 46.0 -41.0 0. -H 46.0 -40.0 0. -H 46.0 -39.0 0. -H 46.0 -38.0 0. -H 46.0 -37.0 0. -H 46.0 -36.0 0. -H 46.0 -35.0 0. -H 46.0 -34.0 0. -H 46.0 -33.0 0. -H 46.0 -32.0 0. -H 46.0 -31.0 0. -H 46.0 -30.0 0. -H 46.0 -29.0 0. -H 46.0 -28.0 0. -H 46.0 -27.0 0. -H 46.0 -26.0 0. -H 46.0 -25.0 0. -H 46.0 -24.0 0. -H 46.0 -23.0 0. -H 46.0 -22.0 0. -H 46.0 -21.0 0. -H 46.0 -20.0 0. -H 46.0 -19.0 0. -H 46.0 -18.0 0. -H 46.0 -17.0 0. -H 46.0 -16.0 0. -H 46.0 -15.0 0. -H 46.0 -14.0 0. -H 46.0 -13.0 0. -H 46.0 -12.0 0. -H 46.0 -11.0 0. -H 46.0 -10.0 0. -H 46.0 -9.0 0. -H 46.0 -8.0 0. -H 46.0 -7.0 0. -H 46.0 -6.0 0. -H 46.0 -5.0 0. -H 46.0 -4.0 0. -H 46.0 -3.0 0. -H 46.0 -2.0 0. -H 46.0 -1.0 0. -H 46.0 0.0 0. -H 46.0 1.0 0. -H 46.0 2.0 0. -H 46.0 3.0 0. -H 46.0 4.0 0. -H 46.0 5.0 0. -H 46.0 6.0 0. -H 46.0 7.0 0. -H 46.0 8.0 0. -H 46.0 9.0 0. -H 46.0 10.0 0. -H 46.0 11.0 0. -H 46.0 12.0 0. -H 46.0 13.0 0. -H 46.0 14.0 0. -H 46.0 15.0 0. -H 46.0 16.0 0. -H 46.0 17.0 0. -H 46.0 18.0 0. -H 46.0 19.0 0. -H 46.0 20.0 0. -H 46.0 21.0 0. -H 46.0 22.0 0. -H 46.0 23.0 0. -H 46.0 24.0 0. -H 46.0 25.0 0. -H 46.0 26.0 0. -H 46.0 27.0 0. -H 46.0 28.0 0. -H 46.0 29.0 0. -H 46.0 30.0 0. -H 46.0 31.0 0. -H 46.0 32.0 0. -H 46.0 33.0 0. -H 46.0 34.0 0. -H 46.0 35.0 0. -H 46.0 36.0 0. -H 46.0 37.0 0. -H 46.0 38.0 0. -H 46.0 39.0 0. -H 46.0 40.0 0. -H 46.0 41.0 0. -H 46.0 42.0 0. -H 46.0 43.0 0. -H 46.0 44.0 0. -H 46.0 45.0 0. -H 46.0 46.0 0. -H 46.0 47.0 0. -H 46.0 48.0 0. -H 46.0 49.0 0. -H 47.0 -49.0 0. -H 47.0 -48.0 0. -H 47.0 -47.0 0. -H 47.0 -46.0 0. -H 47.0 -45.0 0. -H 47.0 -44.0 0. -H 47.0 -43.0 0. -H 47.0 -42.0 0. -H 47.0 -41.0 0. -H 47.0 -40.0 0. -H 47.0 -39.0 0. -H 47.0 -38.0 0. -H 47.0 -37.0 0. -H 47.0 -36.0 0. -H 47.0 -35.0 0. -H 47.0 -34.0 0. -H 47.0 -33.0 0. -H 47.0 -32.0 0. -H 47.0 -31.0 0. -H 47.0 -30.0 0. -H 47.0 -29.0 0. -H 47.0 -28.0 0. -H 47.0 -27.0 0. -H 47.0 -26.0 0. -H 47.0 -25.0 0. -H 47.0 -24.0 0. -H 47.0 -23.0 0. -H 47.0 -22.0 0. -H 47.0 -21.0 0. -H 47.0 -20.0 0. -H 47.0 -19.0 0. -H 47.0 -18.0 0. -H 47.0 -17.0 0. -H 47.0 -16.0 0. -H 47.0 -15.0 0. -H 47.0 -14.0 0. -H 47.0 -13.0 0. -H 47.0 -12.0 0. -H 47.0 -11.0 0. -H 47.0 -10.0 0. -H 47.0 -9.0 0. -H 47.0 -8.0 0. -H 47.0 -7.0 0. -H 47.0 -6.0 0. -H 47.0 -5.0 0. -H 47.0 -4.0 0. -H 47.0 -3.0 0. -H 47.0 -2.0 0. -H 47.0 -1.0 0. -H 47.0 0.0 0. -H 47.0 1.0 0. -H 47.0 2.0 0. -H 47.0 3.0 0. -H 47.0 4.0 0. -H 47.0 5.0 0. -H 47.0 6.0 0. -H 47.0 7.0 0. -H 47.0 8.0 0. -H 47.0 9.0 0. -H 47.0 10.0 0. -H 47.0 11.0 0. -H 47.0 12.0 0. -H 47.0 13.0 0. -H 47.0 14.0 0. -H 47.0 15.0 0. -H 47.0 16.0 0. -H 47.0 17.0 0. -H 47.0 18.0 0. -H 47.0 19.0 0. -H 47.0 20.0 0. -H 47.0 21.0 0. -H 47.0 22.0 0. -H 47.0 23.0 0. -H 47.0 24.0 0. -H 47.0 25.0 0. -H 47.0 26.0 0. -H 47.0 27.0 0. -H 47.0 28.0 0. -H 47.0 29.0 0. -H 47.0 30.0 0. -H 47.0 31.0 0. -H 47.0 32.0 0. -H 47.0 33.0 0. -H 47.0 34.0 0. -H 47.0 35.0 0. -H 47.0 36.0 0. -H 47.0 37.0 0. -H 47.0 38.0 0. -H 47.0 39.0 0. -H 47.0 40.0 0. -H 47.0 41.0 0. -H 47.0 42.0 0. -H 47.0 43.0 0. -H 47.0 44.0 0. -H 47.0 45.0 0. -H 47.0 46.0 0. -H 47.0 47.0 0. -H 47.0 48.0 0. -H 47.0 49.0 0. -H 48.0 -49.0 0. -H 48.0 -48.0 0. -H 48.0 -47.0 0. -H 48.0 -46.0 0. -H 48.0 -45.0 0. -H 48.0 -44.0 0. -H 48.0 -43.0 0. -H 48.0 -42.0 0. -H 48.0 -41.0 0. -H 48.0 -40.0 0. -H 48.0 -39.0 0. -H 48.0 -38.0 0. -H 48.0 -37.0 0. -H 48.0 -36.0 0. -H 48.0 -35.0 0. -H 48.0 -34.0 0. -H 48.0 -33.0 0. -H 48.0 -32.0 0. -H 48.0 -31.0 0. -H 48.0 -30.0 0. -H 48.0 -29.0 0. -H 48.0 -28.0 0. -H 48.0 -27.0 0. -H 48.0 -26.0 0. -H 48.0 -25.0 0. -H 48.0 -24.0 0. -H 48.0 -23.0 0. -H 48.0 -22.0 0. -H 48.0 -21.0 0. -H 48.0 -20.0 0. -H 48.0 -19.0 0. -H 48.0 -18.0 0. -H 48.0 -17.0 0. -H 48.0 -16.0 0. -H 48.0 -15.0 0. -H 48.0 -14.0 0. -H 48.0 -13.0 0. -H 48.0 -12.0 0. -H 48.0 -11.0 0. -H 48.0 -10.0 0. -H 48.0 -9.0 0. -H 48.0 -8.0 0. -H 48.0 -7.0 0. -H 48.0 -6.0 0. -H 48.0 -5.0 0. -H 48.0 -4.0 0. -H 48.0 -3.0 0. -H 48.0 -2.0 0. -H 48.0 -1.0 0. -H 48.0 0.0 0. -H 48.0 1.0 0. -H 48.0 2.0 0. -H 48.0 3.0 0. -H 48.0 4.0 0. -H 48.0 5.0 0. -H 48.0 6.0 0. -H 48.0 7.0 0. -H 48.0 8.0 0. -H 48.0 9.0 0. -H 48.0 10.0 0. -H 48.0 11.0 0. -H 48.0 12.0 0. -H 48.0 13.0 0. -H 48.0 14.0 0. -H 48.0 15.0 0. -H 48.0 16.0 0. -H 48.0 17.0 0. -H 48.0 18.0 0. -H 48.0 19.0 0. -H 48.0 20.0 0. -H 48.0 21.0 0. -H 48.0 22.0 0. -H 48.0 23.0 0. -H 48.0 24.0 0. -H 48.0 25.0 0. -H 48.0 26.0 0. -H 48.0 27.0 0. -H 48.0 28.0 0. -H 48.0 29.0 0. -H 48.0 30.0 0. -H 48.0 31.0 0. -H 48.0 32.0 0. -H 48.0 33.0 0. -H 48.0 34.0 0. -H 48.0 35.0 0. -H 48.0 36.0 0. -H 48.0 37.0 0. -H 48.0 38.0 0. -H 48.0 39.0 0. -H 48.0 40.0 0. -H 48.0 41.0 0. -H 48.0 42.0 0. -H 48.0 43.0 0. -H 48.0 44.0 0. -H 48.0 45.0 0. -H 48.0 46.0 0. -H 48.0 47.0 0. -H 48.0 48.0 0. -H 48.0 49.0 0. -H 49.0 -49.0 0. -H 49.0 -48.0 0. -H 49.0 -47.0 0. -H 49.0 -46.0 0. -H 49.0 -45.0 0. -H 49.0 -44.0 0. -H 49.0 -43.0 0. -H 49.0 -42.0 0. -H 49.0 -41.0 0. -H 49.0 -40.0 0. -H 49.0 -39.0 0. -H 49.0 -38.0 0. -H 49.0 -37.0 0. -H 49.0 -36.0 0. -H 49.0 -35.0 0. -H 49.0 -34.0 0. -H 49.0 -33.0 0. -H 49.0 -32.0 0. -H 49.0 -31.0 0. -H 49.0 -30.0 0. -H 49.0 -29.0 0. -H 49.0 -28.0 0. -H 49.0 -27.0 0. -H 49.0 -26.0 0. -H 49.0 -25.0 0. -H 49.0 -24.0 0. -H 49.0 -23.0 0. -H 49.0 -22.0 0. -H 49.0 -21.0 0. -H 49.0 -20.0 0. -H 49.0 -19.0 0. -H 49.0 -18.0 0. -H 49.0 -17.0 0. -H 49.0 -16.0 0. -H 49.0 -15.0 0. -H 49.0 -14.0 0. -H 49.0 -13.0 0. -H 49.0 -12.0 0. -H 49.0 -11.0 0. -H 49.0 -10.0 0. -H 49.0 -9.0 0. -H 49.0 -8.0 0. -H 49.0 -7.0 0. -H 49.0 -6.0 0. -H 49.0 -5.0 0. -H 49.0 -4.0 0. -H 49.0 -3.0 0. -H 49.0 -2.0 0. -H 49.0 -1.0 0. -H 49.0 0.0 0. -H 49.0 1.0 0. -H 49.0 2.0 0. -H 49.0 3.0 0. -H 49.0 4.0 0. -H 49.0 5.0 0. -H 49.0 6.0 0. -H 49.0 7.0 0. -H 49.0 8.0 0. -H 49.0 9.0 0. -H 49.0 10.0 0. -H 49.0 11.0 0. -H 49.0 12.0 0. -H 49.0 13.0 0. -H 49.0 14.0 0. -H 49.0 15.0 0. -H 49.0 16.0 0. -H 49.0 17.0 0. -H 49.0 18.0 0. -H 49.0 19.0 0. -H 49.0 20.0 0. -H 49.0 21.0 0. -H 49.0 22.0 0. -H 49.0 23.0 0. -H 49.0 24.0 0. -H 49.0 25.0 0. -H 49.0 26.0 0. -H 49.0 27.0 0. -H 49.0 28.0 0. -H 49.0 29.0 0. -H 49.0 30.0 0. -H 49.0 31.0 0. -H 49.0 32.0 0. -H 49.0 33.0 0. -H 49.0 34.0 0. -H 49.0 35.0 0. -H 49.0 36.0 0. -H 49.0 37.0 0. -H 49.0 38.0 0. -H 49.0 39.0 0. -H 49.0 40.0 0. -H 49.0 41.0 0. -H 49.0 42.0 0. -H 49.0 43.0 0. -H 49.0 44.0 0. -H 49.0 45.0 0. -H 49.0 46.0 0. -H 49.0 47.0 0. -H 49.0 48.0 0. -H 49.0 49.0 0. -H 50.0 -49.0 0. -H 50.0 -48.0 0. -H 50.0 -47.0 0. -H 50.0 -46.0 0. -H 50.0 -45.0 0. -H 50.0 -44.0 0. -H 50.0 -43.0 0. -H 50.0 -42.0 0. -H 50.0 -41.0 0. -H 50.0 -40.0 0. -H 50.0 -39.0 0. -H 50.0 -38.0 0. -H 50.0 -37.0 0. -H 50.0 -36.0 0. -H 50.0 -35.0 0. -H 50.0 -34.0 0. -H 50.0 -33.0 0. -H 50.0 -32.0 0. -H 50.0 -31.0 0. -H 50.0 -30.0 0. -H 50.0 -29.0 0. -H 50.0 -28.0 0. -H 50.0 -27.0 0. -H 50.0 -26.0 0. -H 50.0 -25.0 0. -H 50.0 -24.0 0. -H 50.0 -23.0 0. -H 50.0 -22.0 0. -H 50.0 -21.0 0. -H 50.0 -20.0 0. -H 50.0 -19.0 0. -H 50.0 -18.0 0. -H 50.0 -17.0 0. -H 50.0 -16.0 0. -H 50.0 -15.0 0. -H 50.0 -14.0 0. -H 50.0 -13.0 0. -H 50.0 -12.0 0. -H 50.0 -11.0 0. -H 50.0 -10.0 0. -H 50.0 -9.0 0. -H 50.0 -8.0 0. -H 50.0 -7.0 0. -H 50.0 -6.0 0. -H 50.0 -5.0 0. -H 50.0 -4.0 0. -H 50.0 -3.0 0. -H 50.0 -2.0 0. -H 50.0 -1.0 0. -H 50.0 0.0 0. -H 50.0 1.0 0. -H 50.0 2.0 0. -H 50.0 3.0 0. -H 50.0 4.0 0. -H 50.0 5.0 0. -H 50.0 6.0 0. -H 50.0 7.0 0. -H 50.0 8.0 0. -H 50.0 9.0 0. -H 50.0 10.0 0. -H 50.0 11.0 0. -H 50.0 12.0 0. -H 50.0 13.0 0. -H 50.0 14.0 0. -H 50.0 15.0 0. -H 50.0 16.0 0. -H 50.0 17.0 0. -H 50.0 18.0 0. -H 50.0 19.0 0. -H 50.0 20.0 0. -H 50.0 21.0 0. -H 50.0 22.0 0. -H 50.0 23.0 0. -H 50.0 24.0 0. -H 50.0 25.0 0. -H 50.0 26.0 0. -H 50.0 27.0 0. -H 50.0 28.0 0. -H 50.0 29.0 0. -H 50.0 30.0 0. -H 50.0 31.0 0. -H 50.0 32.0 0. -H 50.0 33.0 0. -H 50.0 34.0 0. -H 50.0 35.0 0. -H 50.0 36.0 0. -H 50.0 37.0 0. -H 50.0 38.0 0. -H 50.0 39.0 0. -H 50.0 40.0 0. -H 50.0 41.0 0. -H 50.0 42.0 0. -H 50.0 43.0 0. -H 50.0 44.0 0. -H 50.0 45.0 0. -H 50.0 46.0 0. -H 50.0 47.0 0. -H 50.0 48.0 0. -H 50.0 49.0 0. -H 51.0 -49.0 0. -H 51.0 -48.0 0. -H 51.0 -47.0 0. -H 51.0 -46.0 0. -H 51.0 -45.0 0. -H 51.0 -44.0 0. -H 51.0 -43.0 0. -H 51.0 -42.0 0. -H 51.0 -41.0 0. -H 51.0 -40.0 0. -H 51.0 -39.0 0. -H 51.0 -38.0 0. -H 51.0 -37.0 0. -H 51.0 -36.0 0. -H 51.0 -35.0 0. -H 51.0 -34.0 0. -H 51.0 -33.0 0. -H 51.0 -32.0 0. -H 51.0 -31.0 0. -H 51.0 -30.0 0. -H 51.0 -29.0 0. -H 51.0 -28.0 0. -H 51.0 -27.0 0. -H 51.0 -26.0 0. -H 51.0 -25.0 0. -H 51.0 -24.0 0. -H 51.0 -23.0 0. -H 51.0 -22.0 0. -H 51.0 -21.0 0. -H 51.0 -20.0 0. -H 51.0 -19.0 0. -H 51.0 -18.0 0. -H 51.0 -17.0 0. -H 51.0 -16.0 0. -H 51.0 -15.0 0. -H 51.0 -14.0 0. -H 51.0 -13.0 0. -H 51.0 -12.0 0. -H 51.0 -11.0 0. -H 51.0 -10.0 0. -H 51.0 -9.0 0. -H 51.0 -8.0 0. -H 51.0 -7.0 0. -H 51.0 -6.0 0. -H 51.0 -5.0 0. -H 51.0 -4.0 0. -H 51.0 -3.0 0. -H 51.0 -2.0 0. -H 51.0 -1.0 0. -H 51.0 0.0 0. -H 51.0 1.0 0. -H 51.0 2.0 0. -H 51.0 3.0 0. -H 51.0 4.0 0. -H 51.0 5.0 0. -H 51.0 6.0 0. -H 51.0 7.0 0. -H 51.0 8.0 0. -H 51.0 9.0 0. -H 51.0 10.0 0. -H 51.0 11.0 0. -H 51.0 12.0 0. -H 51.0 13.0 0. -H 51.0 14.0 0. -H 51.0 15.0 0. -H 51.0 16.0 0. -H 51.0 17.0 0. -H 51.0 18.0 0. -H 51.0 19.0 0. -H 51.0 20.0 0. -H 51.0 21.0 0. -H 51.0 22.0 0. -H 51.0 23.0 0. -H 51.0 24.0 0. -H 51.0 25.0 0. -H 51.0 26.0 0. -H 51.0 27.0 0. -H 51.0 28.0 0. -H 51.0 29.0 0. -H 51.0 30.0 0. -H 51.0 31.0 0. -H 51.0 32.0 0. -H 51.0 33.0 0. -H 51.0 34.0 0. -H 51.0 35.0 0. -H 51.0 36.0 0. -H 51.0 37.0 0. -H 51.0 38.0 0. -H 51.0 39.0 0. -H 51.0 40.0 0. -H 51.0 41.0 0. -H 51.0 42.0 0. -H 51.0 43.0 0. -H 51.0 44.0 0. -H 51.0 45.0 0. -H 51.0 46.0 0. -H 51.0 47.0 0. -H 51.0 48.0 0. -H 51.0 49.0 0. diff --git a/07/electrode-square.xyz b/07/electrode-square.xyz deleted file mode 100644 index af4e0b1..0000000 --- a/07/electrode-square.xyz +++ /dev/null @@ -1,200 +0,0 @@ -198 -2.0 0.0 0.0 0.0 99.0 0.0 0.0 0.0 1.0 -H 50.0 -49.0 0. -H 50.0 -48.0 0. -H 50.0 -47.0 0. -H 50.0 -46.0 0. -H 50.0 -45.0 0. -H 50.0 -44.0 0. -H 50.0 -43.0 0. -H 50.0 -42.0 0. -H 50.0 -41.0 0. -H 50.0 -40.0 0. -H 50.0 -39.0 0. -H 50.0 -38.0 0. -H 50.0 -37.0 0. -H 50.0 -36.0 0. -H 50.0 -35.0 0. -H 50.0 -34.0 0. -H 50.0 -33.0 0. -H 50.0 -32.0 0. -H 50.0 -31.0 0. -H 50.0 -30.0 0. -H 50.0 -29.0 0. -H 50.0 -28.0 0. -H 50.0 -27.0 0. -H 50.0 -26.0 0. -H 50.0 -25.0 0. -H 50.0 -24.0 0. -H 50.0 -23.0 0. -H 50.0 -22.0 0. -H 50.0 -21.0 0. -H 50.0 -20.0 0. -H 50.0 -19.0 0. -H 50.0 -18.0 0. -H 50.0 -17.0 0. -H 50.0 -16.0 0. -H 50.0 -15.0 0. -H 50.0 -14.0 0. -H 50.0 -13.0 0. -H 50.0 -12.0 0. -H 50.0 -11.0 0. -H 50.0 -10.0 0. -H 50.0 -9.0 0. -H 50.0 -8.0 0. -H 50.0 -7.0 0. -H 50.0 -6.0 0. -H 50.0 -5.0 0. -H 50.0 -4.0 0. -H 50.0 -3.0 0. -H 50.0 -2.0 0. -H 50.0 -1.0 0. -H 50.0 0.0 0. -H 50.0 1.0 0. -H 50.0 2.0 0. -H 50.0 3.0 0. -H 50.0 4.0 0. -H 50.0 5.0 0. -H 50.0 6.0 0. -H 50.0 7.0 0. -H 50.0 8.0 0. -H 50.0 9.0 0. -H 50.0 10.0 0. -H 50.0 11.0 0. -H 50.0 12.0 0. -H 50.0 13.0 0. -H 50.0 14.0 0. -H 50.0 15.0 0. -H 50.0 16.0 0. -H 50.0 17.0 0. -H 50.0 18.0 0. -H 50.0 19.0 0. -H 50.0 20.0 0. -H 50.0 21.0 0. -H 50.0 22.0 0. -H 50.0 23.0 0. -H 50.0 24.0 0. -H 50.0 25.0 0. -H 50.0 26.0 0. -H 50.0 27.0 0. -H 50.0 28.0 0. -H 50.0 29.0 0. -H 50.0 30.0 0. -H 50.0 31.0 0. -H 50.0 32.0 0. -H 50.0 33.0 0. -H 50.0 34.0 0. -H 50.0 35.0 0. -H 50.0 36.0 0. -H 50.0 37.0 0. -H 50.0 38.0 0. -H 50.0 39.0 0. -H 50.0 40.0 0. -H 50.0 41.0 0. -H 50.0 42.0 0. -H 50.0 43.0 0. -H 50.0 44.0 0. -H 50.0 45.0 0. -H 50.0 46.0 0. -H 50.0 47.0 0. -H 50.0 48.0 0. -H 50.0 49.0 0. -H 51.0 -49.0 0. -H 51.0 -48.0 0. -H 51.0 -47.0 0. -H 51.0 -46.0 0. -H 51.0 -45.0 0. -H 51.0 -44.0 0. -H 51.0 -43.0 0. -H 51.0 -42.0 0. -H 51.0 -41.0 0. -H 51.0 -40.0 0. -H 51.0 -39.0 0. -H 51.0 -38.0 0. -H 51.0 -37.0 0. -H 51.0 -36.0 0. -H 51.0 -35.0 0. -H 51.0 -34.0 0. -H 51.0 -33.0 0. -H 51.0 -32.0 0. -H 51.0 -31.0 0. -H 51.0 -30.0 0. -H 51.0 -29.0 0. -H 51.0 -28.0 0. -H 51.0 -27.0 0. -H 51.0 -26.0 0. -H 51.0 -25.0 0. -H 51.0 -24.0 0. -H 51.0 -23.0 0. -H 51.0 -22.0 0. -H 51.0 -21.0 0. -H 51.0 -20.0 0. -H 51.0 -19.0 0. -H 51.0 -18.0 0. -H 51.0 -17.0 0. -H 51.0 -16.0 0. -H 51.0 -15.0 0. -H 51.0 -14.0 0. -H 51.0 -13.0 0. -H 51.0 -12.0 0. -H 51.0 -11.0 0. -H 51.0 -10.0 0. -H 51.0 -9.0 0. -H 51.0 -8.0 0. -H 51.0 -7.0 0. -H 51.0 -6.0 0. -H 51.0 -5.0 0. -H 51.0 -4.0 0. -H 51.0 -3.0 0. -H 51.0 -2.0 0. -H 51.0 -1.0 0. -H 51.0 0.0 0. -H 51.0 1.0 0. -H 51.0 2.0 0. -H 51.0 3.0 0. -H 51.0 4.0 0. -H 51.0 5.0 0. -H 51.0 6.0 0. -H 51.0 7.0 0. -H 51.0 8.0 0. -H 51.0 9.0 0. -H 51.0 10.0 0. -H 51.0 11.0 0. -H 51.0 12.0 0. -H 51.0 13.0 0. -H 51.0 14.0 0. -H 51.0 15.0 0. -H 51.0 16.0 0. -H 51.0 17.0 0. -H 51.0 18.0 0. -H 51.0 19.0 0. -H 51.0 20.0 0. -H 51.0 21.0 0. -H 51.0 22.0 0. -H 51.0 23.0 0. -H 51.0 24.0 0. -H 51.0 25.0 0. -H 51.0 26.0 0. -H 51.0 27.0 0. -H 51.0 28.0 0. -H 51.0 29.0 0. -H 51.0 30.0 0. -H 51.0 31.0 0. -H 51.0 32.0 0. -H 51.0 33.0 0. -H 51.0 34.0 0. -H 51.0 35.0 0. -H 51.0 36.0 0. -H 51.0 37.0 0. -H 51.0 38.0 0. -H 51.0 39.0 0. -H 51.0 40.0 0. -H 51.0 41.0 0. -H 51.0 42.0 0. -H 51.0 43.0 0. -H 51.0 44.0 0. -H 51.0 45.0 0. -H 51.0 46.0 0. -H 51.0 47.0 0. -H 51.0 48.0 0. -H 51.0 49.0 0. diff --git a/07/run.ipynb b/07/run.ipynb new file mode 100644 index 0000000..8877154 --- /dev/null +++ b/07/run.ipynb @@ -0,0 +1,288 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import math\n", + "import sisl\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from functools import partial\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "One of the key ideas behind `sisl` was the interaction of a DFT Hamiltonian and the user. \n", + "In this example we will highlight a unique implementation in TBtrans which enables ***any*** kind of user intervention.\n", + "\n", + "The idea is a transformation of the Green function calculation from:\n", + "\\begin{equation}\n", + " \\mathbf G^{-1}(E) = \\mathbf S (E + i\\eta) - \\mathbf H - \\sum_i\\boldsymbol\\Sigma_i\n", + "\\end{equation}\n", + "to\n", + "\\begin{equation}\n", + " \\mathbf G^{-1}(E) = \\mathbf S (E + i\\eta) - \\mathbf H - \\delta\\mathbf H - \\sum_i\\boldsymbol\\Sigma_i - \\delta\\boldsymbol \\Sigma\n", + "\\end{equation}\n", + "where $\\delta\\mathbf H$ and $\\delta\\boldsymbol\\Sigma$ can be of any type, i.e. complex and/or real. \n", + "The only (important!) difference between $\\delta\\mathbf H$ and $\\delta\\boldsymbol \\Sigma$ is that the former enters the calculation of bond-currents, while the latter does not.\n", + "\n", + "Since TBtrans by it-self does not allow complex Hamiltonians the above is a way to leviate this restriction. One feature this may be used for is by applying magnetic fields.\n", + "\n", + "In the following we will use Peierls substitution on a square tight-binding model:\n", + "\\begin{equation}\n", + " \\mathbf H(\\Phi) = \\mathbf H(0)e^{i \\Phi \\delta x^- \\cdot \\delta y^+ / 2},\n", + "\\end{equation}\n", + "where $\\Phi$ is the magnetic flux (in proper units), $\\delta x^- = x_j - x_i$ and $\\delta y^+=y_j + y_i$, with $i$ and $j$ being atomic indices. If you are interested in this substitution, please search litterature.\n", + "\n", + "---\n", + "\n", + "First create a square lattice and define the on-site and nearest neighbour couplings" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "square = sisl.Geometry([0,0,0], sisl.Atom(1, R=1.0), sc=sisl.SuperCell(1, nsc=[3, 3, 1]))\n", + "on, nn = 4, -1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "H_minimal = sisl.Hamiltonian(square)\n", + "H_minimal.construct([[0.1, 1.1], [on, nn]])\n", + "H_elec = H_minimal.tile(100, 1).tile(2, 0)\n", + "H_elec.set_nsc([3, 1, 1])\n", + "H_elec.write('ELEC.nc')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "H = H_elec.tile(50, 0)\n", + "\n", + "# Make a constriction\n", + "geom = H.geom.translate( -H.geom.center(what='xyz') )\n", + "# This constriction is based on an example in the kwant project (called qhe). We however make a slight modification.\n", + "# Remove some atoms, this will create a constriction of 100 - 40 * 2 = 20 Ang with a Gaussian edge profile\n", + "remove = (np.abs(geom.xyz[:, 1]) > 50 - 37.5 * np.exp( -(geom.xyz[:, 0] / 12) **2 )).nonzero()[0]\n", + "# To reduce computations we find the atoms in the constriction such that we can \n", + "# limit the calculation region.\n", + "device = (np.abs(geom.remove(remove).xyz[:, 0]) < .6).nonzero()[0]\n", + "geom.remove(remove).write('test.xyz')\n", + "\n", + "# Pretty print a range of atoms that is the smallest device region\n", + "print(sisl.utils.list2str(device))\n", + "\n", + "H = H.remove(remove)\n", + "H.write('DEVICE.nc')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The above printed list of atoms should be inserted in the `RUN.fdf` in the `TBT.Atoms.Device`. This is important when one is *only* interested in the transmission, and does not care about the density of states. You are always encouraged to select the minimal device region to 1) speed up computations and 2) drastically reduce memory requirements. \n", + "In this regard you should read in the TBtrans manual about the additional flag `TBT.Atoms.Device.Connect` (you may try, as an additional exercise to set this flag to true and check the difference from the previous calculation).\n", + "\n", + "Now we have $\\mathbf H(0)$ with *no* phases due to magnetic fields. As the magnetic field is changing the Hamiltonian, and thus enters the bond-current calculations, we have to use the $\\delta\\mathbf H$ term (and *not* $\\delta\\boldsymbol\\Sigma$).\n", + "\n", + "The first thing we need to calculate is $\\delta x^- \\cdot\\delta y^+$.\n", + "Since we already have the Hamiltonian we can utilize the connections by looping the coupling elements (in a sparse matrix/graph this is called *edges*). This is *much* cheaper than trying to figure out which atoms are neighbouring." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "device = H.geom\n", + "xy = sisl.Hamiltonian(device)\n", + "for ia in device:\n", + " # Get all connecting elements (edges discards connections to it-self)\n", + " edges = H.edges(ia)\n", + " # Calculate the vector between edges and ia:\n", + " # xyz[edges, :] - xyz[ia, :]\n", + " Rij = device.Rij(ia, edges)\n", + " # Now calculate the product:\n", + " # (xj - xi) * (yj + yi)\n", + " # Notice that we correct to +yi by adding it twice\n", + " xy[ia, edges] = Rij[:, 0] * (Rij[:, 1] + 2 * device.xyz[ia, 1])\n", + "xy.finalize() # this is only because it will speed up the following calculations" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we have the coupling dependent phase factor, $\\delta x^-\\cdot\\delta y^+$, and all we need to calculate is $\\delta\\mathbf H$ that transforms $\\mathbf H(0) \\to \\mathbf H(\\Phi)$. \n", + "This is done easily as a `Hamiltonian` allows basic element wise operations, i.e. `+`, `-`, `*`, `/` and `**` (the power function). \n", + "Your task is to insert the correct mathematical equation below, such that `dH` contains $\\delta \\mathbf H$ for $\\mathbf H(\\Phi) = \\mathbf H(0) + \\delta\\mathbf H$.\n", + "To help you I have inserted the exponential function. To finalize the equation, you need three terms: `nn`, `xy` and `rec_phi`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "rec_phis = np.arange(1, 51, 4)\n", + "print('Calulating (of {}):'.format(len(rec_phis)), end='')\n", + "for i, rec_phi in enumerate(rec_phis):\n", + " print(' {}'.format(i+1), end=',')\n", + " # Calculate H(Phi)\n", + " #dH = ... math.e ** (0.5j ...) ...\n", + "\n", + " with sisl.get_sile('M_{}.dH.nc'.format(rec_phi), mode='w') as fh:\n", + " fh.write_delta(dH)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercises\n", + "\n", + "- Calculate all physical quantities for all different applied magnetic fields. \n", + " Before running the calculations, search the manual on how to save the self-energies (*HINT* out-of-core). By default, TBtrans calculates the self-energies as they are needed. However, if one has the same electrodes, same $k$-grid and same $E$-points for several different runs (as in this case) one can with benefit calculate the self-energies *once*, and then reuse them in subsequent calculations.\n", + "\n", + " To ease the calculation of all magnetic fields \n", + " To help you a script `run.sh` is located in this directory. Carefully read it to infer which option specifies the $\\delta \\mathbf H$ term.\n", + " \n", + " Since this example has 14 different setups, each with 51 energy points, it will take some time. Around 30 seconds for the first (includes self-energy calculation), and around 10 seconds for all subsequent setups. So be patient. :)\n", + "- Secondly, read in all output into the workbook in a list." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Create short-hand function\n", + "gs = sisl.get_sile\n", + "# No magnetic field\n", + "tbt0 = gs('siesta.TBT.nc')\n", + "# All magnetic fields in increasing order\n", + "tbts = [gs('M_{}/siesta.TBT.nc'.format(rec_phi)) for rec_phi in rec_phis]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- Plot the transmission function for all applied fields in the full energy range." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Do trick with easy plotting utility\n", + "E = tbt0.E[:]\n", + "Eplot = partial(plt.plot, E)\n", + "\n", + "for rec_phi, tbt in zip(rec_phis, tbts):\n", + " Eplot(tbt.transmission(), '--', label='{}'.format(rec_phi));\n", + "Eplot(tbt0.transmission(), 'k');\n", + "plt.xlim([E.min(), E.max()]); plt.ylim([0, None]);\n", + "plt.xlabel('Energy [eV]'); plt.ylabel('Transmisson'); plt.legend(bbox_to_anchor=(1, 1), loc=2);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- Make a contour plot of the transmission vs. $\\Phi$ and $E$" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "T = np.stack([tbt.transmission() for tbt in tbts])\n", + "T[T < 1e-9] = 0 # small numbers are difficult to interpolate, so remove them\n", + "plt.contourf(rec_phis, E, T.T, 20); plt.colorbar(label='Transmission');\n", + "plt.ylabel('Energy [eV]'); plt.xlabel(r'$1/\\Phi$');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- **TIME** Choose a given magnetic field and create a different set of constriction widths and plot $T(E, \\Phi)$ for different widths, fix $\\Phi$ at a fairly large value (copy codes in `In [4-7]` and adapt), you may decide the Gaussian profile and change if you want." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Learned lessons\n", + "\n", + "- Advanced construction of geometries by removing subsets of atoms (both for Hamiltonian and geometries)\n", + "- Creation of $\\delta\\mathbf H$ terms. Note that *exactly* the same method is used for the $\\delta\\boldsymbol\\Sigma$ terms, the only difference is how it is specified in the fdf-file (`TBT.dH` vs. `TBT.dSE`)\n", + "- Supplying fdf-flags to TBtrans on the command line to override flags in the input files.\n", + "- Inform TBtrans to store the self-energies on disk to re-use them in later calculations.\n", + "- Inform TBtrans to make all output into a sub-folder (and if it does not exist, create it)\n", + "- Adding complex valued Hamiltonians, we have not uncovered everything as the $\\delta$ files may contain $k$-resolved and/or $E$-resolved $\\delta$-terms for full control, but the principles are the same. Search the documentation for `deltancSileTBtrans`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/07/run.py b/07/run.py deleted file mode 100644 index c2cf680..0000000 --- a/07/run.py +++ /dev/null @@ -1,96 +0,0 @@ -from __future__ import print_function, division - -import math, time -import numpy as np - -import sisl as si - -# In order to use the construct feature we -# must define an orbital range of the -# atoms. -# Note that we use a Hydrogen atom, but -# in principle is the atomic number not -# used for anything. -H = si.Atom(1, R=1.1) - -# These are the tight-binding quantities -# Create tight-binding H -dR = [0.1, 1.1] -on, nn = 4, -1 - -# Read and create the electrode -print('Creating electrode electronic structure...') -elec = si.Geometry.read('electrode-square.xyz') -elec.atom[:] = H -# The electrode is a nano-ribbon -elec.sc.set_nsc([3,1,1]) -H_el = si.Hamiltonian(elec) -H_el.construct(dR, [on, nn]) -H_el.write('ELEC.nc') - -# First we read the device from the xyz file -print('Reading and creating device electronic structure...') -device = si.Geometry.read('device.xyz') -device.atom[:] = H -# The device has no supercell connections -device.sc.set_nsc([1,1,1]) -H_dev = si.Hamiltonian(device) -H_dev.construct(dR, [on, nn]) -H_dev.write('DEVICE.nc') - -# Now we may easily create the B-field -# corrections for the different hopping integrals. -# First we will create a sparse matrix -# with the phases. -# This is a "trick" to greatly speed up the creation of the -# dH files. -# We create one dH with all phases, and we will -# subsequently calculate the complex phases -# from the phases in one go. -print('Initialization of the phases for B-field...') -phases = si.Hamiltonian(device) -for ias, idxs in device.iter_block(17): - for ia in ias: - - # Retrive BOTH the index of the overlaps *and* the - # coordinates of the atoms that are connecting - idx, xyz = device.close(ia, dR=dR, idx=idxs, ret_coord=True) - - # In the magnetic field Peierls substitution - # we only want to change the nearest-neighbour elements - idx, xyz = idx[1], xyz[1] - - # This is a B-field in the z-direction - # So the phases are due to x-y coordinates - phase = (device[ia,0] - xyz[:,0]) * \ - (device[ia,1] + xyz[:,1]) - - phases[ia, idx] = phase -phases.finalize() - -# Now `phases` contain all hopping integral delta-r from which -# we may calculate the Peierls phase: -# H = H * exp( i/2 * Phi * dx * dx ) -# Loop over all Phi and store the magnetic correction -# in the M_*.dH.nc files.s -# Subsequently one may call: -# tbtrans -fdf TBT.dH:M_1.0.dH.nc -# which will add the dH using the data in M_1.0.dH.nc -reciprocal_phis = np.linspace(5, 50, 16) -for i, rec_phi in enumerate(reciprocal_phis): - print("{:4d} - Creating dH for 1/phi = {}".format(i+1, rec_phi)) - - # Convert reciprocal-phi to: i * phi /2 - phi = -0.5j / rec_phi - - # Calculate the phases - # The dH is an additive term for the - # Hamiltonian, hence we should subtract the - # hopping integral and set the new one - # as the magnetic field is a phase-factor. - dH = nn * math.e ** (phi * phases) - nn - - # Now we have dH at magnetic field (phi) - sile = si.get_sile('M_{:.0f}.dH.nc'.format(rec_phi), 'w') - - dH.write(sile) diff --git a/07/run.sh b/07/run.sh index 35c9467..abcc90d 100755 --- a/07/run.sh +++ b/07/run.sh @@ -1,6 +1,8 @@ #!/bin/bash # Run tbtrans on the non-magnetic system +echo "Running no magnetic field" +rm -f siesta.TBT.nc tbtrans RUN.fdf > TBT.out # Loop over the M_*.dH.nc files created with 'run.py' diff --git a/08/run.ipynb b/08/run.ipynb new file mode 100644 index 0000000..f0269d5 --- /dev/null +++ b/08/run.ipynb @@ -0,0 +1,165 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import sisl\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First TranSiesta example.\n", + "\n", + "This example will *only* create the structures for input into TranSiesta. I.e. `sisl`'s capabilities of creating geometries with different species is a core functionality which is handy for creating geometries for Siesta/TranSiesta.\n", + "\n", + "This example will teach you one of the *most important* aspect of performing a successfull DFT+NEGF calculation. Namely that the electrodes should *only* couple to its nearest neighbouring cell." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "graphene = sisl.geom.graphene(1.44, orthogonal=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "graphene.write('STRUCT_ELEC_small.fdf')\n", + "graphene.write('STRUCT_ELEC_small.xyz')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "elec = graphene.tile(2, axis=0)\n", + "elec.write('STRUCT_ELEC.fdf')\n", + "elec.write('STRUCT_ELEC.xyz')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The above two code blocks writes two different electrodes that we will test in TranSiesta. In this example we will have the transport direction along the 1st lattice vector (0th index in Python). Note how TranSiesta does not limit your choice of orientation. *Any* direction may be used as a semi-infinite direction, just as TBtrans." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "device = elec.tile(3, axis=0)\n", + "device.write('STRUCT_DEVICE.fdf')\n", + "device.write('STRUCT_DEVICE.xyz')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercises\n", + "\n", + "As this is your first example of running TranSiesta there are a few things you should know:\n", + "\n", + "1. *Any* TranSiesta calculation starts by calculating the electrode Hamiltonians and their densities.\n", + " - Start by defining your electrode and figure out how *long* it should be (covered in this example)\n", + " - Converge $k$-points and parameters such that the electrode truly reflects your physical boundaries for the bulk electrode.\n", + " - As in [example 05](../05/run.ipynb) you should *always* use periodicity if allowed. Using Bloch's theorem will greatly increase throughput with little effort.\n", + " - Run the electrode with `transiesta` executable. This will create the `*.TSHS` file which is the basic ingredient used in TranSiesta/TBtrans to calculate the self-energies from the given electrode.\n", + " - Additionally, you can read the electrode Hamiltonian (from the `*.TSHS`) into sisl and create band-structures, just as in [example 01](../01/run.ipynb).\n", + "2. Define your device structure by ensuring the electrode length as determined in step 1. \n", + " - Add a few *screening layers* to ensure a smooth potential towards the bulk electrodes, do this for all electrodes.\n", + " - Add the scattering part which connects the electrodes.\n", + "3. Define the input for TranSiesta, you can with benefit use the bash-script `tselecs.sh` which will generate a default input for $N\\ge1$ electrodes and only require slight changes.\n", + "4. Run TranSiesta\n", + " - Go through the output of TranSiesta to assert that it has run without error (always do this!) \n", + " - Ensure that the SCF has indeed converged, TranSiesta should not stop because of the maximum allowed iterations is too small. Optionally you may use this flag `SCFMustConverge T` to make TranSIESTA die if it does not converge.\n", + " - Ensure that the `dQ` column is close to $0$, below $0.01$ is preferable. Further, it is advised that the last couple of iterations also obey this condition.\n", + " - Go through the lines after:\n", + " \n", + " ```\n", + " ***************************\n", + " * WELCOME TO TRANSIESTA *\n", + " ***************************\n", + " ```\n", + " \n", + " which is the point where TranSiesta starts. \n", + " Try and familiarize your-self with the output of TranSiesta, lots of information is printed. Some more important than others.\n", + " \n", + "5. Run TBtrans. Notice that TBtrans will default to the values given to TranSiesta, so do not be worried about missing `TBT.*` flags in the input files. However, remark that TBtrans will only use the `TS.<>` flag if `TBT.<>` does not exist.\n", + "\n", + "### For this example follow these steps:\n", + "\n", + "- Run TranSiesta for the electrode:\n", + "\n", + " transiesta RUN_ELEC.fdf > RUN_ELEC.out\n", + " \n", + "- Run TranSiesta for the device region:\n", + "\n", + " transiesta RUN.fdf > RUN.out" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This finalizes your (possibly) first TranSiesta calculation. All should have gone fine here, after some time.\n", + "You should also have noticed that TranSiesta is considerably slower than TBtrans. \n", + "\n", + "- Continue by deleting all `ELEC.*` files\n", + "- Edit `RUN_SMALL.fdf` to include the `STRUCT_ELEC_SMALL.fdf` instead of `STRUCT_ELEC.fdf`\n", + "- Re-run the electrode calculation (`transiesta RUN_ELEC.fdf > ELEC_SMALL.out`)\n", + "- Re-run TranSiesta (`transiesta RUN.fdf > TS_SMALL.out`)\n", + "- What happens? And more importantly, why?!?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Evidently TranSIESTA does not allow too small electrodes as that will create an erroneous coupling to the semi-infinite directions. Luckily this may easily be inferred in the electrode output by looking for this keyword: `Internal auxiliary supercell`. The output of TranSIESTA will print 3 numbers $\\langle A\\rangle \\mathrm{x} \\langle B\\rangle \\mathrm{x}\\langle C\\rangle$ which corresponds to the number of neighbouring unit-cells the primary unit-cell connects to. The important number to look for is the number corresponding to the semi-infinite direction. \n", + "What should this number be in order to preserve nearest-neighbour unit-cell interactions? Say, if the semi-infinite is along the $\\langle A\\rangle$ direction what should the number $\\langle A\\rangle$ (always!) be?" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/08/run.py b/08/run.py deleted file mode 100644 index 4052782..0000000 --- a/08/run.py +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/env python - -import sisl - -# Instead of manually defining the graphene system we use -# the build-in sisl capability of defining the graphene -# structure. -# Note that this graphene unit-cell is an orthogonal unit-cell -# (figure out how many atoms this consists off) -graphene = sisl.geom.graphene(1.44, orthogonal=True) - -# There are two really important things in transiesta, -# besides the general DFT considerations such as k-mesh convergence -# mesh-cutoff etc.: -# -# 1. The electrode size (the extend of the electrode -# in the semi-infinite direction) -# 2. The electrode screening region (the region -# between the electrode and the device) -# -# For the first point you need an electrode with -# length such that the electrode only couples to one -# nearest neighbour unit-cell. This is extremely -# important for calculating the correct self-energy. -# In this case we create an electrode of 2 arm-chair direction -# components. -# The second point will be important in the following tutorials. -elec = graphene.tile(2, axis=0) -elec.write('STRUCT_ELEC.fdf') -elec.write('STRUCT_ELEC.xyz') - -# This will be the "smaller" electrode to test the single -# cell interaction range. -graphene.write('STRUCT_ELEC_small.fdf') -graphene.write('STRUCT_ELEC_small.xyz') - - -# Now we create the device region. -# The device region *MUST* be so large that the electrodes -# does not connect directly. You may recognize that this -# requirement is the same as point 1 for the electrodes. -device = elec.tile(3, axis=0) -device.write('STRUCT_DEVICE.fdf') -device.write('STRUCT_DEVICE.xyz') diff --git a/09/RUN.fdf b/09/RUN.fdf index 9ed442a..0ce1d4a 100644 --- a/09/RUN.fdf +++ b/09/RUN.fdf @@ -12,12 +12,11 @@ SolutionMethod transiesta # tselecs.sh script which enables easy # creation of input options for N-electrodes # (up to 9). -# TS.Voltage 0 eV # To perform bias calculations one is FORCED -# to define the required *different* chemical +# to define the *different* chemical # potentials. # Note that there will NEVER be more chemical # potentials than electrodes. @@ -53,7 +52,7 @@ TS.Voltage 0 eV end %endblock TS.ChemPot.Right -# From this energy the number of poles will be calculated +# From this cutoff-energy the number of poles will be calculated # from the energy and the temperature. TS.Contours.Eq.Pole 2.5 eV @@ -126,6 +125,9 @@ TS.Contours.Eq.Pole 2.5 eV electrode-position end -1 %endblock +#### +# TBtrans options follow +#### # Interpolation for the bias Hamiltonians # The default is a spline interpolation @@ -133,13 +135,13 @@ TS.Contours.Eq.Pole 2.5 eV # Hamiltonian files and their respective # applied bias %block TBT.HS.Files - ../V0/siesta.TSHS 0. eV - ../V0.5/siesta.TSHS 0.5 eV - ../V1.0/siesta.TSHS 1. eV + ../TS_0/siesta.TSHS 0. eV + ../TS_0.5/siesta.TSHS 0.5 eV + ../TS_1.0/siesta.TSHS 1. eV %endblock # If one is only interested in the IV curves -# one may easily reduce the integration to the +# one may reduce the integration to the # energy window defined by the chemical potentials. # This will greatly increase throughput although the # transmission will be calculated in a very reduced @@ -173,6 +175,7 @@ DM.UseSaveDM true MD.NumCGSteps 0 +SaveElectrostaticPotential T SaveHS T %include ../STRUCT_DEVICE.fdf diff --git a/09/V0.5/C.psf b/09/TS_0.5/C.psf similarity index 100% rename from 09/V0.5/C.psf rename to 09/TS_0.5/C.psf diff --git a/09/V0/C.psf b/09/TS_0/C.psf similarity index 100% rename from 09/V0/C.psf rename to 09/TS_0/C.psf diff --git a/09/V1.0/C.psf b/09/TS_1.0/C.psf similarity index 100% rename from 09/V1.0/C.psf rename to 09/TS_1.0/C.psf diff --git a/09/run.ipynb b/09/run.ipynb new file mode 100644 index 0000000..cf4c7e1 --- /dev/null +++ b/09/run.ipynb @@ -0,0 +1,195 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import sisl\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First TranSiesta bias example.\n", + "\n", + "In this example we will take the system from [example 8](../08/run.ipynb) and perform bias calculations on it.\n", + "\n", + "Bias calculations are very heavy because of a full DFT+NEGF calculation *per bias-point*.\n", + "\n", + "We will begin with creating the structures." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "graphene = sisl.geom.graphene(1.44, orthogonal=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "elec = graphene.tile(2, axis=0)\n", + "elec.write('STRUCT_ELEC.fdf')\n", + "device = elec.tile(3, axis=0)\n", + "device.write('STRUCT_DEVICE.fdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercises\n", + "\n", + "In this exercise you will be familiarized with the input options that define a bias calculation. The input options are *extremely elaborate*, yet they require little intervention when using default parameters. \n", + "As this is your first example of running TranSiesta with applied bias there are a few things you should know:\n", + "\n", + "1. Do not start by performing any $V\\neq0$ calculations until you are perfectly sure that your $V=0$ calculation is well converged and well behaved, i.e. a small `dQ` (see [example 8](../08/run.ipynb)).\n", + "2. When performing bias calculations your are recommended to create a new directory for each bias: `TS_`.\n", + "3. *Any* bias calculation should be a restart by using the ***closests*** bias calculations TranSiesta density matrix. This can be ensured by copying the `siesta.TSDE` file from the ***closests*** bias calculation to the current simulation directory. I.e.\n", + "\n", + " - First run $V=0$ in `TS_0`, ensure convergence etc.\n", + " - Second run $V=0.25\\,\\mathrm{eV}$ in `TS_0.25`, copy `TS_0/siesta.TSDE` to `TS_0.25/` and start run.\n", + " - Third run $V=0.5\\,\\mathrm{eV}$ in `TS_0.5`, copy `TS_0.25/siesta.TSDE` to `TS_0.5/` and start run.\n", + " - etc.\n", + " - $N$th run $V=-0.25\\,\\mathrm{eV}$ in `TS_-0.25`, copy `TS_0/siesta.TSDE` to `TS_-0.25/` and start run (note negative bias' can be performed in parallel to positive bias)\n", + " \n", + "4. All the commands required for this example can be executed like this:\n", + "\n", + " ```\n", + " transiesta RUN_ELEC.fdf > ELEC.out\n", + " cd TS_0\n", + " cp ../C.psf .\n", + " transiesta ../RUN.fdf > TS.out\n", + " # Check that the charge is converged etc.\n", + " cp siesta.TSDE ../TS_0.5/\n", + " cd ../TS_0.5\n", + " cp ../C.psf .\n", + " transiesta -V 0.5:eV ../RUN.fdf > TS.out\n", + " # Check that it has converged...\n", + " cp siesta.TSDE ../TS_1.0/\n", + " cd ../TS_1.0\n", + " cp ../C.psf .\n", + " transiesta -V 1:eV ../RUN.fdf > TS.out\n", + " # Check that it has converged...\n", + " ```\n", + " After every calculation go through the output to ensure everything is well behaved. Note that the output of a bias calculation is different from a non-bias calculation, they are more detailed.\n", + "5. An additional analysis (before going to the transport calculations) is to calculate the potential drop in the junction. In sisl this is easy:\n", + "```\n", + "v0 = sisl.Grid.read('TS_0/ElectrostaticPotential.grid.nc')\n", + "vd = (sisl.Grid.read('TS_0.5/ElectrostaticPotential.grid.nc') - v0) * sisl.unit.siesta.unit_convert('Ry', 'eV')\n", + "``` \n", + "`vd` then contains the potential profile (in eV). To save it as a linear average bias file (remember transport is along first lattice vector) you can execute the following:\n", + "```\n", + "vd = vd.average(1).average(2)\n", + "dv = (vd.dcell[0, :] ** 2).sum() ** .5\n", + "sisl.io.TableSile('potential_0.5.dat', 'w').write_data(dv * np.arange(vd.shape[0]), vd.grid[:, 0, 0])\n", + "```\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This completes all non-equilibrium calculations for this example. However, we have only calculated the non-equilibrium density and thus, the non-equilibrium Hamiltonian. We still need to calculate the transport properties for all bias'. Basically we can only calculate the transport properties at the calculated bias values, but generally we are interested in a full $I(V)$ curve. \n", + "As a user, one has three options:\n", + "\n", + "1. Calculate $I(V)$ for the calculated biases $V$ and perform an interpolation of $I(V)$, or\n", + "2. Interpolate the Hamiltonian to calculate $I(V)$ for all the required biases, or\n", + "3. Calculate all non-equilibrium Hamiltonians.\n", + "\n", + "The first option is by far the fastests and easiest with a sometimes poor accuracy; the second option is relatively fast, and drastically improves the accuracy; while the last option is the most accurate but may sometimes be non-feasible due to insufficient computational resources.\n", + "\n", + "In the following we will calculate all transmissions using option 2. Look in the manual for the options regarding the interpolation (there are two interpolation methods). \n", + "Go through `RUN.fdf` and find the respective block that tells TBtrans to interpolate the Hamiltonian, also notice how the energy-grid is defined in TBtrans. You will notice that this is the fastest way to calculate the $I(V)$ curve for *any* bias, it however, will not calculate any physical quantities outside the bias window.\n", + "\n", + "Now complete the exercise by running TBtrans for $V\\in\\{0, 0.1, \\dots, 1\\}$ eV. Note that instead of changing the applied bias in the fdf-file, one can do:\n", + "\n", + " tbtrans -V 0.4:eV RUN.fdf\n", + " \n", + "to apply $V=0.4\\,\\mathrm{eV}$, *any* fdf-flag specified on the command line has precedence! The `:` is to denote an effective space, otherwise you will have to encapsulate in quotation marks `tbtrans -V \"0.4 eV\" RUN.fdf`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you do not want to run the commands manually, you may use this loop command:\n", + "```\n", + "for V in $(seq 0 0.1 1) ; do\n", + " d=TBT_${V//,/.}\n", + " mkdir $d\n", + " cd $d\n", + " tbtrans -V \"${V//,/.}:eV\" ../RUN.fdf > TBT.out\n", + " cd ../\n", + "done\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Plot the transmissions\n", + "\n", + "Calculate the current for all $V$, then plot it. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "V = np.arange(0, 1.05, 0.1)\n", + "I = np.empty([len(V)])\n", + "for i, v in enumerate(V):\n", + " I[i] = sisl.get_sile('TBT_{:.1f}/siesta.TBT.nc'.format(v)).current()\n", + "plt.plot(V, I * 1e6); \n", + "plt.xlabel('Bias [V]'); plt.ylabel(r'Current [$\\mu\\mathrm{A}$]');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Why is the current $0$ for $V<0.8$? \n", + "*Hint*: see [example 1](../01/run.ipynb)." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/09/run.py b/09/run.py deleted file mode 100644 index da92713..0000000 --- a/09/run.py +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env python - -import sisl - -# This example is _exactly_ equivalent to 08. -# The purpose is to try and perform a bias calculation -# on pristine graphene. -graphene = sisl.geom.graphene(1.44, orthogonal=True) - -elec = graphene.tile(2, axis=0) -elec.write('STRUCT_ELEC.fdf') -elec.write('STRUCT_ELEC.xyz') - -device = elec.tile(3, axis=0) -device.write('STRUCT_DEVICE.fdf') -device.write('STRUCT_DEVICE.xyz') diff --git a/10/run.ipynb b/10/run.ipynb new file mode 100644 index 0000000..080db3f --- /dev/null +++ b/10/run.ipynb @@ -0,0 +1,115 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import sisl\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create the input required for a full TranSiesta calculation. Here you should create your first system with these settings:\n", + "\n", + "- A pristine bulk Carbon-chain system.\n", + "- The Carbon-chain should have a bond-length of $1.5\\,\\mathrm{Ang}$\n", + "- You should decide in which direction the semi-infinite directions are.\n", + "\n", + "Please use the script `tselecs.sh` to create the relevant input for TranSiesta. \n", + "Below you will find a skeleton code that only requires editing from your side." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "C = sisl.Atom(6)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- Create the electrode.\n", + " Supply the coordinates and the supercell.\n", + " Note that you _have_ to decide the semi-infinite\n", + " direction by ensuring the electrode to \n", + " be periodic in the semi-infinite direction. You should also ensure *nearest neighbour couplings* **only**!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "elec = sisl.Geometry(,\n", + " atom=C,\n", + " sc=)\n", + "elec.write('ELEC.fdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- Create the device.\n", + " The basic unit-cell for a fully periodic device\n", + " system is 3-times the electrode size. \n", + " *HINT*: If you are not fully sure why this is, please see [example 8](../08/run.ipynb)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "device = elec.tile(3, axis=)\n", + "device.write('DEVICE.fdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercises\n", + "\n", + "- Perform the TranSiesta calculation\n", + "- Create inputs for TBtrans to calculate the Green function density of states, and specify the energy range from $-10$ eV to $10$ eV.\n", + "- Plot the transmission and DOS" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/10/run.py b/10/run.py deleted file mode 100644 index 09970b2..0000000 --- a/10/run.py +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env python - -import sisl - -# In this example you should create a 1D chain -# of Carbon and perform a transiesta calculation. -C = sisl.Atom(6) - -# The chain should consist of Carbon atoms with -# an inter-atomic distance of 1.5 Å. - -# 1. Create the electrode -# Supply the coordinates, -# Note that you _have_ to decide the semi-infinite -# direction by ensuring the electrode to -# be periodic in the semi-infinite direction. -elec = sisl.Geometry(, - atom=C, - sc=) -elec.write('ELEC.fdf') - -# 2. Create the device -# The basic unit-cell for a fully periodic device -# system is 3-times the electrode size. -# HINT: If you are not fully sure why this is, please -# re-iterate on example 08. -device = elec.tile(3, axis=) -device.write('DEVICE.fdf') - - - - diff --git a/11/RUN.fdf b/11/RUN.fdf index 6ec7f51..c031c65 100644 --- a/11/RUN.fdf +++ b/11/RUN.fdf @@ -1,7 +1,12 @@ SolutionMethod transiesta # This helps the block-tri-diagonal partitioning. -TS.BTD.Pivot elec-x-1+elec-y-1 +# Please try and run transiesta like this: +# transiesta -fdf TS.Analyze RUN.fdf > analyze.out +# and look at the bottom of the output. +# The above command will try (nearly) *all* different pivoting +# schemes, and then you can select the best performing one. +TS.BTD.Pivot PCG TS.Voltage 0 eV # Although we have 4 electrodes we will only diff --git a/11/run.ipynb b/11/run.ipynb new file mode 100644 index 0000000..7b098fc --- /dev/null +++ b/11/run.ipynb @@ -0,0 +1,133 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import sisl\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Perform a 4-terminal calculation with 2 crossed Carbon chains. \n", + "Running a two-terminal calculation with TranSiesta is a breeze compared to running $N>2$-electrode calculations. When performing $N>2$-electrode calculations an endless combination of different applied bias settings become apparent. \n", + "This will be reflected in an even more verbose input for TranSiesta to describe all the 4 electrodes, contours, chemical potentials etc.\n", + "\n", + "This example will primarily create the geometries, and then you should perform data analysis." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "chain = sisl.Geometry([[0,0,0]], atom=sisl.Atom[6], sc=[1.4, 1.4, 15])\n", + "elec_x = chain.tile(4, axis=0)\n", + "elec_x.add_vacuum(15 - 1.4, 1).write('ELEC_X.fdf')\n", + "elec_y = chain.tile(4, axis=1)\n", + "elec_y.add_vacuum(15 - 1.4, 0).write('ELEC_Y.fdf')\n", + "chain_x = elec_x.tile(4, axis=0)\n", + "chain_y = elec_y.tile(4, axis=1)\n", + "chain_x = chain_x.translate(-chain_x.center(what='cell'))\n", + "chain_y = chain_y.translate(-chain_y.center(what='cell'))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "device = chain_x.append(chain_y.translate([0, 0, -chain.cell[2, 2] + 2.1]), 2)\n", + "# Correct the y-direction vacuum\n", + "device = device.add_vacuum(chain_y.cell[1, 1] - chain_x.cell[1,1], 1)\n", + "device = device.translate(device.center(what='cell') + [.7] * 3)\n", + "device.write('DEVICE.fdf')\n", + "device.write('DEVICE.xyz')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercises\n", + "\n", + "- Try and extract similar data as done in [example 6](../06/run.ipynb). At least plot one of the DOS quantities\n", + "- Extend your DOS plot to be *orbitally resolved* by extracting only subsets of DOS, in this regard also play with the `norm` keyword, try and plot the DOS per $s$, sum of $p$, etc. for the orbitals on the Carbon atoms.\n", + "\n", + " - A file named `siesta.ORB_INDX` have been created by Siesta which contains the orbital information per atom, this should give you access to the indices for extraction." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "tbt = sisl.get_sile('siesta.TBT.nc')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- Plot bond (vector) currents, below is a skeleton code to do this, look in the `sisl` manual for extraction of *vector current*" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "xy = tbt.geometry.xyz[:, :]\n", + "J = # fill in the corresponding code here ()\n", + "plt.quiver(xy[:, 0], xy[:, 1], J12[:, 0], J12[:, 1]);" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/11/run.py b/11/run.py deleted file mode 100644 index 2e9d4d6..0000000 --- a/11/run.py +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/env python - -import sisl - -# This example is created by two crossed 1D chains of -# carbon. -chain = sisl.Geometry([[0,0,0]], atom=sisl.Atom[6], sc=[1.4]) - -# Add some vacuum along the Z-direction -chain = chain.append(sisl.SuperCell([15-1.4]), axis=2) - -# Create the electrodes -elec_x = chain.tile(4, axis=0) -elec_y = chain.tile(4, axis=1) - -# Create the long chains -chain_x = elec_x.tile(4, axis=0) -chain_y = elec_y.tile(4, axis=1) - -# Move both chains to the center -# This makes it easier to align the chains -chain_x = chain_x.translate(-chain_x.center(which='cell')) -chain_y = chain_y.translate(-chain_y.center(which='cell')) - -# Create the full device -# This is required for correcting the supercell -sc = chain_x.sc.copy() -sc.cell[2,2] = 2.1 -sc.cell[1,1] = chain_y.cell[1,1] -device = chain_x.copy() -device.set_supercell(sc) -device = device.append(chain_y, 2).append(sisl.SuperCell([15-2.1]), 2) -device = device.translate(device.center(which='cell')).translate([.7]*3) - -# Create the fdf files for all the geometries -elec_x = elec_x.append(sisl.SuperCell([15-1.4]), 1) -elec_x.write('ELEC_X.fdf') -elec_y = elec_y.append(sisl.SuperCell([15-1.4]), 0) -elec_y.write('ELEC_Y.fdf') -device.write('DEVICE.fdf') -device.write('DEVICE.xyz') diff --git a/12/RUN.fdf b/12/RUN.fdf index 46145a3..5c3f064 100644 --- a/12/RUN.fdf +++ b/12/RUN.fdf @@ -17,7 +17,9 @@ SolutionMethod transiesta # we HAVE to manually specify the # transiesta k-points as transiesta # cannot decide for us! -# This is an EXTREMELY important point! +# This is an EXTREMELY important point when performing +# calculations with semi-infinite directions that are +# not aligned. %block TS.kgrid.MonkhorstPack 1 0 0 0. 0 8 0 0. @@ -26,6 +28,12 @@ SolutionMethod transiesta TS.Voltage 0 eV + +# The pivoting scheme utilized will greatly +# influence the throughput +TS.BTD.Pivot PCG + + # Although we have 3 electrodes we will only # use two different chemical potentials # One for the graphene plane and one @@ -104,7 +112,7 @@ TS.Contours.Eq.Pole 2.5 eV # not have an electronic structure close to the # bulk %block TS.Atoms.Buffer - atom -2 -1 + atom [-4 -- -1] %endblock %block TS.Elec.graphene-1 @@ -125,7 +133,8 @@ TS.Contours.Eq.Pole 2.5 eV HS ELEC_CHAIN.TSHS chemical-potential chain semi-inf-direction +a3 - electrode-position end -3 + electrode-position end -5 + bulk false check-kgrid False %endblock @@ -133,7 +142,8 @@ TS.Contours.Eq.Pole 2.5 eV # For TBtrans we would like # the spectral density of states # for all electrodes. -TBT.BTD.Pivot GPS +TBT.BTD.Pivot PCG + TBT.DOS.Gf true TBT.DOS.A true TBT.DOS.A.All true diff --git a/12/run.ipynb b/12/run.ipynb new file mode 100644 index 0000000..ada4bad --- /dev/null +++ b/12/run.ipynb @@ -0,0 +1,141 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import sisl\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this example you will familiarize your-self to the concept of *buffer atoms*. A buffer atom is an atom that is completely neglected in the self-consistent calculation, but is used as an initialization for the bulk electrode regions. \n", + "\n", + "Here a pristine graphene flake will be constructed and subsequently a Carbon chain will act as an STM-like tip to simulate STM experiments.\n", + "\n", + "As the Carbon chain is terminated to vacuum, the dangling bonds will create spurious effects very different from a pristine, bulk chain. To understand why it is necessary to add buffer atoms it is useful to understand the TranSiesta method. **Any** TranSiesta calculation starts with calculating an initial guess for the Hamiltonian as input for the Green function method:\n", + "\\begin{equation}\n", + " \\mathbf G^{-1}(E) = \\mathbf S (E+i\\eta) - \\mathbf H - \\sum_i\\boldsymbol\\Sigma_i\n", + "\\end{equation}\n", + "If the initial $\\mathbf H'$ represents a Hamiltonian close to the open-boundary problem $\\mathbf H$; it will converge with a higher probability, and in much less time. Improving the initial guess Hamiltonian is time well-worth spent as TranSiesta is *much* more difficult to converge.\n", + "\n", + "As an example consider the Hamiltonian for the chain:\n", + "\n", + " C -- C -- C -- C -- C -- C ...\n", + " \n", + "It is clear that the atom closest to the vacuum region resides in a *very* different chemical and potential landscape than an atom in the middle of the chain. If TranSiesta uses the initial Hamiltonian for the chain electrode as the atom closest to the vacuum region it will be very far from convergence. So to mitigate this one can specify:\n", + "\n", + " %block TBT.Atoms.Buffer\n", + " atom [ 1 -- 4 ]\n", + " %endblock\n", + "\n", + "to remove the first 4 atoms from the calculation (note that negative indices counts from the *end*). Then the electrode will begin from the 5th atom which is relatively far from the dangling bond. This will be a *much* better initial guess for the Hamiltonian. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "graphene = sisl.geom.graphene(1.44)\n", + "elec = graphene.tile(2, axis=0)\n", + "elec.write('ELEC_GRAPHENE.fdf')\n", + "elec.write('ELEC_GRAPHENE.xyz')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "C1d = sisl.Geometry([[0,0,0]], graphene.atom[0], [10, 10, 1.4])\n", + "elec_chain = C1d.tile(4, axis=2)\n", + "elec_chain.write('ELEC_CHAIN.fdf')\n", + "elec_chain.write('ELEC_CHAIN.xyz')\n", + "chain = elec_chain.tile(4, axis=2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "device = elec.repeat(5, axis=1).tile(4, axis=0)\n", + "\n", + "# Attach the chain on-top of an atom\n", + "# First find an atom in the middle of the device\n", + "idx = device.close(device.center(what='xyz'), R=1.45)[1]\n", + "# Attach the chain at a distance of 2.25 along the third lattice vector\n", + "device = device.attach(idx, chain, 0, dist=2.25, axis=2)\n", + "# Add vacuum along chain, we really no not care how much vacuum, but it\n", + "# is costly on memory, not so much on performance.\n", + "device = device.add_vacuum(15, axis=2)\n", + "device.write('DEVICE.fdf')\n", + "device.write('DEVICE.xyz')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exercises\n", + "\n", + "- Perform all required TranSiesta calculations, first the electrodes, then the device region.\n", + "- Create a new directory for a different range of buffer atoms, from 0 to 4, start by using 4 buffer atoms. \n", + " How does convergence behave for different number of buffer atoms?\n", + " \n", + " **REMARK** there are 2 places in the fdf file you should change when changing the number of atoms (the electrode atom specification *and* the buffer atoms).\n", + "- Calculate transport properties for all (converged) TranSiesta calculations\n", + "- Plot the transmission and DOS for all TBtrans calculations, do they differ?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "tbt = sisl.get_sile('siesta.TBT.nc')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/12/run.py b/12/run.py deleted file mode 100644 index a472277..0000000 --- a/12/run.py +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env python - -import sisl - -# This example will create an STM-like setup with -# graphene as the basal plane and a carbon chain -# above to act as an STM-tip. -# (please note that in a more physical setup one -# would use other species in the tip, gold for example) - -# First we create the graphene plane -graphene = sisl.geom.graphene(1.44) - -# Create the graphene electrode -elec = graphene.tile(2, axis=0) -elec.write('ELEC_GRAPHENE.fdf') -elec.write('ELEC_GRAPHENE.xyz') - -# Create the STM tip electrode -# First we create the basic 1D chain -C1d = sisl.Geometry([[0,0,0]], sisl.Atom(6), [10, 10, 1.4]) -# Create the electrode -elec_chain = C1d.tile(4, axis=2) -elec_chain.write('ELEC_CHAIN.fdf') -elec_chain.write('ELEC_CHAIN.xyz') -# Create the full STM-tip -chain = elec_chain.tile(4, axis=2) - -# Create the device -device = elec.repeat(5, axis=1).tile(4, axis=0) - -# Attach the chain on-top of an atom -# First find an atom in the middle of the device -idx = device.close(device.center(which='cell')*[1,1,0], dR=1.45)[1] -# Attach the chain at a distance of 2.25 along the third lattice vector -device = device.attach(idx, chain, 0, dist=2.25, axis=2) -# Add vacuum along chain, we really no not care how much vacuum, but it -# is costly on memory. -device = device.append(sisl.SuperCell([15]), axis=2) - -device.write('DEVICE.fdf') -device.write('DEVICE.xyz') diff --git a/12/run.sh b/12/run.sh index 3e58873..8fcb820 100755 --- a/12/run.sh +++ b/12/run.sh @@ -10,6 +10,7 @@ do sdata siesta.TBT.nc \ --atom 21:60 --dos --ados $elec \ --atom 81:90 --dos --ados $elec \ + --atom : --dos --ados $elec \ --out atomic-DOS-$elec.dat done diff --git a/A01/run.ipynb b/A01/run.ipynb new file mode 100644 index 0000000..aab0444 --- /dev/null +++ b/A01/run.ipynb @@ -0,0 +1,47 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import sisl\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In [example 05](../05/run.ipynb) a pristine graphene flake with a hole was created.\n", + "\n", + "Here you should reproduce the results of example 05. However, instead of removing the atoms in Python and saving the Hamiltonian for the system with a hole, you should exclude the atoms via the `TBT.Atoms.Buffer` block. I.e. save the full Hamiltonian for the pristine graphene flake." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/A02/run.ipynb b/A02/run.ipynb new file mode 100644 index 0000000..c479075 --- /dev/null +++ b/A02/run.ipynb @@ -0,0 +1,154 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import sisl\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "TranSiesta allows a great variety of contours when performing the equilibrium contours\n", + "\n", + "In this example you will try and create different contours for the equilibrium part.\n", + "\n", + "The default contours are defined like this:\n", + "\n", + "```\n", + "%block TS.ChemPot.Left\n", + " mu V/2\n", + " contour.eq\n", + " begin\n", + " C-Left\n", + " T-Left\n", + " end\n", + "%endblock TS.ChemPot.Left\n", + "%block TS.ChemPot.Right\n", + " mu -V/2\n", + " contour.eq\n", + " begin\n", + " C-Right\n", + " T-Right\n", + " end\n", + "%endblock TS.ChemPot.Right\n", + "\n", + "TS.Contours.Eq.Pole 2.5 eV\n", + "%block TS.Contour.C-Left\n", + " part circle\n", + " from -40. eV + V/2 to -10 kT + V/2\n", + " points 25\n", + " method g-legendre\n", + "%endblock TS.Contour.C-Left\n", + "%block TS.Contour.T-Left\n", + " part tail\n", + " from prev to inf\n", + " points 10\n", + " method g-fermi\n", + "%endblock TS.Contour.T-Left\n", + "%block TS.Contour.C-Right\n", + " part circle\n", + " from -40. eV -V/2 to -10 kT -V/2\n", + " points 25\n", + " method g-legendre\n", + "%endblock TS.Contour.C-Right\n", + "%block TS.Contour.T-Right\n", + " part tail\n", + " from prev to inf\n", + " points 10\n", + " method g-fermi\n", + "%endblock TS.Contour.T-Right\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Add a temperature gradient\n", + "\n", + "The default temperatures of the chemical potentials are the Siesta electronic temperature. TranSiesta enables to distinguish the electrodes by their chemical potential *and* their electronic temperature. I.e. the distribution functions of the electrodes may be *very* different:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def nf(E, mu, kT):\n", + " return 1 / (1 + np.exp( (E-mu) / kT ))\n", + "# Generate two different distributions\n", + "E = np.linspace(-2, 2, 100)\n", + "plt.plot(E, nf(E, 0.25, 0.025), label='V=0.25, kT=0.025');\n", + "plt.plot(E, nf(E, -0.25, 0.05), label='V=-0.25, kT=0.05');\n", + "plt.plot(E, nf(E, 0.25, 0.025) - nf(E, -0.25, 0.05), '.', label=r'$\\delta n_F$');\n", + "plt.legend();" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When implementing this in the input-options it will likely fail if one of the electrodes has a temperature higher than the `TS.ElectronicTemperature` (defaults to `ElectronicTemperature`). This is because TranSiesta will fail if one of the tail integrals in the non-equilibrium contour is not at least 5 kT from the respective chemical potential, hence correct the non-equilibrium contour input." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Reduce number of equilibrium contours\n", + "\n", + "Instead of using 2 contours *per chemical potential* one can reduce it to 2 contours (in total). I.e. the chemical potentials shares the same contours. Note however, in this case one *cannot* use the Gauss-Fermi quadrature for the tail part of the complex contour. Hence choose something different than `g-fermi`.\n", + "\n", + "Copy [example 09](../09/run.ipynb) and adapt the contours such that there are only 2 contours regardless of the applied bias. When testing various contours, you can add `TS.Analyze` to the input to make it quite after the analyzation step. This will also be after the corresponding `siesta.TSCCEQ*` files are created.\n", + "\n", + "You can use the following line to read in the contour data-points:\n", + "\n", + " CC = sisl.io.TableSile('<>/siesta.TSCCEQ-Left').read_data()\n", + " \n", + "where `CC` is a matrix variable with 4 rows:\n", + "\n", + "| `CC[0, :]` | `CC[1, :]` | `CC[2, :]` | `CC[3, :]` | \n", + "| :---: | :---: | :---: | :---: |\n", + "| Real energy | Imaginary energy | Real weight | Imaginary weight |" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/A03/run.ipynb b/A03/run.ipynb new file mode 100644 index 0000000..f6d5486 --- /dev/null +++ b/A03/run.ipynb @@ -0,0 +1,58 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import sisl\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this example you should create a square lattice with 4 (or 6) electrodes in a Hall-bar like configuration.\n", + "\n", + "Simply create the device and only add the magnetic file (see [example 07](../07/run.ipynb)) once you have finalized the calculation of the transport in the 4(6) terminal device.\n", + "\n", + "Here is the square lattice that you can use as a precursor for the full structure:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sq = sisl.Geometry([.5] * 3, sisl.Atom(1, R=1.), sc=sisl.SuperCell([1., 1., 10.], nsc=[3, 3, 1]))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/A04/run.ipynb b/A04/run.ipynb new file mode 100644 index 0000000..258677f --- /dev/null +++ b/A04/run.ipynb @@ -0,0 +1,90 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import sisl\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the first couple of examples we thave *played* with the graphene lattice and nearest neighbour interaction. \n", + "\n", + "In this example you should compare the band-structure of a nearest neighbour graphene model and a 3rd nearest neighbour model.\n", + "\n", + "To help you I here list the tight-binding parameters that you should use (see [Hancock et. al](http://www.dx.doi.org/10.1103/PhysRevB.81.245402)):\n", + "\n", + "| | $t_1$ | $t_2$ | $t_3$ | $s_1$ | $s_2$ | $s_3$ |\n", + "| -- | -- | -- | -- | -- | -- | -- |\n", + "| A | 2.7 |\n", + "| D | 2.7 | 0.2 | 0.18 |\n", + "| F | 2.7 | 0.09 | 0.27 | 0.11 | 0.045 | 0.065 | \n", + "\n", + "Note that we have listed 3 tight-binding model parameters, $t_i$ is the coupling to the $i$th nearest neighbour. \n", + "Sets A and D are *orthogonal* basis sets while F is a non-orthogonal basis set. \n", + "Start by examining set A and D together, then if you wish, try out the non-orthogonal basis set.\n", + "\n", + "When creating Hamiltonian parameters for the 3rd nearest neighbour model it is imperative that the orbital has the correct radius. The default radius of the graphene orbital is the bond-distance (1.42), i.e." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(sisl.geom.graphene().atom)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "lists that the maximum orbital radius is 1.43420. Notice it is slightly above the actual bond-distance. This is because we are dealing with floating point numbers where it is crucial to have a certain margin of error when calculating the distance between two atoms (especially for large structures), hence we can without problems increase the radius by a fraction of an Angstrom.\n", + "\n", + "In the 3rd nearest neighbour model it is important to increase the range to capture the distance to the 3rd nearest neighbour. \n", + "\n", + "1. First figure out the distance (either by geometry, or by using `.distance` function with a *very large* `R` value)\n", + "2. Create a graphene unit cell with the correct radius for the Carbon atom (`Atom(6, R=...)`) \n", + " There are multiple ways of doing this, the eaisest is to create the geometry from scratch. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/install_tutorial.sh b/install_tutorial.sh index 5b9c587..32b48ce 100755 --- a/install_tutorial.sh +++ b/install_tutorial.sh @@ -1,22 +1,22 @@ #!/bin/bash -url=www.student.dtu.dk/~nicpa/sisl/workshop/16 +url=www.student.dtu.dk/~nicpa/sisl/workshop/17 function _help { - echo "This script may be used to install the dependencies for" - echo "the tutorial such as Python, numpy, scipy and sisl." + echo "This script may be used to install the dependencies for the" + echo "tutorial such as Python, numpy, scipy matplotlib, jupyter and sisl." echo "" echo "This script is a two-step script. Please read below." echo "" - echo "If you do not Python, numpy, scipy or sisl installed you should probably run" - echo "this script in installation mode:" + echo "If you do not have Python, numpy, scipy, jupyter, matplotlib or sisl installed" + echo "you should probably run this script in installation mode:" echo "" echo " $0 install" echo "" echo "If you have a working Python installation with pip you may only need" echo "to run" echo "" - echo " pip install --upgrade numpy scipy netCDF4 sisl" + echo " pip install --upgrade numpy scipy matplotlib netCDF4 jupyter sisl" echo "" echo "Once the above steps are fulfilled you should run the download part" echo "of the script. It will download the required files for the tutorial:" @@ -75,7 +75,8 @@ case $1 in if [ $? -eq 0 ]; then mv $cwd/new_$base $cwd/$base chmod u+x $cwd/$base - echo "Succesfully updated the script..." + echo "" + echo "Successfully updated the script..." rm $cwd/old_$base fi exit 0 @@ -87,7 +88,7 @@ case $1 in echo "###########################################" echo "# Unknown argument: $1" echo "#" - echo "# Should be either 'install' or 'download'" + echo "# Should be either 'install', 'update' or 'download'" echo "#" echo "###########################################" echo "" @@ -102,16 +103,21 @@ function linux_install { # First ensure that the correct packages are installed for p in gcc gfortran libhdf5-dev libnetcdf-dev libnetcdff-dev python-dev python-tk python-pip python-pip-whl libatlas3-base liblapack3 libfreetype6-dev libpng12-dev - do - sudo apt-get install $p + do + sudo apt-get install $p done # Perform the Python installation - pip install --upgrade six numpy scipy matplotlib netCDF4 sisl + pip install --upgrade six numpy scipy matplotlib netCDF4 jupyter sisl if [ $? -ne 0 ]; then echo "pip failed to install the packages, will try to install" echo "in your user directory, if this fails you will have to fix it" - pip install --user --upgrade six numpy scipy matplotlib netCDF4 sisl + pip install --user --upgrade six numpy scipy matplotlib netCDF4 jupyter sisl + if [ $? -ne 0 ]; then + echo "" + echo "pip failed to install the packages, in either the global or user domain." + echo "Please try and get pip to work and re-run the installation proceduce." + fi fi # You probably need to add to the path, this is a simplistic way of @@ -120,12 +126,14 @@ function linux_install { if [ $? -eq 1 ]; then echo "" >> ~/.bashrc echo "export PATH=\$HOME/.local/bin:\$PATH" >> ~/.bashrc + echo "" echo "PLEASE RESTART YOUR SHELL!" fi grep "/.local/lib/python2.7" ~/.bashrc > /dev/null if [ $? -eq 1 ]; then echo "" >> ~/.bashrc echo "export PYTHONPATH=\$HOME/.local/lib/python2.7/site-packages:\$PYTHONPATH" >> ~/.bashrc + echo "" echo "PLEASE RESTART YOUR SHELL!" fi exit 0 @@ -162,6 +170,8 @@ function macos_install { # Now try and install gcc (it should also include gfortran) my_brew install gcc + # Ensure wget is installed + my_brew install wget --with-libressl # Add the science tap my_brew tap homebrew/science @@ -171,11 +181,16 @@ function macos_install { my_brew install python sudo easy_install pip - pip install --upgrade six numpy scipy matplotlib netCDF4 sisl + pip install --upgrade six numpy scipy matplotlib netCDF4 jupyter sisl if [ $? -ne 0 ]; then echo "pip failed to install the packages, will try to install" echo "in your user directory, if this fails you will have to fix it" - pip install --user --upgrade six numpy scipy matplotlib netCDF4 sisl + pip install --user --upgrade six numpy scipy matplotlib netCDF4 jupyter sisl + if [ $? -ne 0 ]; then + echo "" + echo "pip failed to install the packages, in either the global or user domain." + echo "Please try and get pip to work and re-run the installation proceduce." + fi fi exit 0 } @@ -218,16 +233,17 @@ function download_warning { } function dwn_file { + local rname=$1 + local outname=$1 + if [ $# -eq 2 ]; then + outname=$2 + fi if [ ! -e $1 ]; then - if [ $# -eq 2 ]; then - wget -O $2 $url/$(basename $1) - else - wget -O $1 $url/$(basename $1) - fi + wget -O $outname $url/$(basename $rname) if [ $? -eq 0 ]; then - chmod u+x $1 + chmod u+x $outname else - rm -f $1 + rm -f $outname fi fi } @@ -240,23 +256,33 @@ pushd $indir # Now download the executables mkdir -p bin + +# Download latest tutorial files +dwn_file sisl-TBT-TS.tar.gz + case $os in linux) dwn_file bin/transiesta dwn_file bin/tbtrans ;; macos) - echo Please retry this script later, the executables - echo are not present at the current moment. - #dwn_file bin/transiesta_mac bin/transiesta - #dwn_file bin/tbtrans_mac bin/tbtrans + dwn_file bin/transiesta_mac bin/transiesta + dwn_file bin/tbtrans_mac bin/tbtrans ;; esac # We will simply add it if it does not exist +# We also assume the SHELL is BASH if ! `grep $indir ~/.bashrc` ; then echo "" >> ~/.bashrc echo "# Variable for the TBT-TS-sisl workshop" >> ~/.bashrc echo "export PATH=$indir/bin:\$PATH" >> ~/.bashrc echo "" >> ~/.bashrc fi + +echo "" +echo "In folder TBT-TS-sisl-workshop you will find everything needed for the tutorial" +echo "If you use BASH (most likely) you should have transiesta and tbtrans in your path." +echo "Run (after you have restarted your shell):" +echo " which tbtrans" +echo "and check it returns $indir/bin/tbtrans" diff --git a/presentations/01/Makefile b/presentations/01/Makefile new file mode 120000 index 0000000..d0b0e8e --- /dev/null +++ b/presentations/01/Makefile @@ -0,0 +1 @@ +../Makefile \ No newline at end of file diff --git a/presentations/01/RUN.fdf b/presentations/01/RUN.fdf new file mode 100644 index 0000000..9486a2a --- /dev/null +++ b/presentations/01/RUN.fdf @@ -0,0 +1,18 @@ + +TBT.k [ 3 1 1 ] + +TBT.DOS.A +TBT.Current.Orb + +TBT.HS DEVICE.nc +%block TBT.Elec.Left + HS ELEC.nc + semi-inf-direction -a2 + electrode-position 1 +%endblock +%block TBT.Elec.Right + HS ELEC.nc + semi-inf-direction +a2 + electrode-position end -1 +%endblock + \ No newline at end of file diff --git a/presentations/01/device.tex b/presentations/01/device.tex new file mode 100644 index 0000000..73cf9a3 --- /dev/null +++ b/presentations/01/device.tex @@ -0,0 +1,71 @@ + +\subsection{NEGF Algorithm in TBtrans} + +\begin{frame}[fragile,label=algorithm] + \frametitle{Input options} + \framesubtitle{NEGF Algorithm in TBtrans} + + \begin{itemize} + \item Reduce Green function calculation to region of interest ($D$) + + \item Algorithms determined from user-requested quantities + + \end{itemize} + + \vskip 4em + + \begin{itemize} + \item Algorithm: + \end{itemize} + \begin{center} + \incg[]{tbt-algorithm} + \end{center} + + \begin{tikzpicture}[remember picture,overlay] + \node at ($(current page.center)+(2.5,1.7)$) {% + \incg[width=.7\linewidth]{inv-block3}% + }; + \end{tikzpicture} + + \doicite{Papior \etal: \doi{10.1016/j.cpc.2016.09.022}} + + \hfill\hyperlink{electrode<6>}{\beamergotobutton{Return to electrode-setup}} + +\end{frame} + +\begin{frame} + \frametitle{Input options} + \framesubtitle{NEGF Algorithm in TBtrans} + + \begin{itemize}[<+->] + \item Define $D$ via input + + \begin{tikzpicture}[thick,fixed node] + + % Define the electrode and we are done + \begin{scope} + \matrix { + \node[fdf] {\%block TBT.Atoms.Device}; \\ + \node[fdf,ind] {atom [ 1 -- 3 ]}; \\ + \node[fdf,ind] {atom 5 11}; \\ + \node[fdf,ind] {atom -19}; \\ + \node[fdf] {\%endblock}; \\ + }; + \end{scope} + \end{tikzpicture} + + \item TBtrans does everything else by it-self + \item A smaller device region drastically reduces required memory(!), and increases + throughput + + \item In non-orthogonal basis ($\SO\neq \mathbf I$) \fdf{TBT.Atoms.Device.Connect} may + be useful + + \end{itemize} + + \incg[]{tbt-algorithm} + + \doicite{Papior \etal: \doi{10.1016/j.cpc.2016.09.022}} + +\end{frame} + diff --git a/presentations/01/electrodes.tex b/presentations/01/electrodes.tex new file mode 100644 index 0000000..52002b4 --- /dev/null +++ b/presentations/01/electrodes.tex @@ -0,0 +1,553 @@ + +\subsection{Electrodes} + +\begin{frame} + \frametitle{Input options} + \framesubtitle{Electrodes} + + \begin{itemize} + \item Electrodes are defined individually, all settings are on a \emph{per electrode} basis + \item Beware of indices of electrodes in the device region + \item Beware of semi-infinite directions (the semi-infinite direction points + \emph{away} from the device region) + + \end{itemize} + +\end{frame} + +\begin{frame}[label=electrode] + \frametitle{Input options} + \framesubtitle{Electrodes} + + \only<1>{Define names of electrodes}% + \only<2>{Define each electrode}% + \only<3>{Assert that the electrode settings reflect the input\footnote{\emph{HINT}: Do \emph{NOT} specify + \texttt{used-atoms} if you use \emph{ALL} atoms!}}% + \only<4>{When reducing the used atoms, it becomes slightly more difficult}% + \only<5>{Automatically detects semi-infinite lattice vectors}% + \only<6>{Buffer atoms removed from TBtrans/TranSiesta SCF cycle}% + + \begin{tikzpicture}[thick,left/.style={densely dotted,color=bad}, + fixed node, + right/.style={color=ok}] + + % Define the electrode and we are done + \begin{scope} + \matrix { + \node[fdf] {\%block TS.Elecs}; \\ + \node[fdf,ind,lmark] (left) {Left}; \\ + \node[fdf,ind,lmark] (right) {Right}; \\ + \node[fdf,ind] {...}; \\ + \node[fdf] {\%endblock}; \\ + }; + \end{scope} + + \uncover<2->{ + \begin{scope}[xshift=4.5cm,yshift=1.5cm] + \matrix { + \node[fdf,rmark] (l) {\%block TS.Elec.Left}; \\ + \node[fdf,ind] (l-HS) {HS /}; \\ + \node[fdf,ind] {chem-pot }; \\ + \alt<3>{ + \node[fdf,ind,left] (l-pos) {elec-pos 1}; \\ + }{ + \node[fdf,ind] (l-pos) {elec-pos 1}; \\ + } + \alt<4-5>{ + \node[fdf,ind,left] (l-semi) {semi-inf-dir -a2}; \\ + }{ + \node[fdf,ind] (l-semi) {semi-inf-dir -a2}; \\ + } + \alt<4,6>{ + \node[fdf,ind,left] (l-used) {used-atoms 3}; \\ + }{ + \node[fdf,ind] (l-used) {used-atoms 4}; \\ + } + \node[fdf,ind] (l-bloch) {bloch 1 1 1}; \\ + \node[fdf,ind] (l-eta) {eta }; \\ + \node[fdf] {\%endblock};\\ + }; + \end{scope} + \draw[->] (left) -- ++(1.5,0) to[out=0,in=180] (l); + + \begin{scope}[xshift=4.5cm,yshift=-3.5cm] + \matrix { + \node[fdf,rmark] (r) {\%block TS.Elec.Right}; \\ + \node[fdf,ind] (r-HS) {HS /}; \\ + \node[fdf,ind] {chem-pot }; \\ + \alt<3>{ + \node[fdf,ind,right] (r-pos) {elec-pos end -1}; \\ + }{ + \node[fdf,ind] (r-pos) {elec-pos end -1}; \\ + } + \alt<4-5>{ + \node[fdf,ind,right] (r-semi) {semi-inf-dir +a2}; \\ + }{ + \node[fdf,ind] (r-semi) {semi-inf-dir +a2}; \\ + } + \alt<4>{ + \node[fdf,ind,right] (r-used) {used-atoms 3}; \\ + }{ + \node[fdf,ind] (r-used) {used-atoms 4}; \\ + } + \node[fdf,ind] {...}; \\ + \node[fdf] {\%endblock};\\ + }; + \end{scope} + + \draw[->] (right) -- ++(1,0) to[out=0,in=180] (r); + + } + + \uncover<3->{ + \begin{scope}[xshift=12.75cm,yshift=3cm] + \begin{scope}[scale=0.7, + every node/.style={scale=0.7, + inner sep=.01ex,outer sep=.01ex, + }] + \matrix { + \node[fdf] {\%block Atomic...Species}; \\ + \node[fdf,ind] (1) {\texttt{0. 0. 0.0 1}}; \\ + \node[fdf,ind] (2) {\texttt{0. 0. 1.5 1}}; \\ + \node[fdf,ind] (3) {\texttt{0. 0. 3.0 1}}; \\ + \node[fdf,ind] (4) {\texttt{0. 0. 4.5 1}}; \\ + \node[fdf] {\%endblock};\\ + \node[fdf] {\%block LatticeVectors}; \\ + \node[fdf,ind] {\texttt{ 0. 10. 0.}}; \\ + \alt<5>{ + \node[fdf,ind,rmark] (e-A2) {\texttt{ 0. 0. 6.}}; \\ + }{ + \node[fdf,ind] (e-A2) {\texttt{ 0. 0. 6.}}; \\ + } + \node[fdf,ind] {\texttt{10. 0. 0.}}; \\ + \node[fdf] {\%endblock};\\ + }; + \end{scope} + + + \begin{scope}[yshift=-5cm,scale=0.7, + every node/.style={scale=0.7, + inner sep=.01ex,outer sep=.01ex, + }] + \matrix { + \node[fdf] {\%block Atomic...Species}; \\ + \alt<6>{ + \node[fdf,ind,gray,rmark] (L1) {\texttt{0. 0. 0.0 1}}; \\ + }{ + \node[fdf,ind] (L1) {\texttt{0. 0. 0.0 1}}; \\ + } + \node[fdf,ind] (L2) {\texttt{0. 0. 1.5 1}}; \\ + \node[fdf,ind] (L3) {\texttt{0. 0. 3.0 1}}; \\ + \node[fdf,ind] (L4) {\texttt{0. 0. 4.5 1}}; \\ + \node[fdf,ind] {\texttt{0. 0. 6.0 1}}; \\ + \node[fdf,ind] {\texttt{0. 0. 7.5 1}}; \\ + \node[fdf,ind] {\texttt{0. 0. 9.0 1}}; \\ + \node[fdf,ind] {\texttt{0. 0. 10.5 1}}; \\ + \node[fdf,ind] {\texttt{0. 0. 12.0 1}}; \\ + \node[fdf,ind] {\texttt{0. 0. 13.5 1}}; \\ + \node[fdf,ind] (R4) {\texttt{0. 0. 15.0 1}}; \\ + \node[fdf,ind] (R3) {\texttt{0. 0. 16.5 1}}; \\ + \node[fdf,ind] (R2) {\texttt{0. 0. 18.0 1}}; \\ + \node[fdf,ind] (R1) {\texttt{0. 0. 19.5 1}}; \\ + \node[fdf] {\%endblock};\\ + \node[fdf] {\%block LatticeVectors}; \\ + \alt<5>{ + \node[fdf,ind,rmark] (d-A1) {\texttt{ 0. 0. 21.}}; \\ + }{ + \node[fdf,ind] (d-A1) {\texttt{ 0. 0. 21.}}; \\ + } + \node[fdf,ind] {\texttt{ 0. 10. 0.}}; \\ + \node[fdf,ind] {\texttt{10. 0. 0.}}; \\ + \node[fdf] {\%endblock};\\ + }; + \end{scope} + \end{scope} + } + + + \only<3>{ + \draw[decorate, decoration=brace] + ($(4.south west)+(-0.1,0)$) -- ($(1.north west)+(-0.1,0)$) coordinate[midway] (full elec); + \draw[->, s >] (l-used) to[out=0,in=180] (full elec); + \draw[->, s >] (r-used) to[out=0,in=180] (full elec); + + \draw[->, s >,left] (l-pos) to[out=0,in=180] (L1); + \draw[->, s >,right] (r-pos) to[out=0,in=180] (R1); + + } + + \only<4>{ + \draw[decorate, decoration=brace,left] + ($(4.south west)+(-0.1,0)$) -- ($(2.north west)+(-0.1,0)$) coordinate[midway] (left elec); + \draw[decorate, decoration=brace,right] + ($(3.south west)+(-0.6,0)$) -- ($(1.north west)+(-0.6,0)$) coordinate[midway] (right elec); + + \draw[decorate, decoration=brace,left] + ($(L3.south west)+(-0.1,0)$) -- ($(L1.north west)+(-0.1,0)$) coordinate[midway] (left dev); + \draw[decorate, decoration=brace,right] + ($(R1.south west)+(-0.1,0)$) -- ($(R3.north west)+(-0.1,0)$) coordinate[midway] (right dev); + + \draw[->,s >,left] (l-used) to[out=0,in=180] (left elec); + \draw[->,s >,right] (r-used) to[out=0,in=180] (right elec); + + \draw[<->,s <>,left] (left elec) to[out=180,in=180] (left dev); + \draw[<->,s <>,right] (right elec) to[out=180,in=180] (right dev); + + } + + \only<5>{ + \draw[->,left,s >] (l-semi) to[out=0,in=180] (e-A2); + \draw[->,right,s >] (r-semi.east) -- ++(0.5,0) to[out=0,in=180] (e-A2); + + \draw[<->,s <>] (d-A1) to[out=180,in=180] (e-A2); + + } + + \only<6>{ + \begin{scope}[xshift=9cm,yshift=-4.5cm] + \matrix { + \node[fdf] {\%block TS.Atoms.Buffer}; \\ + \node[fdf,ind,lmark] (buf) {atom 1}; \\ + \node[fdf] {\%endblock}; \\ + }; + \end{scope} + \draw[->] (buf) to[out=0,in=180] (L1); + + \draw[decorate, decoration=brace,left] + ($(4.south west)+(-0.1,0)$) -- ($(2.north west)+(-0.1,0)$) coordinate[midway] (left ELEC); + \draw[decorate, decoration=brace,right] + ($(4.south west)+(-0.6,0)$) -- ($(1.north west)+(-0.6,0)$) coordinate[midway] (right ELEC); + + \draw[decorate, decoration=brace,left] + ($(L4.south west)+(-0.1,0)$) -- ($(L2.north west)+(-0.1,0)$) coordinate[midway] (left DEV); + \draw[decorate, decoration=brace,right] + ($(R1.south west)+(-0.1,0)$) -- ($(R4.north west)+(-0.1,0)$) coordinate[midway] (right DEV); + + \draw[->,s >,left] (l-used) to[out=0,in=180] (left ELEC); + \draw[->,s >,right] (r-used) to[out=0,in=180] (right ELEC); + + \draw[<->,s <>,left] (left ELEC) to[out=180,in=180] (left DEV); + \draw[<->,s <>,right] (right ELEC) to[out=180,in=180] (right DEV); + + } + + \end{tikzpicture} + + \only<6>{\hfill \hyperlink{algorithm<1>}{\beamergotobutton{Go to NEGF Algorithm in TBtrans}}} + +\end{frame} + +\begin{frame} + \frametitle{Input options} + \framesubtitle{Electrodes} + + \begin{center} + Let us go through that again! + \end{center} + +\end{frame} + +\againframe{electrode} + +\begin{frame} + \frametitle{Input options} + \framesubtitle{Bloch's theorem} + + \begin{block}{Bloch's theorem} + + Extend a principle system into a bigger, but otherwise equivalent system? + + \begin{center} + \def\mysize{6pt} + \begin{tikzpicture}[scale=.6] + + \node[left] at (-1,0) {$\hdots$}; + \draw[densely dashed] (-1,-.5) rectangle ++(1,1); + \draw (0,-.5) rectangle ++(1,1); + \node[below] at (.5,-.5) {$R_1$}; + \draw[densely dashed] (1,-.5) rectangle ++(1,1); + \node[right] at (2,0) {$\hdots$}; + \coordinate (small) at (3,0); + + \fill (.5,0) circle (\mysize); + \foreach \x in {-.5,1.5} { + \draw (\x,0) circle (\mysize); + } + + \begin{scope}[yshift=-2cm,xshift=-1cm] + \node[left] at (-3,0) {$\hdots$}; + \draw[densely dashed] (0,-.5) rectangle ++(-3,1); + \draw (0,-.5) rectangle ++(3,1); + \node[below] at (1.5,-.5) {$R_3$}; + \draw[densely dashed] (3,-.5) rectangle ++(3,1); + \node[right] at (6,0) {$\hdots$}; + \coordinate (big) at (7,0); + + \foreach \x in {.5,1.5,2.4} { + \fill (\x,0) circle (\mysize); + } + \foreach \x in {-2.5,-1.5,-.5,3.5,4.5,5.5} { + \draw (\x,0) circle (\mysize); + } + + \end{scope} + + \draw[->] (small) -- ++(3,0) to[out=0,in=0] node[midway, right] {?} (big); + + \end{tikzpicture} + + \end{center} + + Given a Bloch state + \begin{align*} + \psi_\kk(\rr) &= e^{i\kk\cdot\rr} u(\rr) + \\ + \shortintertext{we have} + \psi_\kk(\rr+\mathbf T) &= e^{i\kk\cdot(\rr+\mathbf T)} u(\rr+\mathbf T) = + e^{i\kk\mathbf T}\psi_\kk(\rr) + \\ + \shortintertext{In matrix notation} + \HH_{k_n}^n &=\frac1n + \; + \sum_{ + \mathclap{ + \substack{j\\ + k_j=k_n+2\pi\frac{j-1}{nR} + } + } + }^n + \qquad + \begin{bmatrix} + 1 + & + e^{-i k_jR} + & + \cdots + & + e^{-i nk_jR} + \\ + e^{i k_jR} + & + 1 + & + \cdots + & + e^{-i (n-1)k_jR} + \\ + \vdots + & + \vdots + & + \ddots + & + \vdots + \\ + e^{i nk_jR} + & + e^{i (n-1)k_jR} + & + \cdots + &1 + \end{bmatrix} + \otimes + \HH_{k_j}^1 + \end{align*} + + \end{block} + +\end{frame} + +\begin{frame} + \frametitle{Input options} + \framesubtitle{Bloch's theorem} + + \begin{itemize} + \item Atomic ordering is important, see sisl \texttt{Geometry.repeat} for details + \item $k$-point sampling is important, \emph{has} to sample equivalently + \end{itemize} + + \begin{center} + \def\mysize{6pt} + \begin{tikzpicture}[scale=.6, fixed node] + + \uncover<3->{ + \draw[densely dashed] (-1,-.5) rectangle ++(1,2); + \draw (0,-.5) rectangle ++(1,2); + \node[below] at (.5,-.5) {$R_1$}; + \draw[densely dashed] (1,-.5) rectangle ++(1,2); + + \fill (.5,0) circle (\mysize) node[above right] {1}; + \fill (.5,1) circle (\mysize) node[above right] {2}; + \foreach \x in {-.5,1.5} { + \draw (\x,0) circle (\mysize); + \draw (\x,1) circle (\mysize); + } + + \begin{scope}[yshift=-3cm] + \matrix { + \node[fdf] {\%block kgrid.MonkhorstPack}; \\ + \node[fdf,ind] {9 \mbox{} \mbox{} 0 0}; \\ + \node[fdf,ind] {0 100 0}; \\ + \node[fdf,ind] {0 \mbox{} \mbox{} 0 1}; \\ + \node[fdf] {\%endblock}; \\ + }; + \end{scope} + } + + \begin{scope}[xshift=8cm] + + \draw[densely dashed] (0,-.5) rectangle ++(-3,2); + \draw (0,-.5) rectangle ++(3,2); + \node[below] at (1,-.5) {$R_3$}; + \draw[densely dashed] (3,-.5) rectangle ++(3,2); + \draw[->] (6.5, 0) -- node[right] {transport} ++(0,1); + + \node[above] at (1.5,1.5) {\color{blue!60!black}\emph{device region electrode}}; + \only<1-2>{ + \fill (.5,0) circle (\mysize); + \fill (1.5,0) circle (\mysize); + \fill (2.5,0) circle (\mysize); + \fill (.5,1) circle (\mysize); + \fill (1.5,1) circle (\mysize); + \fill (2.5,1) circle (\mysize); + } + \uncover<3->{ + \fill (.5,0) circle (\mysize) node[above right] {1}; + \fill (1.5,0) circle (\mysize) node[above right] {2}; + \fill (2.5,0) circle (\mysize) node[above right] {3}; + \fill (.5,1) circle (\mysize) node[above right] {4}; + \fill (1.5,1) circle (\mysize) node[above right] {5}; + \fill (2.5,1) circle (\mysize) node[above right] {6}; + } + \foreach \x in {-2.5,-1.5,-.5,3.5,4.5,5.5} { + \draw (\x,0) circle (\mysize); + \draw (\x,1) circle (\mysize); + } + + \uncover<2->{ + \begin{scope}[yshift=-3cm] + \matrix { + \node[fdf] {\%block kgrid.MonkhorstPack}; \\ + \node[fdf,ind] {3 \mbox{} \mbox{} 0 0}; \\ + \node[fdf,ind] {0 100 0}; \\ + \node[fdf,ind] {0 \mbox{} \mbox{} 0 1}; \\ + \node[fdf] {\%endblock}; \\ + }; + \end{scope} + } + + \end{scope} + + \end{tikzpicture} + + \vskip 1em + + \uncover<4->{ + \begin{tikzpicture}[ft/.style 2 args={ + out=-90,in=90,out looseness=####1, + in distance=1.5cm,in looseness=####2, + }, + ks/.style={font=\scriptsize}, + my scale/.style={scale=1}, + my scale,mt/.style={ft={.2}{.2}},hl/.style={line width=2.5pt}] + + % k_3 + \node[right=4pt] at (6,3) {$k_1$, $R_1$}; + % Highlight sections + \draw[hl,blue!80!black] (0,3) -- ++(1,0); + \draw[hl,blue!80!black] (5,3) -- ++(1,0); + \draw[hl,red!70!black] (1,3) -- ++(1,0); + \draw[hl,red!70!black] (4,3) -- ++(1,0); + \draw[hl,green!70!black] (2cm,3) -- ++(2,0); + \foreach \x in {0,...,6} + \draw (\x,3cm-3pt) -- ++(0,6pt); + + \node[above,ks] at (0,3) {$\Gamma$}; + \node[above,ks] at (1,3) {$\frac16$}; + \node[above,ks] at (2,3) {$\frac13$}; + \node[above,ks] at (3,3) {$\frac12$}; + \node[above,ks] at (4,3) {$\frac23$}; + \node[above,ks] at (5,3) {$\frac56$}; + \node[above,ks] at (6,3) {$\Gamma$}; + + \foreach \x in {0,2,...,4} + \draw[->] (\x,3cm-4pt) to[mt] (0,4pt); + + % k_1 + \draw (0,0) -- ++(2,0) node[right=4pt] {$k_3$, $R_3=3R_1$}; + \foreach \x in {0,1,2} + \draw (\x,-2pt) -- ++(0,4pt); + + \node[below,ks] at (0,0) {$\Gamma$}; + \node[below,ks] at (1,0) {$\frac12$}; + \node[below,ks] at (2,0) {$\Gamma$}; + + % dk - + \foreach \x in {0,2,...,4} { + \draw[->,densely dashed] (\x cm + 1.5cm,3cm-4pt) to[mt] (1.5,4pt); + } + + % dk + + \foreach \x in {0,2,...,4} { + \draw[->,densely dotted] (\x cm + .5cm,3cm-4pt) to[mt] (.5,4pt); + } + + \draw[<->] (3,.7) to[out=0,in=180] node[sloped,above] {folding} (7.5,1.1); + + % Draw shifted structure + \begin{scope}[xshift=8cm] + + % k_3 + % Highlight sections + \draw[hl,draw=blue!80!black] (0,3) -- ++(1,0); + \draw[hl,draw=blue!80!black] (1,1) -- ++(1,0); + \draw[hl,draw=red!70!black] (1,3) -- ++(1,0); + \draw[hl,draw=red!70!black] (0,1) -- ++(1,0); + \draw[hl,draw=green!70!black] (0,2) -- ++(2,0) node[right=8pt] {$k_1$, $R_1$}; + + \foreach \y in {3,2,1} { + \foreach \x in {0,...,2} + \draw (\x,\y cm-3pt) -- ++(0,6pt); + } + + % Draw connecting lines + \foreach \y in {3,2} + \draw[gray] (2,\y) to[out=-15,in=165] (0,\y cm - 1cm); + + \node[above,ks] at (0,3) {$\Gamma$}; + \node[above,ks] at (1,3) {$\frac16$}; + \node[above,ks] at (2,3) {$\frac13$}; + \node[above,ks] at (0,2) {$\frac13$}; + \node[above,ks] at (1,2) {$\frac12$}; + \node[above,ks] at (2,2) {$\frac23$}; + \node[above,ks] at (0,1) {$\frac23$}; + \node[above,ks] at (1,1) {$\frac56$}; + \node[above,ks] at (2,1) {$\Gamma$}; + + % Draw everything again + % k_1 + \draw (0,0) -- ++(2,0) node[right=4pt] {$k_3$, $R_3=3R_1$}; + \foreach \x in {0,1,2} + \draw (\x,-3pt) -- ++(0,6pt); + + \node[below,ks] at (0,0) {$\Gamma$}; + \node[below,ks] at (1,0) {$\frac12$}; + \node[below,ks] at (2,0) {$\Gamma$}; + + % draw band-crossings + \draw[->,densely dashed] (1.5cm,3cm-4pt) to[mt] (1.5,2pt); + \draw[->,densely dotted] (.5cm,3cm+-4pt) to[mt] (.5,2pt); + + \end{scope} + \end{tikzpicture} + } + \end{center} + + \doicite{Papior \& Brandbyge: \doi{10.11581/DTU:00000025}} + +\end{frame} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "talk" +%%% End: diff --git a/presentations/01/green.tex b/presentations/01/green.tex new file mode 100644 index 0000000..5659507 --- /dev/null +++ b/presentations/01/green.tex @@ -0,0 +1,289 @@ +\section{Green function theory} + +\begin{framenologo} + \frametitle{Green function theory} + \tableofcontents[currentsection] +\end{framenologo} + +\subsection{Introduction} + +\begin{frame} + \frametitle{Green function} + \framesubtitle{Introduction} + + \begin{itemize}[<+->] + \item % + The single particle Green function may be written as: + \begin{equation*} + [(E+\im\eta)\ID - \HH_\kk]\G_\kk(E) = \ID + \end{equation*} + + \item% + This may be rewritten in terms of the eigenstates + \begin{equation*} + \G_\kk(E) = \sum_i \frac{|\psi_{i,\kk}\rangle\langle \psi_{i,\kk}|}{E+\im\eta-\E_{i,\kk}} + \end{equation*} + + \item% + Taking the imaginary part of the Green function yields + \begin{align*} + \Im \G_\kk(E) &= -\sum_i |\psi_{i,\kk}|^2\mathfrak{L}_{i,\kk}(E) + \\ + \mathfrak{L}_{i,\kk}(E) &= \frac{\eta}{(E-\E_{i,\kk})^2 + \eta^2} + \end{align*} + + \uncover<+->{ + \begin{center} + \begin{tikzpicture}[my fill/.style={fill=good}, + font=\footnotesize] + \begin{axis}[width=.7\textwidth,height=3.5cm,% + xmin=-1,xmax=1,ymin=0,xlabel=Energy] + \addplot[black,smooth,my fill] table {../data/lorentzian.dat}; + \addlegendentry{$\mathfrak{L}$} + \draw[<->] (axis cs:-0.05, {.5/0.05}) -- node[below=5pt] {$2\eta$} + (axis cs:0.05,{.5/0.05}); + \node[my fill] at (axis cs:0.5, 10) {$\int=\pi$}; + \end{axis} + \end{tikzpicture} + \end{center} + } + \end{itemize} + +\end{frame} + + +\subsection{Rules of integration} + +\begin{frame}[label=integration] + \frametitle{Green function} + \framesubtitle{Rules of integration -- Energy} + + \begin{block}{Numeric integration of Green function} + \small + \begin{equation*} + \frac{-1}\pi\iint_{E'}^{E''} \dd E\dd \kk\Im \G_\kk(E) \approx \frac{-1}\pi + \sum_\kk\delta\kk\sum_j^{(E''-E')/\delta E} \delta E \Im \G_\kk(E'+j\delta E) + \end{equation*} + + \uncover<2->{ + Are there any problems here? + \begin{itemize} + \item What if $\delta E\ll \eta$? + + \uncover<3->{ + \textcolor{good}{Good!} The energy spacing is much smaller than FWHM. + } + + \item What if $\delta E\gg \eta$? + + \uncover<3->{ + \textcolor{bad}{Bad!} The energy spacing is much larger than FWHM. Dependent on the + initial $E'$ you will find different DOS as some eigenstates may be passed. + } + + \item What if $\delta E\approx \eta$? + + \uncover<3->{ + \textcolor{ok}{Ok!} The energy spacing is half-width at half-maximum. This will + typically yield a fine integration. + } + \end{itemize} + + \begin{center} + \begin{tikzpicture}[my fill/.style={fill=good}, + font=\footnotesize] + \begin{axis}[width=.7\textwidth,height=3.5cm,% + xmin=-1,xmax=1,ymin=0,xlabel=Energy] + \addplot[black,smooth,my fill] table {../data/lorentzian.dat}; + \addlegendentry{$\mathfrak{L}$} + \draw[<->] (axis cs:-0.05, {.5/0.05}) -- node[below=5pt] {$2\eta$} + (axis cs:0.05,{.5/0.05}); + \node[my fill] at (axis cs:0.5, 10) {$\int=\pi$}; + \end{axis} + \end{tikzpicture} + \end{center} + } + + \end{block} + + \uncover<3>{\hfill\hyperlink{DOS<3>}{\beamergotobutton{Return to DOS}}} + +\end{frame} + + +\begin{frame} + \frametitle{Green function} + \framesubtitle{Rules of integration -- Brillouin Zone} + + + \begin{block}{Numeric integration of Green function} + \small + \begin{equation*} + \frac{-1}\pi\iint_{E'}^{E''} \dd E\dd \kk\Im \G_\kk(E) \approx \frac{-1}\pi + \sum_\kk\delta\kk\sum_j^{(E''-E')/\delta E} \delta E \Im \G_\kk(E'+j\delta E) + \end{equation*} + + \begin{itemize} + \item% + The Brillouin zone integration is just as important as the energy integration. + + \item% + Prior understanding of the electronic structure of the system is \emph{important}! + + \item<2->% + Choose $\delta\kk$ such that band-energies $E_\kk - + E_{\kk+\delta\kk}\approx \eta$. Otherwise band features will not be captured. + + \end{itemize} + + \end{block} + + \begin{block}<3->{Difference between diagonalisation and Green function methods} + + \begin{columns}[t] + \column{.4\linewidth} + + \begin{center} + Diagonalization + + \Large 1D-sampling + \end{center} + + $k$-points, all energy-eigenvalues + + \column{.4\linewidth} + + \begin{center} + Green functions + + \Large 2D-sampling + \end{center} + + $k$ and $E$-points are both required to be sampled + + \end{columns} + + \end{block} + +\end{frame} + + +\subsection{Advancing to Non-Equilibrium Green Function} + +\begin{frame} + \frametitle{Advancing $\to$ NEGF} + + \begin{block}{Single particle Green function} + \begin{equation*} + [(E+\im\eta)\ID - \HH_\kk]\G_\kk(E) = \ID + \end{equation*} + \end{block} + + \begin{block}{Non-equilibrium Green function} + \begin{equation*} + [(E+\im\eta)\SO - \HH_\kk - \sum_\idxE \SE_{\idxE,\kk}(E-\mu_\idxE)]\G_\kk(E) = \ID + \end{equation*} + + Additional terms: + \begin{itemize} + \item% + $\SO$ is the \emph{overlap matrix} which is needed for non-orthogonal basis sets. + + \item% + $\SE$ is the \emph{self-energy} which is describing semi-infinite directions + (integrating out $k$ in that direction) + + \begin{center} + + \begin{columns} + + \column{.4\textwidth} + \uncover<2->{ + + \begin{tikzpicture}[z=.5cm,>=latex,scale=.75,font=\scriptsize] + \drawcube[draw] + \begin{scope}[xshift=-3cm,x=3cm] + \begin{scope} + \drawcube[draw,densely dotted] + \end{scope} + \end{scope} + \begin{scope}[xshift=1cm,x=3cm] + \begin{scope} + \drawcube[draw,densely dotted] + \end{scope} + \end{scope} + + % Draw arrows + \node[anchor=center] at (-1.5,.5,.5) {$-\infty=\SE_\leftarrow$}; + \node[anchor=center] at (2.5,.5,.5) {$+\infty=\SE_\rightarrow$}; + % \draw[->] (.5,.5,.5) -- (1.5,.5,.5); + %\draw[->] (.5,.5,.5) -- (.5,1.5,.5); + \draw[->] (.5,.5,.5) -- (.5,.5,.1); + + \end{tikzpicture} +} + \column{.4\textwidth} + + \uncover<3->{ + \begin{tikzpicture}[z=.5cm,>=latex,scale=.75,font=\scriptsize] + \drawcube[draw] + \begin{scope}[xshift=-3cm,x=3cm] + \begin{scope}[yshift=-1cm] + \drawcube[draw,densely dotted] + \end{scope} + \begin{scope} + \drawcube[draw,densely dotted] + \end{scope} + \begin{scope}[yshift=1cm] + \drawcube[draw,densely dotted] + \end{scope} + \end{scope} + \begin{scope}[yshift=-1cm] + \drawcube[draw,densely dotted] + \end{scope} + \begin{scope}[yshift=1cm] + \drawcube[draw,densely dotted] + \end{scope} + \begin{scope}[xshift=1cm,x=3cm] + \begin{scope}[yshift=-1cm] + \drawcube[draw,densely dotted] + \end{scope} + \begin{scope} + \drawcube[draw,densely dotted] + \end{scope} + \begin{scope}[yshift=1cm] + \drawcube[draw,densely dotted] + \end{scope} + \end{scope} + + % Draw arrows + \foreach \y in {-.5,.5,1.5} { + \node[anchor=center] at (-1.5,\y,.5) {$-\infty=\SE_\leftarrow$}; + \node[anchor=center] at (2.5,\y,.5) {$+\infty=\SE_\rightarrow$}; + } + % \draw[->] (.5,.5,.5) -- (1.5,.5,.5); + \draw[->] (.5,.5,.5) -- (.5,1.5,.5); + \draw[->] (.5,.5,.5) -- (.5,.5,.1); + + \end{tikzpicture} + +} + \end{columns} + + \end{center} + + \item<4-> Self-energies have ``large'' imaginary components smearing the DOS for states + coupled to the leads. The imaginary part ($\eta$) can thus often be neglected in the + device region\footnote<4->{Not for bound states.}. + + \end{itemize} + + \end{block} + + +\end{frame} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "talk" +%%% End: diff --git a/presentations/01/introduction.tex b/presentations/01/introduction.tex new file mode 100644 index 0000000..9581dcd --- /dev/null +++ b/presentations/01/introduction.tex @@ -0,0 +1,161 @@ +\section{Motivation} + +\begin{framenologo} + \frametitle{Motivation} + \tableofcontents[currentsection] +\end{framenologo} + + +\begin{framenologo} + \frametitle{Motivation} + \framesubtitle{Current era --- Silicon} + + \begin{columns} + \begin{column}{.5\linewidth} + \begin{itemize} + + \item Silicon a governing material in electronics + + \item Transistors have scaled immensely in the last 4 decades + + \item Everyday use in all areas of our lives + + \vskip 1em + \item IBM latest technology at \SI{7}{nm} + + \item Countable number of atoms! $\le40$ + \vskip 2em + \item<2-> Problems + + \begin{itemize} + \item Features reaching single atoms + \item Energy waste, heat + \item Stability for small devices + \end{itemize} + + \vskip 2em + + \item<3-> What is next? + + \begin{itemize} + \item Further silicon development $+$ additional enhancers + \item Molecular electronics + \item Graphene electronics + \end{itemize} + + \end{itemize} + \end{column} + \begin{column}{.5\linewidth} + \begin{tikzpicture}[n/.style={anchor=west}] + + \node[n] (H) at (2,3) + {\incg[width=3cm]{human-hair}}; + \node[n] at (H.east) {\SIrange{50}{100}{\micro\metre}}; + + \node[n] (B) at (2,1) + {\incg[width=3cm]{red_blood_cell}}; + \node[n] at (B.east) {\SI{7.5}{\micro\metre}}; + + \node[n] (B) at (2,-1) + {\incg[width=2cm,rotate=90]{45nm_die_dualcore}}; + + \node[n] at (1,-4) + {\incg[width=7cm]{transistors-were-people}}; + + \end{tikzpicture} + + \end{column} + \end{columns} + + \doicite{Intel Homepage} + +\end{framenologo} + +\subsection{Transport properties of atomistic systems} + +\begin{frame}[fragile] + \frametitle{Calculating transport properties of atomistic systems} + + \begin{center} + Steady-state transport properties? + \end{center} + + \begin{columns} + \begin{column}{.5\linewidth} + \incg[clip,trim=0pt 0pt 0pt + 20cm,width=.8\linewidth]{10-1126-science-1144657-1} + \end{column} + \begin{column}{.5\linewidth} + \incg[width=.8\linewidth]{10-1021-nl202065-4} + \end{column} + \end{columns} + + \begin{center} + \uncover<2->{% + \incg[height=5cm]{tbt-nterminal} + } + \end{center} + + \uncover<3->{% + \begin{tikzpicture}[remember picture,overlay] + \node[rotate=30,inner sep=20cm,anchor=mid, + fill=white,opacity=.7,text width=20cm,align=center, + text opacity=1] at (current page.center) + {\huge We need a scalable computational model!\\ + And \dots how to model non-equilibrium?}; + \end{tikzpicture} + } + + \doicite{Williams \etal: \doi{10.1126/science.1144657}, Prins \etal: \doi{10.1021/nl202065x}} + +\end{frame} + + +\begin{framenologo} + \frametitle{Calculating transport properties of atomistic systems} + + \begin{center} + Steady-state transport properties? + \end{center} + + \begin{columns} + \begin{column}{.5\linewidth} + \incg[clip,trim=0pt 0pt 0pt + 20cm,width=.8\linewidth]{10-1126-science-1144657-1} + \end{column} + \begin{column}{.5\linewidth} + \incg[width=.8\linewidth]{10-1021-nl202065-4} + \end{column} + \end{columns} + + \begin{columns} + \begin{column}{.6\linewidth} + \begin{block}{Simulation tool requirements} + \begin{itemize} + \item Systems under non-equilibrium (applied bias) + \item Large system calculations (incorporate full device) + \item Multi-electrode devices + \end{itemize} + \end{block} + + \begin{center} + Non-Equilibrium Green function (NEGF) + \end{center} + + \end{column} + \begin{column}{.4\linewidth} + \begin{center} + \incg[height=5cm]{wos_negf_cite} + \end{center} + \end{column} + \end{columns} + + \doicite{{Williams \etal: \doi{10.1126/science.1144657}, Prins \etal: \doi{10.1021/nl202065x}},% + WebOfScience (NEGF)} + +\end{framenologo} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "talk" +%%% End: diff --git a/presentations/01/negf.tex b/presentations/01/negf.tex new file mode 100644 index 0000000..9bd4f56 --- /dev/null +++ b/presentations/01/negf.tex @@ -0,0 +1,284 @@ +\section{Non-equilibrium Green function} + +\begin{framenologo} + \frametitle{Non-equilibrium Green function} + \tableofcontents[currentsection] +\end{framenologo} + +\subsection{Variables} + +\begin{frame} + \frametitle{Non-equilibrium Green function} + \framesubtitle{Variables} + + \begin{block}<+->{Important variables in Green function techniques} + + \begin{tabular}[c]{>{$}l<{$}|l} + \idxE & electrode index + \\ + \HH_\kk & Hamiltonian + \\ + \SO_\kk & Overlap, for orthogonal basis sets equals $\mathbf I$ + \\ + \DM_\kk & Density matrix + \\ + \SE_\kk(\E)& Self-energy (not necessarily an electrode!) + \\ + \Scat_{\idxE,\kk}(\E) & Scattering matrix from $\idxE$ + \\ + \G_\kk(\E) & Green function + \\ + \Spec_{\idxE,\kk}(\E) & Spectral function originating from $\idxE$ + \\ + \T_{\idxE\mto\idxE'}(\E) & Transmission function from $\idxE$ to $\idxE'$ + \\ + \T_\idxE(\E) & Total transmission function out of $\idxE$ + \end{tabular} + + \end{block} + + \begin{block}<+->{Basic equations for Green function techniques} + \vskip-2ex +\input{../equations.tex} + \end{block} + +\end{frame} + + +\subsection{Density of states} + +\begin{frame}[label=DOS] + \frametitle{Non-equilibrium Green function} + \framesubtitle{Density of states} + + \begin{itemize} + \item Density of states over all orbitals + \begin{align*} + \mathrm{DOS}(\E) &= \Tr[\DM(\E) \SO] + \\ + \mathrm{DOS}(\E) &= -\frac1\pi\Im\Tr[\G(\E) \SO] + \\ + \mathrm{ADOS}(\E) &= \frac1{2\pi}\Re\Tr[\Spec_\idxE(\E) \SO] + \\ + \mathrm{DOS}(\E) &=\sum_\idxE \mathrm{ADOS}(\E) + \text{bound states} + \end{align*} + + \vspace{-2ex} + + \item Local density of states on orbital $\nu$ + \begin{align*} + \mathrm{DOS}_\nu(\E) &= [\DM(\E) \SO]_{\nu,\nu} + \\ + \mathrm{DOS}_\nu(\E) &= -\frac1\pi\Im[\G(\E) \SO]_{\nu,\nu} + \\ + \mathrm{ADOS}_\nu(\E) &= \frac1{2\pi}\Re[\Spec_\idxE(\E) \SO]_{\nu,\nu} + \\ + \mathrm{DOS}_\nu(\E) &=\sum_\idxE \mathrm{ADOS}_\nu(\E) + \text{bound states}_\nu + \end{align*} + + \vspace{-2ex} + + \item<2->% + The overlap matrix is extremely important when calculating the density of states! + + \item<3->% + $\SE$ broadens the DOS similarly to a large $\eta$ value, for states + coupling to the electrodes + + \end{itemize} + + \only<2>{\hfill \hyperlink{integration<3>}{\beamergotobutton{Go to Rules of + integration}}} + +\end{frame} + + +\subsection{Transmission} + +\begin{frame} + \frametitle{Non-equilibrium Green function} + \framesubtitle{Transmission} + + \begin{block}<+->{Transmission} + \begin{itemize} + \item Transmission between any two electrodes $\T_{\idxE\mto\idxE'}$ + + \item Total transmission out of any electrode $\T_\idxE$ + + \item Reflection into electrode $\RE_\idxE$, note $\mathbf 1$ is the \emph{bulk} + transmission (open channels) + + \end{itemize} + \vskip -2ex + \begin{align*} + \T_{\idxE\mto\idxE'}(\E) &= + \Tr\big[\Scat_{\idxE'}(\E)\G(\E)\Scat_{\idxE}(\E)\G^\dagger(\E)\big]\quad\text{, for $\idxE\neq\idxE'$} + \\ + \T_{\idxE}(\E) &\equiv\sum_{\idxE'\neq\idxE}\T_{\idxE\mto\idxE'} (\E) + \\ + \RE_\idxE(\E) &=\mathbf 1 -\T_\idxE (\E) + = \mathbf 1 -\Big\{ + \im \Tr\big[(\G(\E)-\G^\dagger(\E))\Scat_\idxE(\E)\big] + -\Tr[\Scat_\idxE(\E) \G(\E)\Scat_\idxE(\E)\G^\dagger(\E)] + \Big\} + \end{align*} + + \end{block} + + \begin{block}<+->{Symmetries} + When time-reversal symmetry applies we have: + \begin{equation*} + \T_{\idxE\mto\idxE',\kk} = \T_{\idxE'\mto\idxE,\kk} = \T_{\idxE\mto\idxE',-\kk} + \end{equation*} + \end{block} + +\end{frame} + +\begin{frame} + \frametitle{Non-equilibrium Green function} + \framesubtitle{Local currents/bond-currents} + + \begin{block}<+->{Orbital/Bond currents} + Bond currents are \emph{local} currents flowing between two orbitals/bonds and are + associated with \emph{out-going} states from electrode $\idxE$ + \begin{equation*} + \JJ_{\idxE,\nu\mu} = \frac e h \Im\big[ + \Spec_{\idxE,\nu\mu}(\HH_{\mu\nu} - \E\SO_{\mu\nu}) + - + \Spec_{\idxE,\mu\nu}(\HH_{\nu\mu} - \E\SO_{\nu\mu})\big] + \end{equation*} + + The sum of bond-currents crossing \emph{any} device cross-section is equal to the + current between the leads. Without the prefactor $e/h$ this also applies for the + bond-transmissions\footnote{TBtrans calculates bond-\emph{transmissions}, although + they are named \emph{currents}.}. + + The bond-currents obey Kirchoff's laws. + + \end{block} + + \begin{block}<+->{Symmetries} + \emph{NOTE}, even when time-reversal symmetry is present + \begin{align*} + \JJ_{\idxE,\kk,\nu\mu} &= - \JJ_{\idxE,\kk,\mu\nu} + \\ + \JJ_{\idxE,\kk,\nu\mu} &\neq \JJ_{\idxE,-\kk,\nu\mu} + \end{align*} + hence when calculating bond-currents for periodic structures it is imperative to + average the \emph{entire} Brillouin zone. This may be understood from \emph{momentum} + considerations. + \end{block} + +\end{frame} + + +\begin{frame} + \frametitle{Bond-current in periodic calculations} + \framesubtitle{Importance of Brillouin-zone averaging} + + \vskip -6em + \begin{center} + \begin{itemize} + \item Square lattice + \item Periodicity along $x$ direction + \item Transport along $y$ direction + \item Bond-currents $k$-averaged + \end{itemize} + \end{center} + + \begin{columns} + + \column{.5\linewidth} + \incg[width=.99\linewidth]{trs} + + \begin{itemize} + \item Sampled $k_x\in \big[0;\frac12\big]$ + \end{itemize} + + \column{.5\linewidth} + \incg[width=.99\linewidth]{no_trs} + + \begin{itemize} + \item Sampled $k_x\in \big]-\frac12;\frac12\big]$ + \end{itemize} + + \end{columns} + +\end{frame} + + + + +\begin{frame} + \frametitle{Non-equilibrium Green function} + \footnotesize + + \vskip -2ex + \begin{columns} + + \column{.5\textwidth} + \begin{block}{Basic equations} + \vskip-2ex +\input{../equations.tex} + \end{block} + + \column{.5\textwidth} + \begin{block}{Local Density of States} + \vskip-2ex + \begin{align*} + \rho_{\nu}(\E) &= -\frac1\pi\Im[\G(\E) \SO]_{\nu} = \sum_\idxE\rho_\nu^\idxE(\E) + + \text{bound states} + \\ + \rho_{\nu}^{\idxE}(\E) &= \frac1{2\pi}\Re[\Spec_\idxE(\E) \SO]_{\nu} + \end{align*} + \end{block} + + \end{columns} + + \begin{block}{Transmission} + \vskip-2ex + + \begin{align*} + \T_{\idxE\mto\idxE'}(\E) &= + \Tr\big[\Scat_{\idxE'}(\E)\G(\E)\Scat_{\idxE}(\E)\G^\dagger(\E)\big]\quad\text{, for $\idxE\neq\idxE'$} + \\ + \T_{\idxE}(\E) &\equiv\sum_{\idxE'\neq\idxE}\T_{\idxE\mto\idxE'} (\E) + \\ + \RE_\idxE(\E) & %=\mathbf 1 -\T_\idxE (\E) + = \mathbf 1 -\Big\{ + \im \Tr\big[(\G(\E)-\G^\dagger(\E))\Scat_\idxE(\E)\big] + -\Tr[\Scat_\idxE(\E) \G(\E)\Scat_\idxE(\E)\G^\dagger(\E)] + \Big\} + \\ + I_{\idxE\mto\idxE'} &= \frac{e^2}{h}\iint\cd\E\dd\kk\, \T_{\idxE\mto\idxE'}(\E)[n_{F,\idxE}(\E) - n_{F,\idxE'}(\E)]. + \end{align*} + + \end{block} + + \begin{block}{Orbital current} + + \begin{equation*} + \JJ_{\idxE,\nu\mu} = \frac e h \Im\big[ + \Spec_{\idxE,\nu\mu}(\HH_{\mu\nu} - \E\SO_{\mu\nu}) + - + \Spec_{\idxE,\mu\nu}(\HH_{\nu\mu} - \E\SO_{\nu\mu})\big] + \end{equation*} + + \end{block} + + \begin{center} + Quantities depend on $\int_\BZ$, i.e. required $k$ points are typically \emph{very} + high for correct energy resolved physical quantities. + + Related to the band-structure, a fine $k$-grid is necessary to correctly reproduce the + band-structure. + \end{center} + +\end{frame} + + + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "talk" +%%% End: diff --git a/presentations/01/options.tex b/presentations/01/options.tex new file mode 100644 index 0000000..a050ba9 --- /dev/null +++ b/presentations/01/options.tex @@ -0,0 +1,61 @@ + +\section{Input options} + +\begin{framenologo} + \frametitle{Input options} + \tableofcontents[currentsection] +\end{framenologo} + + +\subsection{fdf input} + +\begin{frame}[fragile] + \frametitle{Input options} + \framesubtitle{fdf input} + + \begin{itemize} + \item Siesta\footnote{TranSiesta and TBtrans are based on Siesta.} implements an + \emph{easy} input file: +\begin{verbatim} +TBT.DOS.Gf true +TBT.ElectronicTemperature 25. meV +%block TBT.k +... +%endblock +\end{verbatim} + + \item First encountered option is used ($25\,\mathrm{meV}$ will be used) +\begin{verbatim} +TBT.ElectronicTemperature 25. meV +TBT.ElectronicTemperature 50. meV +\end{verbatim} + \end{itemize} + + \begin{block}<2->{Default options for TBtrans and TranSiesta} + + Option default tree, \emph{only} these fdf-options has defaults + + \vskip 1em + \begin{tabular}{lll} + TBtrans & TranSiesta & Siesta + \\ + \hline\hline + \fdf{TBT.ElectronicTemperature} & \fdf{TS.ElectronicTemperature} & \fdf{ElectronicTemperature} + \\ + \fdf{TBT.k} & \fdf{TS.kgrid.MonkhorstPack} & \fdf{kgrid.MonkhorstPack} + \\ + \fdf{TBT.Voltage} & \fdf{TS.Voltage} + \\ + \fdf{TBT.ChemPots} & \fdf{TS.ChemPots} + \\ + \fdf{TBT.Elecs} & \fdf{TS.Elecs} + \\ + \fdf{TBT.Elecs.*} & \fdf{TS.Elecs.*} + \\ + \fdf{TBT.BTD.Pivot} & \fdf{TS.BTD.Pivot} + \end{tabular} + + \end{block} + \vskip 1em +\end{frame} + diff --git a/presentations/01/run.ipynb b/presentations/01/run.ipynb new file mode 100644 index 0000000..a6b0248 --- /dev/null +++ b/presentations/01/run.ipynb @@ -0,0 +1,157 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import sisl\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Example of the $k$-point sampling for TBtrans." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "chain = sisl.Geometry([0]*3, sisl.Atom(1, R=1.), sc=[1, 1, 10])\n", + "chain.set_nsc([3, 3, 1])\n", + "\n", + "# Transport along y-direction\n", + "chain = chain.tile(20, 0)\n", + "He = sisl.Hamiltonian(chain)\n", + "He.construct(([0.1, 1.1], [0, -1]))\n", + "Hd = He.tile(20, 1)\n", + "He.write('ELEC.nc')\n", + "Hd.write('DEVICE.nc')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "with open('RUN.fdf', 'w') as f:\n", + " f.write(\"\"\"\n", + "TBT.k [ 3 1 1 ]\n", + "\n", + "TBT.DOS.A\n", + "TBT.Current.Orb\n", + "\n", + "TBT.HS DEVICE.nc\n", + "%block TBT.Elec.Left\n", + " HS ELEC.nc\n", + " semi-inf-direction -a2\n", + " electrode-position 1\n", + "%endblock\n", + "%block TBT.Elec.Right\n", + " HS ELEC.nc\n", + " semi-inf-direction +a2\n", + " electrode-position end -1\n", + "%endblock\n", + " \"\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Run these two executables:\n", + "\n", + " tbtrans -D TRS RUN.fdf\n", + " tbtrans -D NO_TRS -fdf TBT.Symmetry.TimeReversal:f RUN.fdf" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "trs = sisl.get_sile('TRS/siesta.TBT.nc')\n", + "no_trs = sisl.get_sile('NO_TRS/siesta.TBT.nc')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def plot_bond(tbt, E):\n", + " xy = tbt.geometry.xyz[:, :2]\n", + " vector = tbt.vector_current(0, E)[:, :2]\n", + " atom = tbt.atom_current(0, E)\n", + " # Normalize atomic current\n", + " atom += 1\n", + " atom *= 10 / atom.max()\n", + " plt.scatter(xy[:, 0], xy[:, 1], atom);\n", + " plt.quiver(xy[:, 0], xy[:, 1], vector[:, 0], vector[:, 1]);\n", + " plt.gca().get_xaxis().set_visible(False)\n", + " plt.gca().get_yaxis().set_visible(False)\n", + " plt.tight_layout()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plot_bond(trs, 1.)\n", + "plt.savefig('fig/trs.png')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plot_bond(no_trs, 1.)\n", + "plt.savefig('fig/no_trs.png')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/presentations/01/se.tex b/presentations/01/se.tex new file mode 100644 index 0000000..878615f --- /dev/null +++ b/presentations/01/se.tex @@ -0,0 +1,338 @@ +\section{Self-energy} + +\begin{framenologo} + \frametitle{Self-energy} + \tableofcontents[currentsection] +\end{framenologo} + +\subsection{The concept} + +\begin{frame} + \frametitle{Self-energy} + \framesubtitle{The concept} + + \begin{block}{Self-energies -- perturb the Hamiltonian} + + \begin{itemize}[<+->] + \item A self-energy \emph{renormalises} the Hamiltonian + \begin{equation*} + \HH' = \HH + \SE + \end{equation*} + \item May describe wide variety of physical properties + \begin{itemize}[<.->] + \item Semi-infinity + \item Local defects + \item Absorbing potentials + \item \dots + \end{itemize} + \item TranSiesta, self-energies are \emph{only} semi-infinite leads + + \item ! TBtrans allows custom (additional) self-energies, \emph{even} when calculating + transport from DFT Hamiltonians + \end{itemize} + + \end{block} + +\end{frame} + +\subsection{Semi-infinity} + +\begin{frame} + \frametitle{Self-energy} + \framesubtitle{Semi-infinity} + + \begin{itemize} + \item% + Describes interaction of a system to a semi-infinite region + + \item% + Self-energy calculations \emph{require} no more than nearest neighbour interactions between unit-cells! + + \begin{align*} + \SE_{\mrc 11}(E) &= \VV^\dagger\big[E+\im\eta-\HH\big]^{-1}\VV + \\ + &\vdots + \\ + \SE_{\mrc i1}(E) &= \VV^\dagger\big[E+\im\eta-\HH-\SE_{\mrc{i-1}1}(E)\big]^{-1}\VV + \end{align*} + + Continue until $\SE_{\mrc i1}\approx\SE_{\mrc{i+1}1}$ + + \begin{center} + \animategraphics{.33}{../fig/inv-block_}{0}{17} + \end{center} + + \end{itemize} + +\end{frame} + + +\subsection{Bulk self-energy requirements} + +\begin{frame} + \frametitle{Self-energy} + \framesubtitle{Semi-infinity -- which unit-cells?} + + \begin{center} + \def\mysize{6pt} + \begin{tikzpicture} + \only<2->{ + \fill[red,opacity=.5] (-3,-.6) rectangle ++(9, 2.5); + } + \node[font=\large] at (-4,.5) {a)}; + \path (-3,-.5) rectangle ++(3,1); + \path (3,-.5) rectangle ++(3,1); + \draw[densely dashed] (-2,-.5) rectangle ++(1,1); + \draw[densely dashed] (-1,-.5) rectangle ++(1,1); + \draw (0,-.5) rectangle ++(1,1); + \draw[densely dashed] (1,-.5) rectangle ++(1,1); + \draw[densely dashed] (2,-.5) rectangle ++(1,1); + \fill (.5,0) circle (\mysize); + \foreach \x in {-2.5,-1.5,-.5,1.5,2.5,3.5,4.5,5.5} { + \draw (\x,0) circle (\mysize); + } + + \draw[->] (0.5,.5) to[out=30,in=150] node[above] {$\VV$} ++(1,0); + \draw[->] (0.5,.5) to[out=55,in=125] node[above] {$\VV'$} ++(2,0); + \draw[->,dashed,gray] (0.5,.5) to[out=80,in=100] node[above,gray] {$\VV''\equiv0$} ++(3,0); + + \end{tikzpicture} + + \vspace{4pt} + + \begin{tikzpicture} + \node[font=\large] at (-4,.5) {b)}; + \path (-3,-.5) rectangle ++(3,1); + \path (3,-.5) rectangle ++(3,1); + \draw[densely dashed] (-2,-.5) rectangle ++(2,1); + \draw (0,-.5) rectangle ++(2,1); + \draw[densely dashed] (2,-.5) rectangle ++(2,1); + \fill (.5,0) circle (\mysize); + \fill (1.5,0) circle (\mysize); + \foreach \x in {-2.5,-1.5,-.5,2.5,3.5,4.5,5.5} { + \draw (\x,0) circle (\mysize); + } + \draw[->] (0.5,.5) to[out=30,in=150] node[above] {$\VV$} ++(1,0); + \draw[->] (0.5,.5) to[out=55,in=125] node[above] {$\VV'$} ++(2,0); + \draw[->,dashed,gray] (0.5,.5) to[out=80,in=100] node[above,gray] {$\VV''\equiv0$} ++(3,0); + \end{tikzpicture} + + \vspace{4pt} + + \begin{tikzpicture} + \node[font=\large] at (-4,.5) {c)}; + \draw[densely dashed] (-3,-.5) rectangle ++(3,1); + \draw (0,-.5) rectangle ++(3,1); + \draw[densely dashed] (3,-.5) rectangle ++(3,1); + \fill (.5,0) circle (\mysize); + \fill (1.5,0) circle (\mysize); + \fill (2.5,0) circle (\mysize); + \foreach \x in {-2.5,-1.5,-.5,3.5,4.5,5.5} { + \draw (\x,0) circle (\mysize); + } + \draw[->] (0.5,.5) to[out=30,in=150] node[above] {$\VV$} ++(1,0); + \draw[->] (0.5,.5) to[out=55,in=125] node[above] {$\VV'$} ++(2,0); + \draw[->,dashed,gray] (0.5,.5) to[out=80,in=100] node[above,gray] {$\VV''\equiv0$} ++(3,0); + \end{tikzpicture} + + + \vspace{5pt} + + This is \emph{only} a requirement along the semi-infinite direction! + \end{center} + +\end{frame} + + +\begin{frame} + \frametitle{Self-energy} + \framesubtitle{Semi-infinity -- rules} + + \tikzset{block/.style={ + shape=rectangle,draw,minimum size=.8cm}, + dd/.style={densely dotted}, + block dd/.style={block,dd}, + } + \def\bsize{.8cm} + + \begin{block}{Rules for using self-energies} + + Coupling a \emph{bulk} electrode to a device requires(!) coupling region to behave + \emph{bulk} as well. + + \vspace{4pt} + + \begin{center} + \begin{tikzpicture} + + \uncover<+->{ + \foreach \x in {0,1,2,3,4,5,6,7,8} { + \def\tmpcol{black} + \ifnum\x>2 + \def\tmpcol{red!70!black} + \fi + \ifnum\x>3 + \def\tmpcol{green!70!black} + \fi + \ifnum\x>4 + \def\tmpcol{red!70!black} + \fi + \ifnum\x>5 + \def\tmpcol{black} + \fi + \node[block,gray] at ({(\x-0.5)*\bsize},3*\bsize) {}; + + \expandafter\fill\expandafter[\tmpcol] ({(\x-0.75)*\bsize},3*\bsize) + circle (3pt); + \expandafter\fill\expandafter[\tmpcol] ({(\x-0.25)*\bsize},3*\bsize) + circle (3pt); + + } + } + + \uncover<+->{ + \node[block dd] at (-1.5*\bsize,0.5*\bsize) {$\SE_{-}$}; + \foreach \x in {0,1,2,3,4,5,6,7,8} { + \ifnum\x<3 + \def\tmpnum{0} + \fi + \ifnum\x>2 + \pgfmathparse{int(\x-2)} + \edef\tmpnum{\pgfmathresult} + \fi + \ifnum\x>5 + \pgfmathparse{int(4)} + \edef\tmpnum{\pgfmathresult} + \fi + \node[block] (A\x) at ({(\x-0.5)*\bsize},0.5*\bsize) {$\HH_\tmpnum$}; + \ifnum\x>0 + \pgfmathparse{int(\x-1)} + \edef\xp{\pgfmathresult} + \ifnum\x>6 + \pgfmathparse{int(5)} + \edef\tmpnum{\pgfmathresult} + \fi + \draw[->,dd] (A\xp) to[out=75,in=105] node[above] {$\VV_\tmpnum$} (A\x); + \draw[<-,dd] (A\xp) to[out=-75,in=-105] node[below] {$\VV^\dagger_\tmpnum$} (A\x); + \fi + } + \node[block dd] at (8.5*\bsize,0.5*\bsize) {$\SE_{+}$}; + } + \end{tikzpicture} + + \end{center} + + \vspace{-12pt} + + \begin{itemize} + \item<+-> Remember that $\SE_{-/+}$ is a correction to the Hamiltonian (i.e. + $\HH' = \HH + \SE$) + \end{itemize} + \end{block} + + \footnotesize + \begin{columns}<+-> + \column{.25\textwidth} + \begin{itemize} + \item $\SE_-$ into 1st $\HH_0$? + + \begin{tikzpicture} + \only<.>{ + \node[block,gray,fill=check] at (-0.5*\bsize,3*\bsize) {}; + } + \uncover<.(1)->{ + \node[block,gray,fill=good] at (-0.5*\bsize,3*\bsize) {}; + } + \foreach \x in {0.5,1.5,2.5} { + \node[block,gray] at (\x*\bsize,3*\bsize) {}; + } + \foreach \x in {0,1,2} { + \fill[black] ({(\x-0.75)*\bsize},3*\bsize) + circle (3pt) + ({(\x-0.25)*\bsize},3*\bsize) circle (3pt); + } + \fill[red!70!black] (2.75*\bsize,3*\bsize) + circle (3pt) + (2.25*\bsize,3*\bsize) circle (3pt); + \end{tikzpicture} + \end{itemize} + + \column{.25\textwidth} + \begin{itemize} + \item $\SE_-$ into 2nd $\HH_0$? + + \begin{tikzpicture} + \only<.>{ + \node[block,gray,fill=check] at (0.5*\bsize,3*\bsize) {}; + } + \uncover<.(1)->{ + \node[block,gray,fill=good] at (0.5*\bsize,3*\bsize) {}; + } + \foreach \x in {-0.5,1.5,2.5} { + \node[block,gray] at (\x*\bsize,3*\bsize) {}; + } + \foreach \x in {0,1,2} { + \fill[black] ({(\x-0.75)*\bsize},3*\bsize) + circle (3pt) + ({(\x-0.25)*\bsize},3*\bsize) + circle (3pt); + } + \fill[red!70!black] (2.75*\bsize,3*\bsize) + circle (3pt) + (2.25*\bsize,3*\bsize) circle (3pt); + \end{tikzpicture} + \end{itemize} + + \column{.25\textwidth} + \begin{itemize} + \item $\SE_-$ into 3rd $\HH_0$? + + \begin{tikzpicture} + \only<.>{ + \node[block,gray,fill=check] at (1.5*\bsize,3*\bsize) {}; + } + \uncover<.(1)->{ + \node[block,gray,fill=good] at (1.5*\bsize,3*\bsize) {}; + } + \foreach \x in {-0.5,0.5,2.5} { + \node[block,gray] at (\x*\bsize,3*\bsize) {}; + } + \foreach \x in {0,1,2} { + \fill[black] ({(\x-0.75)*\bsize},3*\bsize) + circle (3pt) + ({(\x-0.25)*\bsize},3*\bsize) circle (3pt); + } + \fill[red!70!black] (2.75*\bsize,3*\bsize) + circle (3pt) + (2.25*\bsize,3*\bsize) circle (3pt); + \end{tikzpicture} + \end{itemize} + + \column{0.25\textwidth} + \begin{itemize} + \item $\SE_-$ into $\HH_1$? + + \begin{tikzpicture} + \only<.>{ + \node[block,gray,fill=check] at (2.5*\bsize,3*\bsize) {}; + } + \uncover<.(1)->{ + \node[block,gray,fill=bad] at (2.5*\bsize,3*\bsize) {}; + } + \foreach \x in {-0.5,0.5,1.5} { + \node[block,gray] at (\x*\bsize,3*\bsize) {}; + } + \foreach \x in {0,1,2} { + \fill[black] ({(\x-0.75)*\bsize},3*\bsize) + circle (3pt) + ({(\x-0.25)*\bsize},3*\bsize) circle (3pt); + } + \fill[red!70!black] (2.75*\bsize,3*\bsize) + circle (3pt) + (2.25*\bsize,3*\bsize) circle (3pt); + \end{tikzpicture} + \end{itemize} + + \end{columns} + +\end{frame} diff --git a/presentations/01/talk.tex b/presentations/01/talk.tex new file mode 100644 index 0000000..101f942 --- /dev/null +++ b/presentations/01/talk.tex @@ -0,0 +1,36 @@ + +\input ../common.tex + +\graphicspath{{fig/}} +\usepackage[export]{adjustbox} + +\institute[2017, Nick R. Papior; DTU Nanotech]{\begin{tikzpicture} + \node[shape=rectangle split,rectangle split parts=2,anchor=base] at (0,0) + {DTU: sisl, TBtrans and TranSiesta workshop}; + \end{tikzpicture}} + +\date{25. October 2017} +\title{Non-equilibrium Green function theory: 1 \& 2} +\author{Nick R. Papior} + + +\begin{document} + +\begin{frame} + \titlepage +\end{frame} + +\begin{frame} + \frametitle{Outline} + \tableofcontents +\end{frame} + +\input introduction.tex +\input green.tex +\input se.tex +\input negf.tex +\input options.tex +\input electrodes.tex +\input device.tex + +\end{document} diff --git a/presentations/02/Makefile b/presentations/02/Makefile new file mode 120000 index 0000000..d0b0e8e --- /dev/null +++ b/presentations/02/Makefile @@ -0,0 +1 @@ +../Makefile \ No newline at end of file diff --git a/presentations/02/chemical.tex b/presentations/02/chemical.tex new file mode 100644 index 0000000..5712bca --- /dev/null +++ b/presentations/02/chemical.tex @@ -0,0 +1,345 @@ +\section{Input options} + +\begin{framenologo} + \frametitle{Input options} + \tableofcontents[currentsection] +\end{framenologo} + +\subsection{Chemical potentials} + + +\begin{frame}%[fragile] + \frametitle{Input options} + \framesubtitle{Chemical potentials} + + \begin{itemize} + \item Define list of all different chemical potentials + + \item<2-> Define each, different chemical potential + + \item<3-> Remark their physical meaning + + \end{itemize} + + \begin{tikzpicture}[fixed node] + \def\chem{chem} + \def\bias{V/2} + + \only<1-5>{ + \begin{scope}[yshift=-2cm] + \matrix { + \node[fdf] {\%block TS.ChemPots}; \\ + \node[fdf,ind,lmark] (chem-1) {\chem-1}; \\ + \node[fdf,ind,lmark] (chem-2) {\chem-2}; \\ + \node[fdf,ind] {...}; \\ + \node[fdf] {\%endblock}; \\ + }; + \end{scope} + } + + \uncover<2->{ + \begin{scope}[xshift=4.1cm] + \begin{scope} + \matrix { + \node[fdf,rmark] (chem-b-1) {\%block TS.ChemPot.\chem-1}; \\ + \node[fdf,ind] (mu-1) {mu \bias}; \\ + \node[fdf,ind] (kT-1) {temp $k_BT_1$}; \\ + \node[fdf,ind] (E-1) {contour.eq.pole $\langle \mathrm{energy}\rangle_1$}; \\ + %\node[fdf,ind] (NP-1) {contour.eq.pole.n $\langle \mathrm{int}\rangle_1$}; \\ + \node[fdf,ind] {contour.eq}; \\ + \node[fdf,iind] {begin}; \\ + \only<5->{ + \node[fdf,lmark,iiind] (C-chem-1) {C-chem-1}; \\ + \node[fdf,lmark,iiind] (L-chem-1) {L-chem-1}; \\ + } + \only<1-4>{ + \node[fdf,iiind] (C-chem-1) {C-chem-1}; \\ + \node[fdf,iiind] (L-chem-1) {L-chem-1}; \\ + } + \node[fdf,iind] {end}; \\ + \node[fdf] {\%endblock}; \\ + }; + \end{scope} + + \only<-5>{ + \begin{scope}[yshift=-3.8cm] + \matrix { + \node[fdf,rmark] (chem-b-2) {\%block TS.ChemPot.\chem-2}; \\ + \node[fdf,ind] (mu-2) {mu -\bias}; \\ + \node[fdf,ind] (kT-2) {temp $k_BT_2$}; \\ + \node[fdf,ind] (E-2) {contour.eq.pole $\langle \mathrm{energy}\rangle_2$}; \\ + \node[fdf,ind] {\dots};\\ + + %\node[fdf,ind] (NP-2) {contour.eq.pole.n $\langle \mathrm{int}\rangle_2$}; \\ + \node[fdf] {\%endblock}; \\ + }; + \end{scope}} + \end{scope} + + \only<-5>{ + \draw[->] (chem-1) -- ++(1.8,0) to[out=0,in=180] (chem-b-1); + \draw[->] (chem-2) -- ++(1.8,0) to[out=0,in=180] (chem-b-2); + } + + } + + \begin{scope}[xshift=8.2cm] + \uncover<3->{% + \matrix[yshift=2.5cm] { + \node {$n_{F,1}(E-$}; + \& + \node[circle,draw=good] (chem-mu-1) {$\mu$}; + \& + \node {$,$}; + \& + \node[circle,draw=bad] (chem-kT-1) {$k_BT$}; + \& + \node {$)$}; + \\ + }; + \draw[->,good] (mu-1) to[out=0,in=-150] (chem-mu-1); + \draw[->,bad] (kT-1) to[out=0,in=-140] (chem-kT-1); + + } + + \uncover<3-5>{% + \matrix[yshift=-3cm] { + \node {$n_{F,2}(E-$}; + \& + \node[circle,draw=good] (chem-mu-2) {$\mu$}; + \& + \node {$,$}; + \& + \node[circle,draw=bad] (chem-kT-2) {$k_BT$}; + \& + \node {$)$}; + \\ + }; + \draw[<-,good] (chem-mu-2) to[out=-160,in=0] (mu-2); + \draw[<-,bad] (chem-kT-2) to[out=-150,in=0] (kT-2); + + } + \end{scope} + + \uncover<4->{% + \begin{scope}[xshift=8.5cm,yshift=.75cm] + \draw (-1,0) -- ++(2,0); + \draw (0,0) node[below] {$\mu_1$} -- ++(0,1); + \foreach \pole in {0.2,0.4} { + \fill (0,\pole) circle (2pt); + } + \coordinate (E-pole-1) at (0,0.5); + \foreach \pole in {0.6,0.8,1} { + \draw (0,\pole) circle (2pt); + } + \end{scope} + \draw[->,thick,shorten >=4pt] (E-1) to[out=0,in=180] (E-pole-1); + + \only<-5>{% + + \begin{scope}[xshift=8.4cm,yshift=-5cm] + \draw (-1,0) -- ++(2,0); + \draw (0,0) node[below] {$\mu_2$} -- ++(0,1); + \foreach \pole in {0.2,0.4,0.6} { + \fill (0,\pole) circle (2pt); + } + \coordinate (E-pole-2) at (0,0.7); + \foreach \pole in {0.8,1} { + \draw (0,\pole) circle (2pt); + } + \end{scope} + \draw[->,thick,shorten >=4pt] (E-2) to[out=0,in=180] (E-pole-2); +} + } + + \uncover<5->{ + \def\eta{0.1}% + \def\radius{3.25}% + \def\lineS{-1}% + \def\poles{4}% + \def\poleSep{.25}% + % Calculate alpha angle + \pgfmathparse{\poleSep*(\poles+.5)/\radius}% + \edef\betaA{\pgfmathresult}% + \pgfmathparse{atan(\betaA)}% + \edef\alphaA{\pgfmathresult}% + \pgfmathparse{asin(\betaA)}% + \edef\betaA{\pgfmathresult}% + \begin{scope}[xshift=10cm, yshift=-2cm,scale=.5] + + % The axes + \begin{scope}[draw=gray!80!black,thick,->] + \draw (-2*\radius+\lineS-.5,0) -- (\radius+1.5,0) node[text=black,below] {$E$}; + \draw (0,0) -- (0,\radius+.5) node[text=black,left] {$\Im$}; + \end{scope} + \node[below] (mu-1) at (0,0) {$\mu_1$}; + + % The specific coordinates on the path + \coordinate (EB) at (-2*\radius+\lineS,\eta); + \coordinate (C-mid) at ({-\radius+\lineS-sin(\alphaA)*\radius},{cos(\alphaA)*\radius}); + \coordinate (C-end) at (\lineS,{\poleSep*(\poles+.5)}); + \coordinate (L-end) at (\radius,{\poleSep*(\poles+.5)}); + \coordinate (L-end-end) at (\radius+1,{\poleSep*(\poles+.5)}); + \coordinate (real-L-end) at (\radius,\eta); + \coordinate (real-L-end-end) at (\radius+1,\eta); + + \begin{scope}[thick] + + % The path (we draw it backwards) + \draw[->-=.3,very thick,ok] (L-end) -- node[above right] (L) + {$\mathcal L$} (C-end); + \draw[->-=.333,->-=.666,very thick,bad] (C-end) to[out=90+\betaA,in=\alphaA] (C-mid) + node[above] (C) + {$\mathcal C$} + to[out=180+\alphaA,in=90] (EB); + \draw[->-=.25,->-=.75] (EB) -- (real-L-end) node[above left] {$\mathcal R$}; + + % draw the continued lines + \draw[densely dotted] (real-L-end) -- (real-L-end-end); + \draw[densely dotted] (L-end) -- (L-end-end); + + \end{scope} + + % Draw the poles + \foreach \pole in {1,...,14} { + \ifnum\pole>\poles + \draw (0,\pole*\poleSep) circle (2pt); + \else + \fill (0,\pole*\poleSep) circle (2pt); + \fi + } + \node[left,anchor=east] at (0,{\poleSep*(\poles/2+.5)}) {$z_\nu$}; + + % correct size + \path[use as bounding box] (-8,-.5) rectangle ++(13,4.5); + + \draw[densely dotted] (real-L-end-end) to[out=0,in=0] (L-end-end); + \draw[densely dotted,thick] (EB) -- ++(-.5,0); + + \end{scope} + + \draw[->,thick,bad] (C) -- (C-chem-1); + \draw[->,thick,good] (L) -- (L-chem-1); + + } + + \uncover<6->{ + \begin{scope}[yshift=-3.5cm,xshift=.25cm] + \matrix { + \node[fdf,rmark] (dC-chem-1) {\%block TS.Contour.C-chem-1}; \\ + \node[fdf,ind] {part circle}; \\ + \node[fdf,iind] {from -40. eV + V/2 to -10 kT + V/2}; \\ + \node[fdf,iind] {points 25}; \\ + \node[fdf,iind] {method g-legendre}; \\ + \node[fdf] {\%endblock}; \\ + }; + \end{scope} + + \begin{scope}[yshift=-3.5cm,xshift=6cm] + \matrix { + \node[fdf,rmark] (dL-chem-1){\%block TS.Contour.L-chem-1}; \\ + \node[fdf,ind] {part line}; \\ + \node[fdf,iind] {from prev to inf}; \\ + \node[fdf,iind] {points 12}; \\ + \node[fdf,iind] {method g-fermi}; \\ + \node[fdf] {\%endblock}; \\ + }; + \end{scope} + + \draw[->] (C-chem-1) -- (dC-chem-1); + \draw[->] (L-chem-1) -- (dL-chem-1); + + } + + \end{tikzpicture} + +\end{frame} + +\subsection{Non-equilibrium contours} + + +\begin{frame}%[fragile] + \frametitle{Input options} + \framesubtitle{Non-equilibrium} + + \begin{block}{Non-equilibrium contour} + + \begin{itemize} + \item The contour spans the entire bias-window + \item<3-> One may add additional lines to increase precision at certain energies + \end{itemize} + + \end{block} + + \small + + \begin{tikzpicture}[fixed node] + \begin{scope} + \matrix { + \node[fdf] {\%block TS.Contours.nEq}; \\ + \node[fdf,ind,lmark] (lneq) {neq}; \\ + \node[fdf] {\%endblock}; \\ + }; + \end{scope} + + \uncover<2->{ + \begin{scope}[xshift=6cm] + \matrix { + \node[fdf,rmark] (rneq) {\%block TS.Contour.nEq.neq}; \\ + \node[fdf,ind] {part line}; \\ + \node[fdf,iind] {from -5 kT -|V|/2 to |V|/2 + 5 kT}; \\ + \node[fdf,iind] {delta 0.01 eV}; \\ + \node[fdf,iind] {method mid-rule}; \\ + \node[fdf] {\%endblock}; \\ + }; + \end{scope} + \draw[->] (lneq) -- ++(2.5,0) to[out=0,in=180] (rneq); + } + \end{tikzpicture} + + \vskip 2em + + \uncover<4->{ + \begin{tikzpicture}[fixed node] + \begin{scope} + \matrix { + \node[fdf] {\%block TS.Contours.nEq}; \\ + \node[fdf,ind,lmark] (lneq-1) {neq-1}; \\ + \node[fdf,ind,lmark] (lneq-2) {neq-2}; \\ + \node[fdf] {\%endblock}; \\ + }; + \end{scope} + + \begin{scope}[xshift=6cm] + \matrix { + \node[fdf,rmark] (rneq-1) {\%block TS.Contour.nEq.neq-1}; \\ + \node[fdf,ind] {part line}; \\ + \node[fdf,iind] {from -5 kT -|V|/2 to 0 eV}; \\ + \node[fdf,iind] {delta 0.02 eV}; \\ + \node[fdf,iind] {method mid-rule}; \\ + \node[fdf] {\%endblock}; \\ + }; + \end{scope} + \draw[->] (lneq-1) -- ++(2.5,0) to[out=0,in=180] (rneq-1); + + \begin{scope}[xshift=6cm, yshift=-2.4cm] + \matrix { + \node[fdf,rmark] (rneq-2) {\%block TS.Contour.nEq.neq-2}; \\ + \node[fdf,ind] {part line}; \\ + \node[fdf,iind] {from prev to |V|/2 + 5 kT}; \\ + \node[fdf,iind] {delta 0.005 eV}; \\ + \node[fdf,iind] {method mid-rule}; \\ + \node[fdf] {\%endblock}; \\ + }; + \end{scope} + \draw[->] (lneq-2) -- ++(2.5,0) to[out=0,in=180] (rneq-2); + \end{tikzpicture} + } + +\end{frame} + + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "talk" +%%% End: diff --git a/presentations/02/contour.tex b/presentations/02/contour.tex new file mode 100644 index 0000000..bb060a4 --- /dev/null +++ b/presentations/02/contour.tex @@ -0,0 +1,317 @@ + +\subsection{The true density matrix} + +\begin{frame}[fragile] + \frametitle{The \emph{true} density matrix} + \framesubtitle{Averaging several contributions} + + \footnotesize + \begin{block}{Density matrix using non-equilibrium Green functions} + \vskip -2ex + \begin{align*} + \only<2->{\color{gray}} + \DM & + \only<2->{\color{gray}} + =\frac1{2\pi} + \iint_\BZ\dEBZ\cd \kk \dd\E\, \sum_\idxE\Spec_{\idxE,\kk}(\E) n_{F,\idxE}(\E) + \eikr + \\ + \only<2->{\color{gray}} + \DM^\varsigma & + \only<2->{\color{gray}} + = + {\frac i{2\pi}\iint_\BZ\dEBZ\cd \kk\dd\E% + \left[\G_\kk - \G^\dagger_\kk \right]\eikr n_{F,\varsigma}(\E)} + + + {\frac1{2\pi}\sum_{\idxE'\neq\varsigma}\iint_\BZ\dEBZ\cd \kk\dd\E\, % + \G_\kk \Scat_{\idxE',\kk} + \G^\dagger_\kk\eikr\big[n_{F,\idxE'}(\E)-n_{F,\varsigma}(\E)\big]} + \\ + \DM^\varsigma &= + {\DE^\varsigma} + + + {\sum_{\idxE'\neq\varsigma}\ncor_{\idxE'}^\varsigma} + \uncover<2->{= + \only<2->{\color{ok}} + % Essentially these + \langle\dots\rangle n_{F,\varsigma}(\E) + + + \sum_{\idxE'\neq\varsigma}\langle\dots\rangle [n_{F,\idxE'}(\E)-n_{F,\varsigma}]} + \end{align*} + \end{block} + + \pause + \pause + + \begin{center} + \def\eta{0.1}% + \def\radius{3.25}% + \def\lineS{-1}% + \def\poles{4}% + \def\poleSep{.25}% + % Calculate alpha angle + \pgfmathparse{\poleSep*(\poles+.5)/\radius}% + \edef\betaA{\pgfmathresult}% + \pgfmathparse{atan(\betaA)}% + \edef\alphaA{\pgfmathresult}% + \pgfmathparse{asin(\betaA)}% + \edef\betaA{\pgfmathresult}% + \begin{tikzpicture}[scale=.75] + + % The axes + \begin{scope}[draw=gray!80!black,thick,->] + \draw (-2*\radius+\lineS-.5,0) -- (\radius+1.5,0) node[text=black,below] {$E$}; + \draw (0,0) -- (0,\radius+.5) node[text=black,left] {$\Im$}; + \end{scope} + \node[below] (mu-1) at (0,0) {$\mu_1$}; + + % The specific coordinates on the path + \coordinate (EB) at (-2*\radius+\lineS,\eta); + \coordinate (C-mid) at ({-\radius+\lineS-sin(\alphaA)*\radius},{cos(\alphaA)*\radius}); + \coordinate (C-end) at (\lineS,{\poleSep*(\poles+.5)}); + \coordinate (L-end) at (\radius,{\poleSep*(\poles+.5)}); + \coordinate (L-end-end) at (\radius+1,{\poleSep*(\poles+.5)}); + \coordinate (real-L-end) at (\radius,\eta); + \coordinate (real-L-end-end) at (\radius+1,\eta); + + \begin{scope}[thick] + + % The path (we draw it backwards) + \draw[->-=.3,very thick] (L-end) -- node[above right] + {$\mathcal L$} (C-end); + \draw[->-=.333,->-=.666,very thick] (C-end) to[out=90+\betaA,in=\alphaA] (C-mid) + node[above] + {$\mathcal C$} + to[out=180+\alphaA,in=90] (EB); + \draw[->-=.25,->-=.75] (EB) -- (real-L-end) node[above left] {$\mathcal R$}; + + % draw the continued lines + \draw[densely dotted] (real-L-end) -- (real-L-end-end); + \draw[densely dotted] (L-end) -- (L-end-end); + + \end{scope} + + % Draw the poles + \foreach \pole in {1,...,14} { + \ifnum\pole>\poles + \draw (0,\pole*\poleSep) circle (2pt); + \else + \fill (0,\pole*\poleSep) circle (2pt); + \fi + } + \node[left,anchor=east] at (0,{\poleSep*(\poles/2+.5)}) {$z_\nu$}; + + % correct size + \path[use as bounding box] (-8,-.5) rectangle ++(13,4.5); + + \draw[densely dotted] (real-L-end-end) to[out=0,in=0] (L-end-end); + \draw[densely dotted,thick] (EB) -- ++(-.5,0); + + % Draw the 2nd poles + \def\muB{1} + \node[below] (mu-2) at (\muB,0) {$\mu_2$}; + \foreach \pole in {1,...,14} { + \ifnum\pole>\poles + \draw[bad] (\muB,\pole*\poleSep) circle (2pt); + \else + \fill[bad] (\muB,\pole*\poleSep) circle (2pt); + \fi + } + + \def\muC{2} + \node[below] (mu-3) at (\muC,0) {$\mu_3$}; + \foreach \pole in {1,...,14} { + \ifnum\pole>\poles + \draw[ok] (\muC,\pole*\poleSep) circle (2pt); + \else + \fill[ok] (\muC,\pole*\poleSep) circle (2pt); + \fi + } + + \draw[<->]%decorate,decoration=brace] + ($(mu-2.south)+(0,0)$) -- + node[below left=6pt] {$\ncor^1_2,\color{bad}\ncor^2_1$} + ($(mu-1.south)+(0,0)$); + + \draw[<->]%decorate,decoration=brace] + ($(mu-3.south)+(0,-.4)$) -- + node[below=3pt] {$\color{bad}\ncor^2_3\color{black},\color{ok}\ncor^3_2$} + ($(mu-2.south)+(0,-.4)$); + \draw[<->] + ($(mu-3.south)+(0,-1.3)$) -- + node[below=4pt] {$\ncor^1_3,\color{ok}\ncor^3_1$} + ($(mu-1.south)+(0,-1.3)$); + + \node at ($(mu-3.south east) + (1.5, -0.5)$) {3 electrodes!}; + + \end{tikzpicture} + \end{center} + +\end{frame} + + +\begin{frame} + \frametitle{The \emph{true} density matrix} + \framesubtitle{Methods} + + \begin{block}{Example of numeric integration of equilibrium contour} + \begin{center} + \begin{tikzpicture}[scale=.8] + \begin{axis}[width=14cm,height=8cm,name=circ,only marks, + ymin=0,ymax=15.5,xmin=-31,xmax=1.5, + xtick={-28,-24,-20,-16,-12,-8,-4}, + extra x ticks={0.25},extra x tick label={$\mu$}, + xlabel={Real Energy [eV]}, + ylabel={Imaginary Energy [eV]}] + \addplot table {../data/EQ_circle.dat}; + \addplot table {../data/EQ_fermi.dat}; + \addplot table {../data/EQ_pole.dat}; + \draw[densely dashed,green!50!black,very thick] (axis cs:-30,0.1) -- + (axis cs:2,0.1); + \draw[->,>=latex] (axis cs:-.5,0) -- (axis cs:-8.75,2.2); + \draw[->,>=latex] (axis cs:-.5,1.25) -- (axis cs:-8.75,10.75); + \node[rotate=35] at (axis cs:-21.5,11.5) {Gauss-Legendre}; + \end{axis} + \begin{axis}[width=6cm,height=5cm,only marks, + at={($(circ.south)+(0,1cm)$)},anchor=south, + xtick={-0.5,0,0.5}, + extra x ticks={0.25},extra x tick label={$\mu$}, + xmin=-.5,xmax=.75,ymin=0,ymax=1.3] + \addplot table {../data/EQ_circle.dat}; + \addplot table {../data/EQ_fermi.dat}; + \addplot table {../data/EQ_pole.dat}; + \draw[<->] (axis cs:.3,0.568494) -- node[sloped,anchor=south] {$2\pi k_BT$} (axis cs:.3,0.406067); + \draw[densely dashed,green!50!black,very thick] + (axis cs:-1,0.03) -- (axis cs:1,0.03); + \node[anchor=south] at (axis cs:0.25,1) {Gauss-Fermi}; + \node[rotate=90,anchor=south] at (axis cs:0.25,.5) {Poles}; + \end{axis} + \end{tikzpicture} + \end{center} + \end{block} + + \begin{block}<2->{Example of numeric integration of non-equilibrium contour, $\delta \E + \approx 0.01\,\mathrm{eV}$} + \begin{center} + \begin{tikzpicture}[scale=.8] + \begin{axis}[width=15cm,height=3cm, + ymin=0,ymax=1.5,xmin=-1,xmax=1,gen/.style={only marks,opacity=.7}, + xlabel={Energy [eV]}, + ylabel={Weight}] + \addplot[gen,bad,domain=-.55:.55,samples=30] {1./(exp((x-0.5)/0.01) + + 1)- 1./(exp((x+0.5)/0.01) + 1)}; + \draw[<->,bad,very thick] (axis cs:-.5, .1) -- (axis cs:.5,.1) node[midway,above] + {$n_F(\E+0.5\,\mathrm{eV}) - n_F(\E-0.5\,\mathrm{eV})$}; + \end{axis} + \end{tikzpicture} + \end{center} + \end{block} + +\end{frame} + + + +\subsection{Weighing the density matrix} + +\begin{frame}[fragile] + \frametitle{Weighing the density matrix} + \framesubtitle{Choosing the average} + + \footnotesize + \begin{block}{Density matrix using non-equilibrium Green functions} + \vskip -2ex + \begin{columns} + \column{.1\textwidth} + + \column{.3\textwidth} + + Equivalent, but different! + + \column{.6\textwidth} + \begin{align*} + \DM^\idxE &= + % {\DE^\idxE} + % + + % {\sum_{\idxE'\neq\idxE}\ncor_{\idxE'}^\idxE} + % = + % Essentially these + \langle\dots\rangle n_{F,\idxE}(\E) + + + \sum_{\idxE'\neq\idxE}\langle\dots\rangle [n_{F,\idxE'}(\E)-n_{F,\idxE}] + \\ + \DM^\varsigma &= +% {\DE^\varsigma} +% + +% {\sum_{\idxE|\varsigma_\idxE\neq\varsigma}\ncor_{\idxE'}^\varsigma} +% = + \langle\dots\rangle n_{F,\varsigma}(\E) + + + \sum_{\idxE|\varsigma_\idxE\neq\varsigma} \langle\dots\rangle[n_{F,\varsigma_\idxE}(\E)-n_{F,\varsigma}] + \end{align*} + \end{columns} + + \end{block} + + \begin{block}<2->{Estimating $\DM$} + + \begin{itemize} + \item<+-> + TranSiesta calculates \emph{all} $\DM^\varsigma$ and estimates the true $\DM$ by an + average: + \begin{align*} + \shortintertext{for $2$ electrodes:} + w_i & = \frac{(\ncor_i)^2}{(\ncor_1)^2+(\ncor_2)^2} + & &w_1+w_2=1 + \uncover<+->{ + \\ + \shortintertext{for $N$ electrodes:} + w_\varsigma &= + \prod_{\varsigma'\neq\varsigma} + \big(\smash{\sum_{\idxE|\varsigma_\idxE\neq\varsigma'}}(\ncor^{\varsigma'}_\idxE)^2\big) + \Big/ + \Big\{ + \sum_{\varsigma'}\prod_{\varsigma''\neq\varsigma'} + \big(\smash{\sum_{\idxE|\varsigma_\idxE\neq\varsigma''}}(\ncor^{\varsigma''}_\idxE)^2\big) + \Big\} + & &\sum_iw_i=1 + \\ + \DM &=\sum_\varsigma \DM^\varsigma w_\varsigma + } + \end{align*} + + \item<+->% + Estimation of the ``error'' + \begin{align*} + \mathrm e_{\mathrm{max}} &= \max\big[ + \DM^{\varsigma'}-\DM^\varsigma; + \DM^{\varsigma''}-\DM^{\varsigma}; + \DM^{\varsigma''}-\DM^{\varsigma'}; + \dots\big] + \\ + \mathrm e_{w} &= \max\big[ + \DM^{\varsigma}-\DM; + \DM^{\varsigma'}-\DM; + \dots\big]. + \end{align*} + + \end{itemize} + + \end{block} + + \uncover<4->{% + \begin{tikzpicture}[remember picture,overlay] + \node[rotate=30,inner sep=20cm,anchor=mid, + fill=white,opacity=.7,text width=20cm,align=center, + text opacity=1] at (current page.center) + {\huge This is why we need \emph{both} a chemical \emph{and} an electrode block}; + \end{tikzpicture} + } + +\end{frame} + + + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "talk" +%%% End: diff --git a/presentations/02/negf.tex b/presentations/02/negf.tex new file mode 100644 index 0000000..942c05a --- /dev/null +++ b/presentations/02/negf.tex @@ -0,0 +1,459 @@ +\section{Non-equilibrium Green function} + +\begin{framenologo} + \frametitle{Non-equilibrium Green function} + \tableofcontents[currentsection] +\end{framenologo} + +\subsection{Density matrix} + +\begin{frame} + \frametitle{Density matrix} + \framesubtitle{Recollection of basic equations} + + \begin{block}{Basic equations for Green function techniques} + \vskip-2ex +\input{../equations.tex} + \end{block} + +\end{frame} + +\begin{frame} + \frametitle{Density matrix} + \framesubtitle{Equilibrium} + + \begin{itemize} + \item All electrodes have same Fermi-distribution and here the density is easily + calculated using \emph{only} the Green function + \end{itemize} + + \begin{block}<+->{Equilibrium density matrix $V=0$} + \vskip -2ex + \begin{align*} + \DM &= \frac1{2\pi}\iint_\BZ\dEBZ\cd \kk \dd\E\, % + \G_\kk \sum_\idxE\Scat_{\idxE,\kk} \G^\dagger_\kk\eikr n_F(\E) % + \\ + \DE &= \frac i{2\pi}\iint_\BZ\dEBZ\cd \kk\dd\E\, % + \G_\kk \big[\SE_{\kk}-\SE^\dagger_{\kk} \big] + \G^\dagger_\kk\eikr n_F(\E) & \SE_\kk = \sum_\idxE \SE_{\idxE,\kk} % + \\ + \DE & = \frac i{2\pi}\iint_\BZ\dEBZ\cd \kk\dd\E\, % + \G_\kk \left[% + \G^{\dagger,-1}_\kk - \G^{-1}_\kk + 2i\eta\SO_\kk % + \right]\G^\dagger_\kk\eikr n_F(\E) + \\ + \DE & = \frac i{2\pi}\iint_\BZ\dEBZ\cd \kk\dd\E% + \left[\G_\kk - \G^\dagger_\kk + 2i\eta\G_\kk\SO_\kk\G^\dagger_\kk % + \right]\eikr n_F(\E) + \\ + &\approxeq \frac i{2\pi}\iint_\BZ\dEBZ\cd \kk\dd\E% + \left[\G_\kk - \G^\dagger_\kk \right]\eikr n_F(\E) + \end{align*} + \end{block} + +\end{frame} + + +\begin{frame} + \frametitle{Density matrix} + \framesubtitle{Non-equilibrium} + + \begin{itemize} + \item Electrodes \emph{may} have different Fermi-distribution (at least two different) + \end{itemize} + + \begin{block}<+->{Non-equilibrium density matrix $V\neq0$} + \begin{itemize} + \item Non-equilibrium density may conveniently be split into an equilibrium part and + a non-equilibrium ``correction'' + \end{itemize} + \begin{align*} + \DM &= \frac1{2\pi}\iint_\BZ\dEBZ\cd \kk \dd\E\, % + \G_\kk \sum_\idxE\Scat_{\idxE,\kk} \G^\dagger_\kk\eikr n_{F,\idxE}(\E) % + \\ + \DM=\DE^\idxE+\DN^\idxE &=\DE^\idxE+ + \frac1{2\pi}\sum_{\idxE'\neq\idxE}\iint_\BZ\dEBZ\cd \kk\dd\E\, % + \G_\kk \Scat_{\idxE',\kk} + \G^\dagger_\kk\eikr\big[n_{F,\idxE'}(\E)-n_{F,\idxE}(\E)\big] + \uncover<3->{ + \\ + \DM=\DE^\varsigma+\DN^\varsigma &=\DE^\varsigma+ + \frac1{2\pi}\sum_{\idxE'\neq\varsigma}\iint_\BZ\dEBZ\cd \kk\dd\E\, % + \G_\kk \Scat_{\idxE',\kk} + \G^\dagger_\kk\eikr\big[n_{F,\idxE'}(\E)-n_{F,\varsigma}(\E)\big] + } + \end{align*} + \begin{itemize} + \item<+-> % + Note that if two electrodes have the same Fermi-distribution we have + $n_{F,\idxE}=n_{F,\idxE'}$ + + \item<+-> % + Enables the reduction of ($N_\idxE$) different equations to the number of different + chemical potentials ($N_\varsigma$) + + \end{itemize} + + \end{block} + +\end{frame} + + +\subsection{Numeric integration} + +\begin{frame} + \frametitle{Numeric integration} + \framesubtitle{Equilibrium} + + Calculation of $\DE^\varsigma$: + + \begin{center} + \def\eta{0.1}% + \def\radius{3.25}% + \def\lineS{-1}% + \def\poles{4}% + \def\poleSep{.25}% + % Calculate alpha angle + \pgfmathparse{\poleSep*(\poles+.5)/\radius}% + \edef\betaA{\pgfmathresult}% + \pgfmathparse{atan(\betaA)}% + \edef\alphaA{\pgfmathresult}% + \pgfmathparse{asin(\betaA)}% + \edef\betaA{\pgfmathresult}% + \begin{tikzpicture}[scale=.75] + + % The axes + \begin{scope}[draw=gray!80!black,thick,->] + \draw (-2*\radius+\lineS-.5,0) -- (\radius+1.5,0) node[text=black,below] {$E$}; + \draw (0,0) -- (0,\radius+.5) node[text=black,left] {$\Im$}; + \end{scope} + \node[below] at (0,0) {$\mu$}; + + % The specific coordinates on the path + \coordinate (EB) at (-2*\radius+\lineS,\eta); + \coordinate (C-mid) at ({-\radius+\lineS-sin(\alphaA)*\radius},{cos(\alphaA)*\radius}); + \coordinate (C-end) at (\lineS,{\poleSep*(\poles+.5)}); + \coordinate (L-end) at (\radius,{\poleSep*(\poles+.5)}); + \coordinate (L-end-end) at (\radius+1,{\poleSep*(\poles+.5)}); + \coordinate (real-L-end) at (\radius,\eta); + \coordinate (real-L-end-end) at (\radius+1,\eta); + + \begin{scope}[thick] + + % The path (we draw it backwards) + \draw[->-=.3,very thick] (L-end) -- node[above right] + {$\mathcal L$} (C-end); + \draw[->-=.333,->-=.666,very thick] (C-end) to[out=90+\betaA,in=\alphaA] (C-mid) + node[above] + {$\mathcal C$} + to[out=180+\alphaA,in=90] (EB); + \draw[->-=.25,->-=.75] (EB) -- (real-L-end) node[above left] {$\mathcal R$}; + + % draw the continued lines + \draw[densely dotted] (real-L-end) -- (real-L-end-end); + \draw[densely dotted] (L-end) -- (L-end-end); + + \end{scope} + + % Draw the poles + \foreach \pole in {1,...,14} { + \ifnum\pole>\poles + \draw (0,\pole*\poleSep) circle (2pt); + \else + \fill (0,\pole*\poleSep) circle (2pt); + \fi + } + \node[left,anchor=east] at (0,{\poleSep*(\poles/2+.5)}) {$z_\nu$}; + + % correct size + \path[use as bounding box] (-8,-.5) rectangle ++(13,4.5); + + \draw[densely dotted] (real-L-end-end) to[out=0,in=0] (L-end-end); + \draw[densely dotted,thick] (EB) -- ++(-.5,0); + + \uncover<2->{ + \begin{scope} + \def\muS{.5}% + \node[below] at (\muS,0) {$\mu'$}; + + + % The specific coordinates on the path + \coordinate (EB) at (-2*\radius+\lineS+\muS,\eta); + \coordinate (C-mid) at ({-\radius+\lineS-sin(\alphaA)*\radius+\muS},{cos(\alphaA)*\radius}); + \coordinate (C-end) at (\lineS+\muS,{\poleSep*(\poles+.5)}); + \coordinate (L-end) at (\radius+\muS,{\poleSep*(\poles+.5)}); + \coordinate (L-end-end) at (\radius+1+\muS,{\poleSep*(\poles+.5)}); + \coordinate (real-L-end) at (\radius+\muS,\eta); + \coordinate (real-L-end-end) at (\radius+1+\muS,\eta); + + \begin{scope}[thick,color=good] + + % The path (we draw it backwards) + \draw[->-=.3,very thick] (L-end) -- node[above right] + {$\mathcal L$} (C-end); + \draw[->-=.333,->-=.666,very thick] (C-end) to[out=90+\betaA,in=\alphaA] (C-mid) + node[above] + {$\mathcal C$} + to[out=180+\alphaA,in=90] (EB); + \draw[->-=.25,->-=.75] (EB) -- (real-L-end) node[above left] {$\mathcal R$}; + + % draw the continued lines + \draw[densely dotted] (real-L-end) -- (real-L-end-end); + \draw[densely dotted] (L-end) -- (L-end-end); + + \end{scope} + + % Draw the poles + \foreach \pole in {1,...,14} { + \ifnum\pole>\poles + \draw (\muS,\pole*\poleSep) circle (2pt); + \else + \fill (\muS,\pole*\poleSep) circle (2pt); + \fi + } + + \draw[densely dotted] (real-L-end-end) to[out=0,in=0] (L-end-end); + \draw[densely dotted,thick] (EB) -- ++(-.5,0); + \end{scope} + +} + + \end{tikzpicture} + \end{center} + + \begin{equation*} + \oint\cd \E = + \textcolor{good}{\int_{\mathcal{R}}\cd \E} + + \int_{\mathcal{L}}\cd \E + + \int_{\mathcal{C}}\cd \E + = + i2\pi \sum_\nu z_\nu + \end{equation*} + + \vskip 1em + Applying the residue theorem from complex analysis. + +\end{frame} + +\begin{frame} + \frametitle{Numeric integration} + \framesubtitle{Equilibrium} + + \begin{block}{Example of numeric integration of equilibrium contour} + \begin{itemize} + \item Ensure the lowest integrated energy is \emph{far} below the lowest + eigenvalue of your system + \end{itemize} + + \begin{center} + \begin{tikzpicture}[scale=.8] + \begin{axis}[width=14cm,height=8cm,name=circ,only marks, + ymin=0,ymax=15.5,xmin=-31,xmax=1.5, + xtick={-28,-24,-20,-16,-12,-8,-4}, + extra x ticks={0.25},extra x tick label={$\mu$}, + xlabel={Real Energy [eV]}, + ylabel={Imaginary Energy [eV]}] + \addplot table {../data/EQ_circle.dat}; + \addplot table {../data/EQ_fermi.dat}; + \addplot table {../data/EQ_pole.dat}; + \draw[densely dashed,green!50!black,very thick] (axis cs:-30,0.1) -- + (axis cs:2,0.1); + \draw[->,>=latex] (axis cs:-.5,0) -- (axis cs:-8.75,2.2); + \draw[->,>=latex] (axis cs:-.5,1.25) -- (axis cs:-8.75,10.75); + \node[rotate=35] at (axis cs:-21.5,11.5) {Gauss-Legendre}; + \end{axis} + \begin{axis}[width=6cm,height=5cm,only marks, + at={($(circ.south)+(0,1cm)$)},anchor=south, + xtick={-0.5,0,0.5}, + extra x ticks={0.25},extra x tick label={$\mu$}, + xmin=-.5,xmax=.75,ymin=0,ymax=1.3] + \addplot table {../data/EQ_circle.dat}; + \addplot table {../data/EQ_fermi.dat}; + \addplot table {../data/EQ_pole.dat}; + \draw[<->] (axis cs:.3,0.568494) -- node[sloped,anchor=south] {$2\pi k_BT$} (axis cs:.3,0.406067); + \draw[densely dashed,green!50!black,very thick] + (axis cs:-1,0.03) -- (axis cs:1,0.03); + \node[anchor=south] at (axis cs:0.25,1) {Gauss-Fermi}; + \node[rotate=90,anchor=south] at (axis cs:0.25,.5) {Poles}; + \end{axis} + \end{tikzpicture} + + \end{center} + \end{block} + +\end{frame} + +\begin{frame} + \frametitle{Numeric integration} + \framesubtitle{Algorithms} + + \begin{block}{Quadrature methods} + TranSiesta implements a wide range of quadrature methods + \begin{itemize}[<+->] + \item Newton-Cotes quadratures + \item Gauss-Legendre + \begin{itemize}[<.->] + \item<+-> Even quadrature method ($-x_{-i} = x_i$) + \item Opportunity to only integrate half of the interval + \end{itemize} + \item Continued fraction + \item \dots + \end{itemize} + \end{block} + + \begin{center} + \begin{tikzpicture}[scale=.8] + \begin{axis}[width=17cm,height=8cm,only marks, + ymin=0,ymax=20.5,xmin=-41,xmax=1.5, + xtick={-36,-32,-28,-24,-20,-16,-12,-8,-4}, + xlabel={Real Energy [eV]}, + ylabel={Imaginary Energy [eV]}] + \only<1>{ + \addplot+[red!70!black] table {../data/siesta_30_simpson.dat};} + \only<2>{ + \addplot+[blue!70!black] table {../data/siesta_30_legendre.dat};} + \only<3->{ + \addplot+[green!70!black] table {../data/siesta_30_legendre_right.dat};} + \end{axis} + \end{tikzpicture} + \end{center} + + \doicite{Papior \etal: \doi{10.1016/j.cpc.2016.09.022}} + +\end{frame} + + +\begin{frame} + \frametitle{Numeric integration} + \framesubtitle{Non-equilibrium} + + \begin{block}{Example of numeric integration of non-equilibrium contour} + The non-equilibrium density is conceptually much easier: + \begin{equation*} + \DN \propto n_{F,\idxE}(\E) - n_{F,\idxE'}(\E) + \end{equation*} + + \begin{center} + \begin{tikzpicture}[scale=.8] + \begin{axis}[width=15cm,height=8cm, + ymin=0,ymax=2,xmin=-1,xmax=1,gen/.style={only marks,opacity=.7}, + xlabel={Energy [eV]}, + ylabel={Weight}] + \only<1>{ + %\addplot[gen,bad,domain=-.3:.3,samples=25] {1./(exp((x-0.25)/0.01) + 1)- + % 1./(exp((x+0.25)/0.01) + 1)}; + \addplot[gen,good,domain=-.55:.55,samples=30] {1./(exp((x-0.5)/0.01) + + 1)- 1./(exp((x+0.5)/0.01) + 1)}; + %\draw[<->,bad,very thick] (axis cs:-.25, 0.3) -- (axis cs:.25,0.3) node[midway,above] + %{$n_F(\E+0.25\,\mathrm{eV}) - n_F(\E-0.25\,\mathrm{eV})$}; + \draw[<->,good,very thick] (axis cs:-.5, 1.3) -- (axis cs:.5,1.3) node[midway,above] + {$n_F(\E+0.5\,\mathrm{eV}) - n_F(\E-0.5\,\mathrm{eV})$}; + \node[below left] at (rel axis cs:.9,.9) {2 different $\mu$}; + } + \only<2>{ + \addplot[gen,ok,domain=-.05:0.55,samples=25] {1./(exp((x-0.5)/0.01)+1)-1./(exp((x)/0.01)+1)}; + \addplot[gen,good,domain=-.55:.55,samples=30] {1./(exp((x-0.5)/0.01)+1)-1./(exp((x+0.5)/0.01)+1)}; + \addplot[gen,bad,domain=-.55:.05,samples=25] {1./(exp((x)/0.01)+1)- 1./(exp((x+0.5)/0.01)+1)}; + \draw[<->,very thick,bad] (axis cs:-.5, 0.6) -- (axis cs:0,0.6) node[midway,above] + {$n_F(\E) - n_F(\E-0.5\,\mathrm{eV})$}; + \draw[<->,very thick,ok] (axis cs:0, 0.2) -- (axis cs:0.5,0.2) node[midway,above] + {$n_F(\E+0.5\,\mathrm{eV}) - n_F(\E)$}; + \draw[<->,very thick,good] (axis cs:-.5, 1.3) -- (axis cs:.5,1.3) node[midway,above] + {$n_F(\E+0.5\,\mathrm{eV}) - n_F(\E-0.5\,\mathrm{eV})$}; + + \node[below left] at (rel axis cs:.9,.9) {3 different $\mu$}; + } + + \end{axis} + \end{tikzpicture} + \end{center} + \end{block} + +\end{frame} + + +% Skip the last summation of results page +\endinput + +\begin{frame} + \frametitle{Non-equilibrium Green function} + \footnotesize + + \vskip -2ex + \begin{columns} + + \column{.5\textwidth} + \begin{block}{Basic equations} + \vskip-2ex +\input{../equations.tex} + \end{block} + + \column{.5\textwidth} + \begin{block}{Local Density of States} + \vskip-2ex + \begin{align*} + \rho_{\nu}(\E) &= -\frac1\pi\Im[\G(\E) \SO]_{\nu} = \sum_\idxE\rho_\nu^\idxE(\E) + + \text{bound states} + \\ + \rho_{\nu}^{\idxE}(\E) &= \frac1{2\pi}\Re[\Spec_\idxE(\E) \SO]_{\nu} + \end{align*} + \end{block} + + \end{columns} + + \begin{block}{Density matrix using non-equilibrium Green functions} + \vskip -2ex + \begin{align*} + \DM &=\frac1{2\pi} + \iint_\BZ\dEBZ\cd \kk \dd\E\, \sum_\idxE\Spec_{\idxE,\kk}(\E) n_{F,\idxE}(\E) + \eikr + \\ + \DM^\varsigma &=\frac i{2\pi}\iint_\BZ\dEBZ\cd \kk\dd\E% + \left[\G_\kk - \G^\dagger_\kk \right]\eikr n_{F,\varsigma}(\E) + + + \frac1{2\pi}\sum_{\idxE|\varsigma_\idxE\neq\varsigma}\iint_\BZ\dEBZ\cd \kk\dd\E\, % + \G_\kk \Scat_{\idxE,\kk} + \G^\dagger_\kk\eikr\big[n_{F,\varsigma_\idxE}(\E)-n_{F,\varsigma}(\E)\big] + & \text{$\varsigma = \{\mu, k_BT\}$} + \end{align*} + \end{block} + + \begin{block}{Transmission} + \vskip-2ex + \begin{columns} + + \column{.45\linewidth} + \begin{align*} + \T_{\idxE\mto\idxE'}(\E) &= + \Tr\big[\Scat_{\idxE'}(\E)\G(\E)\Scat_{\idxE}(\E)\G^\dagger(\E)\big]\quad\text{, for $\idxE\neq\idxE'$} + \\ + \T_{\idxE}(\E) &\equiv\sum_{\idxE'\neq\idxE}\T_{\idxE\mto\idxE'} (\E) + \\ + \RE_\idxE(\E) & %=\mathbf 1 -\T_\idxE (\E) + = \mathbf 1 -\Big\{ + \im \Tr\big[(\G(\E)-\G^\dagger(\E))\Scat_\idxE(\E)\big] + -\Tr[\Scat_\idxE(\E) \G(\E)\Scat_\idxE(\E)\G^\dagger(\E)] + \Big\} + \\ + I_{\idxE\mto\idxE'} &= \frac{e^2}{h}\iint\cd\E\dd\kk\, \T_{\idxE\mto\idxE'}(\E)[n_{F,\idxE}(\E) - n_{F,\idxE'}(\E)]. + \end{align*} + + \column{.41\linewidth} + \vskip -2em + \begin{equation*} + \JJ_{\idxE,\nu\mu} = \frac e h \Im\big[ + \Spec_{\idxE,\nu\mu}(\HH_{\mu\nu} - \E\SO_{\mu\nu}) + - + \Spec_{\idxE,\mu\nu}(\HH_{\nu\mu} - \E\SO_{\nu\mu})\big] + \end{equation*} + + \end{columns} + \end{block} + +\end{frame} + + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "talk" +%%% End: diff --git a/presentations/02/reiterate.tex b/presentations/02/reiterate.tex new file mode 100644 index 0000000..3fb7ad3 --- /dev/null +++ b/presentations/02/reiterate.tex @@ -0,0 +1,100 @@ +\subsection{Reiterate self-energy requirements} + +\begin{frame} + \frametitle{Reiterate self-energy requirements} + \tikzset{block/.style={ + shape=rectangle,draw,minimum size=.8cm}, + dd/.style={densely dotted}, + block dd/.style={block,dd}, + } + \def\bsize{.8cm} + + \begin{block}{Rules for using self-energies} + + Coupling a \emph{bulk} electrode to a device requires(!) coupling region to behave + \emph{bulk} as well. + + \vspace{4pt} + + \begin{center} + \begin{tikzpicture} + + \foreach \x in {0,1,2,3,4,5,6,7,8} { + \def\tmpcol{black} + \ifnum\x>2 + \def\tmpcol{red!70!black} + \fi + \ifnum\x>3 + \def\tmpcol{green!70!black} + \fi + \ifnum\x>4 + \def\tmpcol{red!70!black} + \fi + \ifnum\x>5 + \def\tmpcol{black} + \fi + \node[block,gray] at ({(\x-0.5)*\bsize},3*\bsize) {}; + + \expandafter\fill\expandafter[\tmpcol] ({(\x-0.75)*\bsize},3*\bsize) + circle (3pt); + \expandafter\fill\expandafter[\tmpcol] ({(\x-0.25)*\bsize},3*\bsize) + circle (3pt); + + } + + \node[block dd] at (-1.5*\bsize,0.5*\bsize) {$\SE_{-}$}; + \foreach \x in {0,1,2,3,4,5,6,7,8} { + \ifnum\x<3 + \def\tmpnum{0} + \fi + \ifnum\x>2 + \pgfmathparse{int(\x-2)} + \edef\tmpnum{\pgfmathresult} + \fi + \ifnum\x>5 + \pgfmathparse{int(4)} + \edef\tmpnum{\pgfmathresult} + \fi + \node[block] (A\x) at ({(\x-0.5)*\bsize},0.5*\bsize) {$\HH_\tmpnum$}; + \ifnum\x>0 + \pgfmathparse{int(\x-1)} + \edef\xp{\pgfmathresult} + \ifnum\x>6 + \pgfmathparse{int(5)} + \edef\tmpnum{\pgfmathresult} + \fi + \draw[->,dd] (A\xp) to[out=75,in=105] node[above] {$\VV_\tmpnum$} (A\x); + \draw[<-,dd] (A\xp) to[out=-75,in=-105] node[below] {$\VV^\dagger_\tmpnum$} (A\x); + \fi + } + \node[block dd] at (8.5*\bsize,0.5*\bsize) {$\SE_{+}$}; + \end{tikzpicture} + + \end{center} + + \vspace{-12pt} + + \begin{itemize} + \item<+-> Remember that $\SE_{-/+}$ is a correction to the Hamiltonian (i.e. + $\HH' = \HH + \SE$) + + \item \emph{Extremely} important in TranSiesta, electrostatics are long-range! + \end{itemize} + \end{block} + + % \begin{block}<2->{Use symmetries whenever you can} + + % \begin{itemize} + % \item If you have transverse periodic electrodes you should apply Bloch's theorem + % using the flag \texttt{Bloch} + % \end{itemize} + + % \end{block} + +\end{frame} + + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "talk" +%%% End: diff --git a/presentations/02/steps.tex b/presentations/02/steps.tex new file mode 100644 index 0000000..e36f65c --- /dev/null +++ b/presentations/02/steps.tex @@ -0,0 +1,188 @@ + +\section{Creating a benzene dithiol (BDT) geometry} + +\begin{frame} + \frametitle{Creating a benzene dithiol (BDT) geometry} + \tableofcontents[currentsection] +\end{frame} + +\input reiterate.tex + +\subsection{Electrodes} + +\def\tdir{% + \tikz \draw[->,>=latex] (0,0) -- node[right,anchor=west] {T}(0,1.5); +} + +\begin{frame} + \frametitle{Benzene dithiol (BDT)} + \framesubtitle{Electrode} + + \begin{itemize} + \item BDT attached to Gold electrodes + \item We utilise 100 surface (AB-stacking) + \item Decide $k$-point sampling in transverse direction (converge) + \end{itemize} + + \only<1-2>{ + \begin{center} + \fbox{\incg[width=.4\linewidth]{elec}} + \hskip 2ex + \tdir + \end{center}} + \only<3->{ + \begin{center} + \fbox{\incg[width=.4\linewidth]{elec_rep_left}} + \hskip 2ex + \tdir + \end{center}} + + \vskip 2ex + \uncover<2->{ + \begin{center} + \large + Is there anything special about this electrode? + \end{center}} + + \vskip 6ex +\end{frame} + + +\subsection{Molecule} + +\begin{frame} + \frametitle{Benzene dithiol (BDT)} + \framesubtitle{BDT} + + Define the molecule + + \vskip 6ex + + \begin{columns} + \column{.3\linewidth} + \centering + \incg[height=.4\textheight]{bdt} + \hskip 1ex + \tdir + + \column{.7\linewidth} + \begin{itemize} + \item Relax structure using SIESTA + \end{itemize} + \end{columns} + +\end{frame} + +\subsection{Intermediate} + +\begin{frame} + \frametitle{Benzene dithiol (BDT)} + \framesubtitle{Intermediate connect} + + Attach gold to the molecule + + \vskip 6ex + + \begin{columns} + \column{.3\linewidth} + \centering + \incg[height=.5\textheight]{bdt_tip} + \hskip 1ex + \tdir + + \column{.7\linewidth} + \begin{itemize} + \item Consider stacking of \emph{pyramids} + \begin{itemize} + \item A-BDT-A + \item A-BDT-B + \item B-BDT-B + \end{itemize} + \item Relax structure \emph{again}, constrain the \emph{pyramids} + \end{itemize} + + \end{columns} + +\end{frame} + +\subsection{Intermediate electrode layers} + +\begin{frame} + \frametitle{Benzene dithiol (BDT)} + \framesubtitle{Intermediate electrode layers} + + Attach a couple of electrode layers + + \vskip 6ex + + \begin{columns} + \column{.3\linewidth} + \centering + \incg[height=.45\textheight]{bdt_tip_layer} + \hskip 1ex + \tdir + + \column{.7\linewidth} + \begin{itemize} + \item \emph{Follow} the stacking! + \item Relax structure \emph{again}, constrain the \emph{electrode layers} + \end{itemize} + \end{columns} + +\end{frame} + +\subsection{Finalising simulation} + +\begin{frame} + \frametitle{Benzene dithiol (BDT)} + \framesubtitle{Attach electrode and more intermediate layers} + + Attach the electrodes on both sides (converge number of intermediate layers), use + Bloch's theorem(!) + + \vskip 3ex + + \begin{columns} + \column{.3\linewidth} + \centering + \incg[height=.6\textheight]{full} + \hskip 1ex + \tdir + + \column{.7\linewidth} + \begin{itemize} + \item \emph{Follow} the stacking! + \item Relax structure \emph{again}, constrain the \emph{electrode layers} + \item Determining the extra number of layers: + \begin{itemize} + \item Consider the molecule as a ``defect'' + \item The defect has a screening length in the central region (the extra + electrode layers) + \item Ensure that the electrodes ``behave as bulk'' electrodes (away from defect) + \end{itemize} + \item<2-> What does a metallic electrode require: + \begin{enumerate} + \item<2-> % + \only<3>{\color{red!50!black}}Bad screening $\to$ many extra electrode layers + % + \item<2-> % + \only<3>{\color{green!50!black}}Good screening $\to$ few extra electrode layers + \end{enumerate} + \item<2-> What does a semi-conducting electrode require: + \begin{enumerate} + \item<2-> % + \only<3>{\color{green!50!black}}Bad screening $\to$ many extra electrode layers + % + \item<2-> % + \only<3>{\color{red!50!black}}Good screening $\to$ few extra electrode layers + \end{enumerate} + \end{itemize} + \end{columns} + \vskip 2ex + +\end{frame} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "talk" +%%% End: diff --git a/presentations/02/summary.tex b/presentations/02/summary.tex new file mode 100644 index 0000000..dfb4c08 --- /dev/null +++ b/presentations/02/summary.tex @@ -0,0 +1,50 @@ +\section{Setup sequence summary} + +\begin{frame} + \frametitle{Setup sequence summary} + + \begin{enumerate}[<+->] + + \item Create geometry + \begin{itemize} + % Geometry setup + \item Determine the electrode size in the semi-infinite direction + + \item Determine required number of \emph{screening} layers between electrode and device + \item Finalise structure + \end{itemize} + + \item Create input options, using either method: + \begin{itemize} + \item Create input yourself; chemical potential, electrodes and contours + + \item Pre-4.1 users; use \texttt{ts2ts} (converts old input to new input) + + \item \texttt{tselecs.sh}, capable of creating input for $N$ electrodes, requires + fine-tuning afterwards(!) + + \end{itemize} + + \item Run TranSiesta on electrodes with \emph{high} $\mathbf k$-point sampling along + the semi-infinite direction ($\ge50$) + for accurate bulk description of the electronic structure + + \item Analyse the pivoting methods using TranSiesta and \texttt{TS.Analyze} + + \item Run TranSiesta on device at $V=0$ + + \item !!! \textbf{ENSURE CONVERGENCE} !!! + + \item Step-by-step increase/decrease the bias and copy the \texttt{siesta.TSDE} from + the nearest lower bias to the folder for restart capability + + \item Run TBtrans, and possibly use the interpolation scheme for precise $IV$ curves + + \end{enumerate} + +\end{frame} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "talk" +%%% End: diff --git a/presentations/02/talk.tex b/presentations/02/talk.tex new file mode 100644 index 0000000..af5429b --- /dev/null +++ b/presentations/02/talk.tex @@ -0,0 +1,32 @@ +\input ../common.tex + +\graphicspath{{fig/}{fig-defence/}{paper-fig/}} +\usepackage[export]{adjustbox} + +\institute[2017, Nick R. Papior; DTU Nanotech]{\begin{tikzpicture} + \node[shape=rectangle split,rectangle split parts=2,anchor=base] at (0,0) + {DTU: sisl, TBtrans and TranSiesta workshop}; + \end{tikzpicture}} + +\date{26. October 2016} +\title{TBtrans/TranSiesta for smarties} +\author{Nick R. Papior} + +\begin{document} + +\begin{frame} + \titlepage +\end{frame} + +\begin{frame} + \frametitle{Outline} + \tableofcontents +\end{frame} + +\input steps.tex +\input negf.tex +\input contour.tex +\input chemical.tex +\input summary.tex + +\end{document} diff --git a/presentations/03/algorithms.tex b/presentations/03/algorithms.tex new file mode 100644 index 0000000..4a0d37d --- /dev/null +++ b/presentations/03/algorithms.tex @@ -0,0 +1,415 @@ +\section{Algorithms for calculation of the Green function} + +\begin{framenologo} + \frametitle{Algorithms for calculation of the Green function} + \tableofcontents[currentsection] +\end{framenologo} + + +\subsection{Problems in NEGF} + +\begin{framenologo} + \frametitle{Algorithms for calculation of the Green function} + \framesubtitle{Equations again --- and problems herein} + + \begin{block}{NEGF equations} + \vskip -2ex + \begin{align*} + \DM & =\frac1{2\pi} + \iint_\BZ\dEBZ\cd \kk \dd\E\, \sum_\idxE\G_\kk(\E)\Scat_{\idxE,\kk}(\E)\G_\kk^\dagger(\E) n_{F,\idxE}(\E) + \eikr + \\ + \G_\kk(\E)&=\big[(\E+\im\eta)\SO_\kk - \HH_\kk - \sum_\idxE\SE_{\idxE,\kk}(\E-\mu_\idxE)\big]^{-1} + \\ + \Scat_{\idxE,\kk}(\E) &=\im\big(\SE_{\idxE,\kk}(\E-\mu_\idxE)-\SE^\dagger_{\idxE,\kk}(\E-\mu_\idxE)\big) + \end{align*} + \end{block} + + \begin{block}{Problems} + \begin{itemize} + \item Matrix inversion to calculate the Green function + \item Green function dimension determined from \# of orbitals ($N$) + \item Elements in matrix scales $N^2$, inversion has complexity $\mathcal O(N^3)$ + \end{itemize} + \end{block} + + \begin{block}<2->{Solvable problems} + \begin{itemize} + \item Only a subset of the Green function is needed (Hamiltonian sparsity pattern) + \item Different algorithms for \emph{selective} inversion exists, (BTD, MUMPS, + PEXSI, \dots) + \end{itemize} + \end{block} + +\end{framenologo} + + +\begin{frame} + \frametitle{Algorithms for calculation of the Green function} + \framesubtitle{Implemented algorithms} + + \footnotesize + \begin{block}{\small LAPACK, full matrices} + + \begin{description} + \item[-] Slow + \item[-] Memory hungry + \item[+] Very easy to implement + \end{description} + + \end{block} + + \begin{block}{\small MUMPS, sparse matrices} + + \begin{description} + \item[-] Serial and slow + \item[-] Memory hungry (compared to BTD) + \item[-] Slow for wide electrodes due to dense Green function requirement + \item[+] Relatively easy to implement, special MUMPS memory layout (which is nicely documented) + \item[+] May be extended to parallel execution + \item[+] Ideal for tight-binding matrices due to extreme sparsity + \end{description} + + \end{block} + + \begin{block}{\small Block-Tri-Diagonal, block tri diagonal matrices} + + \begin{description} + \item[-] Limited by width of electrodes + \item[-] Hard to implement (only triple product) + \item[+] Fast + \item[+] Memory efficient for narrow electrodes + \end{description} + + \end{block} + + \doicite{Papior \etal: \doi{10.1016/j.cpc.2016.09.022}} + +\end{frame} + + + +\subsection{Block Tri Diagonal inversion (BTD)} + +\begin{frame} + \frametitle{Block tri-diagonal inversion} + + \begin{itemize} + % + \item + Reducing the inversion algorithm to take advantage of the intrinsic block tri-diagonality of + the sparsity pattern + + \begin{columns}[c] + + \column{.5\textwidth} + + \begin{equation*} + \mathbf G^{-1}= + \begin{pmatrix} + \bm A_1 & \bm C_2 & 0 & &\cdots \\ + \bm B_1 & \bm A_2 & \bm C_3 & 0& \cdots \\ + 0 & \bm B_2 &\ddots & \ddots \\ + & 0 & \ddots & & \bm C_p \\ + \vdots & \vdots & & \bm B_{p-1} & \bm A_p\\ + \end{pmatrix} + \end{equation*} + + \column{.5\textwidth} + + \begin{align*} + \widetilde{\mathbf Y}_n&=\left[\mathbf A_{n-1}-\mathbf Y_{n-1}\right]^{-1} + \mathbf C_n % + & & \mathbf Y_1=0 + \\ + \mathbf Y_n&=\mathbf B_{n-1}\widetilde{\mathbf Y}_n + \\ + \widetilde{\mathbf X}_n & =\left[\mathbf A_{n+1}-\mathbf X_{n+1}\right]^{-1} + \mathbf B_n % + & & \mathbf X_p=0 + \\ + \mathbf X_n & =\mathbf C_{n+1}\widetilde{\mathbf X}_n + \end{align*} + + \end{columns} + + \begin{align*} + \left. + \begin{aligned} + \G_{n,n}&=\left[\mathbf A_n-\mathbf X_n-\mathbf Y_n\right]^{-1}, + \\ + \G_{m-1,n}&%=-\left[\mathbf A_m-\mathbf Y_m\right]^{-1}\mathbf C_{m+1} \G_{m+1,n} + = + -\widetilde{\mathbf Y}_{m} \G_{m,n}\quad\text{ for }m\le n, + \\ + \G_{m+1,n}&%=-\left[\mathbf A_m-\mathbf X_m\right]^{-1}\mathbf B_{m-1} \G_{m-1,n} + = + -\widetilde{\mathbf X}_{m} \G_{m,n}\quad\text{ for }m\ge n, + \end{aligned}\qquad + \right\}\quad\G = + \begin{aligned} + \incg{G_recursion} + \end{aligned} + \end{align*} + + \item Note that this is a \emph{general} algorithm, it does not require Hermiticity + + \end{itemize} + + \vskip 2em + + \doicite{Papior \etal: \doi{10.1016/j.cpc.2016.09.022}} + +\end{frame} + + + +\subsection{Pivoting for BTD} + + +\begin{frame} + \frametitle{Enforcing BTD --- going quasi 1D} + \framesubtitle{Pivoting matrix elements, order from dis-order} + + \begin{columns} + \begin{column}{.45\linewidth} + \begin{itemize} + \item 2,400 atoms + \item 21,600 orbitals + \end{itemize} + \incg[width=1\linewidth]{dev2} + + \small + \begin{equation*} + \text{\huge \only<1>{?}}\quad + \begin{pmatrix} + \mathbf A_1 & \mathbf C_2 & 0 & \cdots & \\ + \mathbf B_1 & \mathbf A_2 & \mathbf C_3 & 0& \cdots \\ + 0 & \mathbf B_2 &\ddots & \ddots & 0 \\ + \vdots & 0 & \ddots & \ddots & \mathbf C_p \\ + & \vdots & 0 & \mathbf B_{p-1} & \mathbf A_p\\ + \end{pmatrix}\quad\text{\huge \only<1>{?}} + \end{equation*} + + \end{column} + \begin{column}<2->{.55\linewidth} + \begin{itemize} + \item White $=0$ + \item Black $\neq0$ + \end{itemize} + \begin{center} + \href{run:../fig/pivoting.mp4}{% + \begin{tikzpicture}% + \only<2>{% + \node[inner sep=0pt,outer sep=0pt,draw,thick] (A) {% + \incg[height=.5\textheight]{atom+el-3_ani_0}}; + \draw[->] ($(A.west)!.97!(A.north west)-(.5,0)$) node[left,green] {Elec-1} -- ++(.4,0); + \draw[->] ($(A.west)!.64!(A.north west)-(.5,0)$) node[left,red] {Elec-2} -- ++(.4,0); + \draw[->] ($(A.west)!.64!(A.south west)-(.5,0)$) node[left,blue] {Elec-3} -- ++(.4,0); + \draw[->] ($(A.west)!.97!(A.south west)-(.5,0)$) node[left,purple] {Elec-4} -- ++(.4,0); + } + \only<3>{% + \node[inner sep=0pt,outer sep=0pt,draw,thick] (A) {% + \incg[height=.5\textheight]{atom+el-3_ani_21483}}; + \draw[->] ($(A.west)!.97!(A.north west)-(.5,0)$) node[left,blue!80!black] {Elec-3} -- ++(.4,0); + \draw[->] ($(A.west)!.64!(A.north west)-(.5,0)$) node[left,purple!80!black] {Elec-4} -- ++(.4,0); + \draw[->] ($(A.west)!.64!(A.south west)-(.5,0)$) node[left,red!80!black] {Elec-2} -- ++(.4,0); + \draw[->] ($(A.west)!.97!(A.south west)-(.5,0)$) node[left,green!80!black] {Elec-1} -- ++(.4,0); + } + \end{tikzpicture}% + } + \end{center} + \end{column} + \end{columns} + + \doicite{Papior \etal: \doi{10.11581/DTU:00000025}} + +\end{frame} + + +\def\tmpig#1{\fbox{\incg[width=.3\linewidth]{#1}}} +\begin{framenologo} + \setlength\fboxsep{0pt} + \frametitle{Other pivoting schemes} + \framesubtitle{An ongoing investigation in Finite Element Methods} + + \begin{tabular}{ccc} + Elec-1 & Elec-2 & Elec-3 + \\ + \tmpig{atom+el-1} & \tmpig{atom+el-2} & \tmpig{atom+el-3} + \\ + reverse Cuthill-McKee & Gibbs-Poole-Stockmeyer & Gen. Gibbs-Poole-Stockmeyer + \\ + \tmpig{atom+rev-CM} & \tmpig{atom+GPS} & \tmpig{atom+GGPS} + \end{tabular} + + \begin{tikzpicture}[remember picture,overlay] + \node[opacity=.8,anchor=north east] at (current page.north east) + {\incg[width=5cm]{dev2}}; + + \node[opacity=.8,scale=.5,anchor=south west,outer sep=2*\framesep] at ($(current page.south west)+(0,.3)$) + {$\begin{pmatrix} + \mathbf A_1 & \mathbf C_2 & 0 & \cdots & \\ + \mathbf B_1 & \mathbf A_2 & \mathbf C_3 & 0& \cdots \\ + 0 & \mathbf B_2 &\ddots & \ddots & 0 \\ + \vdots & 0 & \ddots & \ddots & \mathbf C_p \\ + & \vdots & 0 & \mathbf B_{p-1} & \mathbf A_p\\ + \end{pmatrix}$ + }; + + \end{tikzpicture} + + \doicite{{CutHill: \doi{10.1145/800195.805928}, GPS: SIAM Numerical Analysis - 1976}, + GGPS: Progress In Electromagnetics Research - 2009} + +\end{framenologo} + + +\subsection{The omnipotent pivoting scheme?} + +\begin{frame} + \frametitle{Pivoting for optimal BTD} + \framesubtitle{Analyzing the sparsity pattern} + + \begin{center} + \texttt{transiesta -fdf TS.Analyze RUN.fdf} + \end{center} + + \begin{itemize}[<+->] + \item Analysing (nearly) all build-in pivoting schemes + + \item Extremely fast + + \item Atomic and/or orbital pivoting allowed (similar pivoting table) + + \item Can be run on a single core machine for, practically any size of system(!) + + \item Before starting big calculations, always do this analyse step! It takes + \emph{no} time and can save you many hours of computational time. + + \item Example, select the one which uses the least amount of memory + + \end{itemize} + +\end{frame} + + +\subsection{Efficient calculation of the spectral function} + +\begin{frame} + \frametitle{Efficient calculation of the spectral function} + + \begin{itemize}[<+->] + \item Using the full matrix $\G_\kk$ and then the product $\G_\kk\Scat\G_\kk^\dagger$ + \begin{equation*} + \Full \;\; \Left \;\; \Full ^\dagger = \Full + \end{equation*} + \item However, only the black elements are required for the MM + \begin{equation*} + \FullLeft \;\; \Left \;\; \FullLeft ^\dagger = \Full\;, + \end{equation*} + which means we need not calculate the full $\G_\kk$ + + \begin{equation*} + \Spec_{\idxE} = + \begin{aligned} + \incg{A_recursion} + \end{aligned}. + \end{equation*} + + \end{itemize} + + \vskip 2em + + \doicite{Papior \etal: \doi{10.1016/j.cpc.2016.09.022}} + +\end{frame} + + + +\subsection{Method comparisons} + + +\begin{frame} + \frametitle{Method comparisons} + \framesubtitle{Performance} + + \begin{itemize} + \item Graphene of varying length (BTD ideal) + \item Tested with, MUMPS, LAPACK and BTD + \end{itemize} + + \begin{center} + \incg[height=.3\textheight]{perf_method_old} + + \uncover<2->{% + \incg[height=.3\textheight]{perf_method_new}} + \end{center} + + \uncover<3->{ + \begin{center} + Typically BTD is the fastest method! + \end{center} + } + + \doicite{Papior \etal: \doi{10.1016/j.cpc.2016.09.022}} + +\end{frame} + + +\def\setup#1#2{ + \def\bw{#1} + \def\bh{#2} + \pgfmathparse{\bw * 2} + \edef\bwtwo{\pgfmathresult} + \pgfmathparse{\bw * 4} + \edef\bwfour{\pgfmathresult} + \pgfmathparse{\bw * 5} + \edef\bwfive{\pgfmathresult} + \pgfmathparse{\bw * 8} + \edef\bweight{\pgfmathresult} +} + +\subsection{Transmission algorithm} + + +\begin{frame}[fragile] + \frametitle{Transmission algorithm} + \framesubtitle{Calculating the Green function, slightly differently} + + \begin{itemize} + \item Reduce Green function calculation to region of interest ($D$) + + \item Algorithms determined from user-requested quantities + + \end{itemize} + + \vskip 4em + + \begin{itemize} + \item Algorithm: + \end{itemize} + \begin{center} + \incg[]{tbt-algorithm} + \end{center} + + \uncover<2->{ + \begin{tikzpicture}[remember picture,overlay] + \node at ($(current page.center)+(2.5,1.7)$) {% + \incg[width=.7\linewidth]{inv-block3}% + }; + \end{tikzpicture} + } + + \doicite{Papior \etal: \doi{10.1016/j.cpc.2016.09.022}} + +\end{frame} + + + + + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "talk" +%%% End: diff --git a/presentations/03/electrodes.tex b/presentations/03/electrodes.tex new file mode 100644 index 0000000..3d29014 --- /dev/null +++ b/presentations/03/electrodes.tex @@ -0,0 +1,9 @@ +\section{Electrodes} + + + + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "talk" +%%% End: diff --git a/presentations/03/hartree.tex b/presentations/03/hartree.tex new file mode 100644 index 0000000..d35952b --- /dev/null +++ b/presentations/03/hartree.tex @@ -0,0 +1,132 @@ +\section{Electrostatic potential} + +\begin{framenologo} + \frametitle{Electrostatic potential} + \tableofcontents[currentsection] +\end{framenologo} + +\subsection{Boundary conditions} + +\begin{frame} + \frametitle{Electrostatic potential} + \framesubtitle{Boundary conditions} + + Boundary conditions are fulfilled via: + \begin{itemize}[<+->] + \item<.-> Electrodes behave bulk + + \item Extended electrode regions helps the above + + \item Corrections to the Hartree potential are necessary (TranSiesta solves Poisson + equation via Fourier transforms, i.e. periodic) + + \item Always remember that the self-energy \emph{forces} the boundary conditions, + i.e. a long range decay-potential may be forced too short + + \end{itemize} + + \uncover<.->{ + \begin{center} + + \begin{tikzpicture}[z=.5cm,>=latex,scale=.75,font=\scriptsize] + \drawcube[draw] + \begin{scope}[xshift=-3cm,x=3cm] + \begin{scope} + \drawcube[draw,densely dotted] + \fill[red!50!black,fill opacity=0.5] (0,0,1) -- (1,0,1) -- (1,1,1) -- (0,1,1) + -- cycle; + \end{scope} + \end{scope} + \begin{scope}[xshift=1cm,x=3cm] + \begin{scope} + \drawcube[draw,densely dotted] + \fill[blue!50!black,fill opacity=0.5] (0,0,1) -- (1,0,1) -- (1,1,1) -- (0,1,1) + -- cycle; + \end{scope} + \end{scope} + + % Draw arrows + \node[anchor=center] at (-1.5,.5,.5) {$-\infty=\SE_\leftarrow$}; + \node[anchor=center] at (2.5,.5,.5) {$+\infty=\SE_\rightarrow$}; + + \draw[<-] (0.5,0,0.) -- ++(0,-1,0) node[below] {Simulation cell}; + % \draw[->] (.5,.5,.5) -- (1.5,.5,.5); + % \draw[->] (.5,.5,.5) -- (.5,1.5,.5); + + \end{tikzpicture} + + \end{center}} + +\end{frame} + + +\begin{frame} + \frametitle{Electrostatic potential} + \framesubtitle{Boundary conditions} + + \begin{block}<+->{Hartree potential} + + NEGF calculations are \emph{very} different from periodic calculations because of the + semi-infinite leads. + + \end{block} + + \begin{block}<+->{Boundary conditions} + + The electrode Hartree potential are the boundary conditions. + + In TranSiesta this is accomplished by fixing the electrostatic potential at one of the + electrode planes (the plane farthest from the device region). + + \begin{itemize} + \item For $N_\idxE=2$ and aligned semi-infinite directions the potential profile can + easily be approximated by a linear ramp $V(x) = ax+b$. + + \item For un-aligned semi-infinite directions (or $N_\idxE\neq2$) the potential + profile cannot easily be approximated. + + \begin{itemize}[<+->] + \item By default, TranSiesta implements a \emph{box} solution (bad guess) which + only defines the boundary conditions on the electrode atoms. I.e. sets the Hartree + potential equal to the chemical potential in the cell region of the electrode. + + \item A much better approach is to provide an \emph{external} potential profile + guess, i.e. solve the boundary conditions using external Poisson + solvers\footnote{\uncover<4->{This may seem like a more daunting task than it + is. The guess is the Poisson solution \emph{without} charges, only the + boundary conditions.}} + + \end{itemize} + \end{itemize} + + \end{block} + +\end{frame} + + +\subsection{Multi-electrode electrostatic potential} + +\begin{frame} + \frametitle{Electrostatic potential} + \framesubtitle{Multi-electrode electrostatic potential} + + \begin{itemize} + \item 6-electrode system + \item Default \emph{box} solution for the Poisson equation + \item External Poisson solution with electrode regions correct chemical potential + \end{itemize} + + \begin{center} + \incg[width=.8\linewidth]{ts-poisson-initial} + \end{center} + + \begin{block}<2->{Help needed!} + + This is where TranSiesta could benefit the most from external help! + + A proper, Poisson solver with arbitrary boundary conditions. + + \end{block} + +\end{frame} + diff --git a/presentations/03/talk.tex b/presentations/03/talk.tex new file mode 100644 index 0000000..f9e364c --- /dev/null +++ b/presentations/03/talk.tex @@ -0,0 +1,28 @@ +\input ../common.tex + +\graphicspath{{fig/}} + +\institute[2017, Nick R. Papior; DTU Nanotech]{\begin{tikzpicture} + \node[shape=rectangle split,rectangle split parts=2,anchor=base] at (0,0) + {DTU: sisl, TBtrans and TranSiesta workshop}; + \end{tikzpicture}} + +\date{27. October 2017} +\title{$N_\idxE>2$ NEGF calculations using TranSiesta} +\author{Nick R. Papior} + +\begin{document} + +\begin{frame} + \titlepage +\end{frame} + +\begin{frame} + \frametitle{Outline} + \tableofcontents +\end{frame} + +\input hartree.tex +\input algorithms.tex + +\end{document} diff --git a/presentations/Makefile b/presentations/Makefile new file mode 100644 index 0000000..f41f940 --- /dev/null +++ b/presentations/Makefile @@ -0,0 +1,36 @@ + + +presentation: talk +handout: handout.pdf + +TEXINPUTS:=../theme/:$(TEXINPUTS) +export TEXINPUTS + +talk: talk.pdf +.PHONY: talk.pdf +talk.pdf: + pdflatex -shell-escape talk.tex + +extra: + bibtex talk + makeindex talk + +.PHONY: handout.pdf +handout.pdf: + pdflatex -shell-escape "\PassOptionsToClass{handout}{beamer}\input{talk}" + mv talk.pdf handout.pdf + +clean: clean-talk clean-handout +clean-talk: + -rm -f talk.aux talk.out talk.vrb talk.bbl talk.bcf talk.blg talk.nav talk.run.xml talk.snm talk.toc +clean-handout: + -rm -f handout.aux handout.out handout.vrb handout.bbl handout.bcf handout.blg handout.nav handout.run.xml handout.snm handout.toc + +extra-handout: + bibtex handout + makeindex handout + +talks: + make -C 01 + make -C 02 + make -C 03 diff --git a/presentations/beamertemplate.tex b/presentations/beamertemplate.tex new file mode 100644 index 0000000..2b1b73e --- /dev/null +++ b/presentations/beamertemplate.tex @@ -0,0 +1,65 @@ +\documentclass[10pt]{beamer} +%\documentclass[10pt]{beamer} +%\geometry{paperwidth=140mm,paperheight=105mm} +\geometry{paperwidth=180mm,paperheight=135mm} +%\geometry{paperwidth=240mm,paperheight=150mm} +\usepackage{kpfonts} +\usepackage{hyperref} +%\usepackage{beamerthemedtu} +\usepackage{../theme/beamerthemeworkshopdtu} +\usepackage[protrusion=true,expansion]{microtype} + +\usepackage{pgfplotstable} +\usepackage{mathtools,bm,array,mathtools} +\usepackage[version=3]{mhchem} +\usepackage{siunitx} +\usepackage{animate} +\usetikzlibrary{patterns,shapes} +%\newcolumntype{M}{>{\centering\arraybackslash}m{\dimexpr.25\linewidth-2\tabcolsep}} +\newcolumntype{M}{>{\centering\arraybackslash}m} + +\graphicspath{{fig/}{../fig/}} + +\usetikzlibrary{calc,fit} + +\newcommand{\cfbox}[2]{% + \colorlet{currentcolor}{.}% + {\color{#1}% + \fbox{\color{currentcolor}#2}}% +} +\def\SIESTA{SIESTA} +\def\TranSIESTA{TranSIESTA} +\def\TBtrans{TBtrans} +\def\PHtrans{PHtrans} +\def\Inelastica{Inelastica} + +\mode{% + \usepackage{pgfpages} + \nofiles % ensure that the auxillary file works + \usecolortheme{seagull} + \pgfpagesuselayout{2 on 1}[a4paper] +} + +\newenvironment{framenologo}{\begingroup% +\let\insertlogo\relax% +\begin{frame}% +}{% +\end{frame} +\endgroup} + + +\newcommand\doicite[1]{% + \begin{tikzpicture}[remember picture,overlay, + n/.style={inner sep=0pt,outer sep=2pt,font=\scriptsize}]% + \foreach \Doi [count=\doii] in {#1} {% + \ifnum\doii=1% + \node[anchor=north west,n] (DOI-\doii) at ($(current page.south west)+(\framesep,\framesep)$) + {\Doi};% + \else% + \pgfmathtruncatemacro\prevdoii{round(\doii-1)} + \node[anchor=north west,n] (DOI-\doii) at (DOI-\prevdoii.south west)% + {\Doi};% + \fi% + }% + \end{tikzpicture}% +} diff --git a/presentations/common.tex b/presentations/common.tex new file mode 100644 index 0000000..dbe9e8c --- /dev/null +++ b/presentations/common.tex @@ -0,0 +1,257 @@ +\def\classopts{11pt} +\input ../beamertemplate.tex + +\definecolor{good}{cmyk}{0.50, 0.00, 0.70, 0.20} +\definecolor{bad}{cmyk}{0.00, 0.50, 1.00, 0.50} +\definecolor{ok}{cmyk}{0.50, 0.10, 1.00, 0.50} +\definecolor{check}{cmyk}{0.90, 0.20, 0.20, 0.40} + +\mode{% + \nofiles % do not overwrite + \usetheme{workshopdtu} +} +\mode +{ + \usetheme{workshopdtu} +} + +\usepackage{listings} +\usepackage{fancyvrb} + +% Change logo to cecam +%\logo{\includegraphics[width=\logosize]{SIESTA_small}} + +% Explicitly set the compatibility version +\pgfplotsset{compat=1.15} + + +\usetikzlibrary{% + fadings,calc,arrows, + positioning, + decorations, + decorations.markings, + decorations.pathreplacing, + decorations.text, + matrix, +} + +\tikzset{ + ->-/.style={postaction={decorate},decoration={% + markings,mark=at position #1 with {\arrow[line width=2pt]{stealth}}% + }% + },% + ->-/.default=.5,% + -<-/.style={postaction={decorate},decoration={% + markings,mark=at position #1 with {\arrowreversed[line width=2pt]{stealth}}% + }% + },% + -<-/.default=.5,% +} + +\usepackage[export]{adjustbox} +\usepackage{biblatex} +\bibliography{refs} + + +\def\tsiesta{\texttt{transiesta}} +\def\siesta{\texttt{siesta}} +\def\tbt{\texttt{tbtrans}} +\def\fdf#1{\texttt{#1}} +\def\mcite#1{{\small \citeauthor{#1}, DOI: \citefield{#1}{doi}}} + +\newwrite\foundfile +\immediate\openout\foundfile=\jobname.foundfiles +\newwrite\nonfoundfile +\immediate\openout\nonfoundfile=\jobname.nonfoundfiles + + + +\makeatletter +\newcommand\incg[2][]{% + \bgroup% + \let\tmp@file\relax% + \incg@check{#2}{png}% + \ifx\tmp@file\relax% + \incg@check{#2}{pdf}% + \fi% + \ifx\tmp@file\relax% + \incg@check{#2}{jpg}% + \fi% + \ifx\tmp@file\relax% + \incg@check{#2}{jpeg}% + \fi% + \ifx\tmp@file\relax% + \immediate\write\nonfoundfile{#2}% + \rule{3cm}{4cm}% + \else% + \immediate\write\foundfile{\tmp@file}% + \includegraphics[#1]{\tmp@file}% + \fi% + \let\tmp@file\relax% + \egroup% +} +\newcommand\incg@check[2]{% + \IfFileExists{#1.#2}{% + % It does + \edef\tmp@file{#1.#2}% + }{}% + \ifx\tmp@file\relax% + \IfFileExists{fig/#1.#2}{% + % It does + \edef\tmp@file{fig/#1.#2}% + }{}% + \fi% + \ifx\tmp@file\relax% + \IfFileExists{../fig/#1.#2}{% + % It does + \edef\tmp@file{../fig/#1.#2}% + }{}% + \fi% + \ifx\tmp@file\relax% + \IfFileExists{people/#1.#2}{% + % It does + \edef\tmp@file{people/#1.#2}% + }{}% + \fi% +} +\makeatother + + +% Define all variables used in this paper +\newcommand\G{\mathbf{G}} +\newcommand\Spec{\mathcal{A}} +\newcommand\Gr{\mathbf{G}^r} +\newcommand\Ga{\mathbf{G}^a} +\newcommand\HH{\mathbf{H}} +\newcommand\VV{\mathbf{V}} +\newcommand\DM{\boldsymbol{\rho}} +\newcommand\DE{\DM_\Eq} +\newcommand\DN{\DM_\Neq} +\newcommand\ncor{\boldsymbol{\Delta}} +\newcommand\SO{\mathbf{S}} +\newcommand\SE{\boldsymbol{\Sigma}} +\newcommand\Scat{\boldsymbol{\Gamma}} +\newcommand\kk{\mathbf{k}} +\newcommand\RR{\mathbf{R}} +\newcommand\rr{\mathbf{r}} +\newcommand\im{\mathfrak{i}} +\newcommand\ID{\mathbf{I}} +\newcommand\sumE{\sum^{\mathfrak{E}}} +\newcommand\NE{\mathfrak{E}} +\newcommand\idxE{\mathfrak{e}} +\newcommand\sumU{\sum^{\NU}} +\newcommand\NU{N_\mu} +\newcommand\idxU{\mu} +\newcommand\cd{\!\dd} +\newcommand\Cd{\!\!\dd} +\newcommand\dd{\mathrm{d}} +\newcommand\E{\epsilon} +\newcommand\JJ{\mathcal{J}} +\newcommand\BZ{\mathrm{BZ}} +\newcommand\Eq{\mathrm{eq}} +\newcommand\Neq{\mathrm{neq}} +\newcommand\varneq{\boldsymbol{\beta}} +\DeclareMathOperator\Var{Var} +\DeclareMathOperator\Tr{Tr} +\newcommand\dEBZ{\!\!\!\!\!\!\!\!} +\newcommand\dE{\!\!\!\!} +\newcommand\DOS{\mathrm{DOS}} +\newcommand\T{\mathcal{T}} +\newcommand\RE{\mathcal{R}} +\def\mto{\rightarrow} +\newcommand\mrc[2]{% + \bgroup% + \{#1,#2\}% + \egroup% +} +\newcommand\eikr{e^{-\im\kk\cdot\RR}} + +\def\etal{\emph{et.al.}} +\newcommand\doi[1]{\href{https://dx.doi.org/#1}{#1}} + + +\colorlet{cm1}{green!80!black} +\colorlet{cm2}{red!80!black} +\tikzset{ + s >/.style={shorten >=#1}, + s >/.default=4pt, + s /.style={s >=#1,s <=#1}, + s <>/.default=4pt, + >=latex, + font=\footnotesize, + block/.style={ + local bounding box=localbb, + execute at end scope={ + \node[rounded corners=5pt, + inner sep=5pt, + fit=(localbb),draw,#1] {}; + }, + }, + fdf/.style={ + font=\ttfamily\footnotesize, + anchor=west, + }, + connect/.style={ + >=latex, + ->, + shorten >=4pt, + shorten <=1pt, + }, + my mark/.style={ + rectangle,rounded corners=2pt,very thick, + inner sep=2pt, + }, + lmark/.style={ + my mark,draw=cm1,%green!80!black, + }, + rmark/.style={ + my mark,draw=red!80!black,densely dotted, + }, + iiind/.style={xshift=6ex}, + iind/.style={xshift=4ex}, + ind/.style={xshift=2ex}, + % Matrix opts + row sep=.4ex, + fixed node/.style={ + every node/.append style={ + inner sep=.25ex,outer sep=.25ex, + text height=1.25ex, + }, + }, + ampersand replacement=\&, +} + + +\def\matsize{.8cm} +\def\Full{\begin{tikzpicture} + \fill (0,0) rectangle (\matsize,\matsize); + \end{tikzpicture} +} +\def\Left{\begin{tikzpicture} + \draw (0,0) rectangle (\matsize,\matsize); + \fill (0,\matsize) rectangle ++(.3*\matsize,-.3*\matsize); + \end{tikzpicture} +} +\def\FullLeft{\begin{tikzpicture} + \draw (0,0) rectangle (\matsize,\matsize); + \fill (0,0) rectangle (.3*\matsize,\matsize); + \end{tikzpicture} +} + +\def\drawcube[#1]{% + \path[#1] (0,0,0) -- (0,0,1); + \path[#1] (0,0,0) -- (1,0,0); + \path[#1] (0,0,0) -- (0,1,0); + \path[#1] (1,0,0) -- (1,1,0); + \path[#1] (1,0,0) -- (1,0,1); + \path[#1] (0,1,0) -- (1,1,0); + \path[#1] (0,1,0) -- (0,1,1); + \path[#1] (0,0,1) -- (1,0,1); + \path[#1] (0,0,1) -- (0,1,1); + \path[#1] (1,1,0) -- (1,1,1); + \path[#1] (1,1,1) -- (0,1,1); + \path[#1] (1,1,1) -- (1,0,1); +} + diff --git a/presentations/data/EQ_circle.dat b/presentations/data/EQ_circle.dat new file mode 100644 index 0000000..1fd59fc --- /dev/null +++ b/presentations/data/EQ_circle.dat @@ -0,0 +1,33 @@ +# Contour path for the equilibrium contour segment. +# This segment belongs to the chemical potential: Left +# It has the chemical potential: +# 0.25000 eV +# Re(c) [eV] Im(c) [eV] Re(w) Im(w) +-0.297497E+02 0.807318E-01 0.832542E-04 0.152184E-01 +-0.297439E+02 0.424239E+00 0.101325E-02 0.352323E-01 +-0.297135E+02 0.103716E+01 0.385677E-02 0.547416E-01 +-0.296259E+02 0.190922E+01 0.955336E-02 0.732236E-01 +-0.294373E+02 0.302184E+01 0.188211E-01 0.899676E-01 +-0.290957E+02 0.434531E+01 0.320565E-01 0.104044E+00 +-0.285470E+02 0.583599E+01 0.492362E-01 0.114356E+00 +-0.277403E+02 0.743479E+01 0.698397E-01 0.119750E+00 +-0.266357E+02 0.906751E+01 0.928203E-01 0.119188E+00 +-0.252106E+02 0.106477E+02 0.116649E+00 0.111944E+00 +-0.234662E+02 0.120823E+02 0.139441E+00 0.977959E-01 +-0.214301E+02 0.132794E+02 0.159175E+00 0.771666E-01 +-0.191573E+02 0.141577E+02 0.173952E+00 0.511733E-01 +-0.167260E+02 0.146554E+02 0.182280E+00 0.215616E-01 +-0.142304E+02 0.147379E+02 0.183306E+00 -0.947716E-02 +-0.117715E+02 0.144018E+02 0.176951E+00 -0.395742E-01 +-0.944566E+01 0.136755E+02 0.163923E+00 -0.664866E-01 +-0.733499E+01 0.126155E+02 0.145595E+00 -0.883740E-01 +-0.549959E+01 0.112992E+02 0.123786E+00 -0.103996E+00 +-0.397330E+01 0.981661E+01 0.100489E+00 -0.112798E+00 +-0.276325E+01 0.826041E+01 0.775953E-01 -0.114876E+00 +-0.185276E+01 0.671837E+01 0.566806E-01 -0.110855E+00 +-0.120678E+01 0.526718E+01 0.388574E-01 -0.101700E+00 +-0.778592E+00 0.396916E+01 0.247213E-01 -0.885283E-01 +-0.516851E+00 0.287142E+01 0.143680E-01 -0.724328E-01 +-0.371924E+00 0.200705E+01 0.746338E-02 -0.543674E-01 +-0.301122E+00 0.139747E+01 0.333771E-02 -0.350885E-01 +-0.272572E+00 0.105510E+01 0.108807E-02 -0.151797E-01 diff --git a/presentations/data/EQ_fermi.dat b/presentations/data/EQ_fermi.dat new file mode 100644 index 0000000..5861030 --- /dev/null +++ b/presentations/data/EQ_fermi.dat @@ -0,0 +1,15 @@ +# Contour path for the equilibrium contour segment. +# This segment belongs to the chemical potential: Left +# It has the chemical potential: +# 0.25000 eV +# Re(c) [eV] Im(c) [eV] Re(w) Im(w) +-0.257060E+00 0.974560E+00 0.187006E-02 0.000000E+00 +-0.215575E+00 0.974560E+00 0.418102E-02 0.000000E+00 +-0.145101E+00 0.974560E+00 0.609391E-02 0.000000E+00 +-0.524946E-01 0.974560E+00 0.740213E-02 0.000000E+00 + 0.527088E-01 0.974560E+00 0.790662E-02 0.000000E+00 + 0.157774E+00 0.974560E+00 0.710929E-02 0.000000E+00 + 0.248004E+00 0.974560E+00 0.321321E-02 0.000000E+00 + 0.342824E+00 0.974560E+00 0.222047E-03 0.000000E+00 + 0.478669E+00 0.974560E+00 0.170594E-05 0.000000E+00 + 0.676423E+00 0.974560E+00 0.124467E-08 0.000000E+00 diff --git a/presentations/data/EQ_opti.dat b/presentations/data/EQ_opti.dat new file mode 100644 index 0000000..80b4ed5 --- /dev/null +++ b/presentations/data/EQ_opti.dat @@ -0,0 +1,45 @@ +# Contour path for the equilibrium contour segment. +# This segment belongs to the chemical potential: Left +# It has the chemical potential: +# 0.25000 eV +# Re(c) [eV] Im(c) [eV] Re(w) Im(w) +-0.297383E+02 0.587168E+00 0.433729E-02 0.108925E+00 +-0.294680E+02 0.287080E+01 0.428395E-01 0.216012E+00 +-0.284420E+02 0.607404E+01 0.107732E+00 0.238550E+00 +-0.267173E+02 0.896174E+01 0.133731E+00 0.174964E+00 +-0.251828E+02 0.106744E+02 0.788496E-01 0.752741E-01 +-0.237055E+02 0.119108E+02 0.158947E+00 0.116274E+00 +-0.214182E+02 0.132851E+02 0.176107E+00 0.851802E-01 +-0.189466E+02 0.142180E+02 0.185955E+00 0.517166E-01 +-0.163924E+02 0.146910E+02 0.188263E+00 0.179404E-01 +-0.138562E+02 0.147138E+02 0.183415E+00 -0.141634E-01 +-0.114297E+02 0.143211E+02 0.172328E+00 -0.428704E-01 +-0.918920E+01 0.135687E+02 0.156322E+00 -0.668575E-01 +-0.719123E+01 0.125271E+02 0.136943E+00 -0.852805E-01 +-0.547076E+01 0.112750E+02 0.115794E+00 -0.977869E-01 +-0.404149E+01 0.989262E+01 0.943741E-01 -0.104470E+00 +-0.289807E+01 0.845658E+01 0.739631E-01 -0.105780E+00 +-0.201976E+01 0.703543E+01 0.555404E-01 -0.102411E+00 +-0.137472E+01 0.568730E+01 0.397544E-01 -0.951878E-01 +-0.924519E+00 0.445884E+01 0.269276E-01 -0.849579E-01 +-0.628384E+00 0.338550E+01 0.170903E-01 -0.725106E-01 +-0.446847E+00 0.249268E+01 0.100291E-01 -0.585229E-01 +-0.344687E+00 0.179752E+01 0.534227E-02 -0.435334E-01 +-0.293133E+00 0.131077E+01 0.249177E-02 -0.279431E-01 +-0.271392E+00 0.103850E+01 0.850447E-03 -0.120552E-01 +-0.248831E+00 0.974560E+00 0.337621E-02 0.000000E+00 +-0.177538E+00 0.974560E+00 0.682046E-02 0.000000E+00 +-0.731380E-01 0.974560E+00 0.810664E-02 0.000000E+00 + 0.312618E-01 0.974560E+00 0.681902E-02 0.000000E+00 + 0.102555E+00 0.974560E+00 0.336499E-02 0.000000E+00 + 0.133682E+00 0.974560E+00 0.236365E-02 0.000000E+00 + 0.182922E+00 0.974560E+00 0.425532E-02 0.000000E+00 + 0.250681E+00 0.974560E+00 0.262605E-02 0.000000E+00 + 0.336384E+00 0.974560E+00 0.265528E-03 0.000000E+00 + 0.474933E+00 0.974560E+00 0.221307E-05 0.000000E+00 + 0.250000E+00 0.812134E-01 0.000000E+00 -0.119381E-01 + 0.250000E+00 0.243640E+00 0.000000E+00 -0.119381E-01 + 0.250000E+00 0.406067E+00 0.000000E+00 -0.119381E-01 + 0.250000E+00 0.568494E+00 0.000000E+00 -0.119381E-01 + 0.250000E+00 0.730920E+00 0.000000E+00 -0.119381E-01 + 0.250000E+00 0.893347E+00 0.000000E+00 -0.119381E-01 diff --git a/presentations/data/EQ_orig.dat b/presentations/data/EQ_orig.dat new file mode 100644 index 0000000..de7a418 --- /dev/null +++ b/presentations/data/EQ_orig.dat @@ -0,0 +1,49 @@ +# Contour path for the equilibrium contour segment. +# This segment belongs to the chemical potential: Left +# It has the chemical potential: +# 0.25000 eV +# Re(c) [eV] Im(c) [eV] Re(w) Im(w) +-0.297497E+02 0.807318E-01 0.832542E-04 0.152184E-01 +-0.297439E+02 0.424239E+00 0.101325E-02 0.352323E-01 +-0.297135E+02 0.103716E+01 0.385677E-02 0.547416E-01 +-0.296259E+02 0.190922E+01 0.955336E-02 0.732236E-01 +-0.294373E+02 0.302184E+01 0.188211E-01 0.899676E-01 +-0.290957E+02 0.434531E+01 0.320565E-01 0.104044E+00 +-0.285470E+02 0.583599E+01 0.492362E-01 0.114356E+00 +-0.277403E+02 0.743479E+01 0.698397E-01 0.119750E+00 +-0.266357E+02 0.906751E+01 0.928203E-01 0.119188E+00 +-0.252106E+02 0.106477E+02 0.116649E+00 0.111944E+00 +-0.234662E+02 0.120823E+02 0.139441E+00 0.977959E-01 +-0.214301E+02 0.132794E+02 0.159175E+00 0.771666E-01 +-0.191573E+02 0.141577E+02 0.173952E+00 0.511733E-01 +-0.167260E+02 0.146554E+02 0.182280E+00 0.215616E-01 +-0.142304E+02 0.147379E+02 0.183306E+00 -0.947716E-02 +-0.117715E+02 0.144018E+02 0.176951E+00 -0.395742E-01 +-0.944566E+01 0.136755E+02 0.163923E+00 -0.664866E-01 +-0.733499E+01 0.126155E+02 0.145595E+00 -0.883740E-01 +-0.549959E+01 0.112992E+02 0.123786E+00 -0.103996E+00 +-0.397330E+01 0.981661E+01 0.100489E+00 -0.112798E+00 +-0.276325E+01 0.826041E+01 0.775953E-01 -0.114876E+00 +-0.185276E+01 0.671837E+01 0.566806E-01 -0.110855E+00 +-0.120678E+01 0.526718E+01 0.388574E-01 -0.101700E+00 +-0.778592E+00 0.396916E+01 0.247213E-01 -0.885283E-01 +-0.516851E+00 0.287142E+01 0.143680E-01 -0.724328E-01 +-0.371924E+00 0.200705E+01 0.746338E-02 -0.543674E-01 +-0.301122E+00 0.139747E+01 0.333771E-02 -0.350885E-01 +-0.272572E+00 0.105510E+01 0.108807E-02 -0.151797E-01 +-0.257060E+00 0.974560E+00 0.187006E-02 0.000000E+00 +-0.215575E+00 0.974560E+00 0.418102E-02 0.000000E+00 +-0.145101E+00 0.974560E+00 0.609391E-02 0.000000E+00 +-0.524946E-01 0.974560E+00 0.740213E-02 0.000000E+00 + 0.527088E-01 0.974560E+00 0.790662E-02 0.000000E+00 + 0.157774E+00 0.974560E+00 0.710929E-02 0.000000E+00 + 0.248004E+00 0.974560E+00 0.321321E-02 0.000000E+00 + 0.342824E+00 0.974560E+00 0.222047E-03 0.000000E+00 + 0.478669E+00 0.974560E+00 0.170594E-05 0.000000E+00 + 0.676423E+00 0.974560E+00 0.124467E-08 0.000000E+00 + 0.250000E+00 0.812134E-01 0.000000E+00 -0.119381E-01 + 0.250000E+00 0.243640E+00 0.000000E+00 -0.119381E-01 + 0.250000E+00 0.406067E+00 0.000000E+00 -0.119381E-01 + 0.250000E+00 0.568494E+00 0.000000E+00 -0.119381E-01 + 0.250000E+00 0.730920E+00 0.000000E+00 -0.119381E-01 + 0.250000E+00 0.893347E+00 0.000000E+00 -0.119381E-01 diff --git a/presentations/data/EQ_pole.dat b/presentations/data/EQ_pole.dat new file mode 100644 index 0000000..4946ab0 --- /dev/null +++ b/presentations/data/EQ_pole.dat @@ -0,0 +1,11 @@ +# Contour path for the equilibrium contour segment. +# This segment belongs to the chemical potential: Left +# It has the chemical potential: +# 0.25000 eV +# Re(c) [eV] Im(c) [eV] Re(w) Im(w) + 0.250000E+00 0.812134E-01 0.000000E+00 -0.119381E-01 + 0.250000E+00 0.243640E+00 0.000000E+00 -0.119381E-01 + 0.250000E+00 0.406067E+00 0.000000E+00 -0.119381E-01 + 0.250000E+00 0.568494E+00 0.000000E+00 -0.119381E-01 + 0.250000E+00 0.730920E+00 0.000000E+00 -0.119381E-01 + 0.250000E+00 0.893347E+00 0.000000E+00 -0.119381E-01 diff --git a/presentations/data/lorentzian.dat b/presentations/data/lorentzian.dat new file mode 100644 index 0000000..5af67d6 --- /dev/null +++ b/presentations/data/lorentzian.dat @@ -0,0 +1,1001 @@ +-2.000000000000000000e+00 1.249219237976264760e-02 +-1.995999999999999996e+00 1.254228002596753828e-02 +-1.991999999999999993e+00 1.259266945451578169e-02 +-1.987999999999999989e+00 1.264336309412427556e-02 +-1.983999999999999986e+00 1.269436339798657443e-02 +-1.979999999999999982e+00 1.274567284406943890e-02 +-1.975999999999999979e+00 1.279729393541359332e-02 +-1.971999999999999975e+00 1.284922920043872485e-02 +-1.967999999999999972e+00 1.290148119325283498e-02 +-1.963999999999999968e+00 1.295405249396600414e-02 +-1.959999999999999964e+00 1.300694570900861290e-02 +-1.955999999999999961e+00 1.306016347145414098e-02 +-1.951999999999999957e+00 1.311370844134657904e-02 +-1.947999999999999954e+00 1.316758330603254486e-02 +-1.943999999999999950e+00 1.322179078049817713e-02 +-1.939999999999999947e+00 1.327633360771089677e-02 +-1.935999999999999943e+00 1.333121455896609658e-02 +-1.931999999999999940e+00 1.338643643423886517e-02 +-1.927999999999999936e+00 1.344200206254079870e-02 +-1.923999999999999932e+00 1.349791430228201340e-02 +-1.919999999999999929e+00 1.355417604163842993e-02 +-1.915999999999999925e+00 1.361079019892442316e-02 +-1.911999999999999922e+00 1.366775972297091385e-02 +-1.907999999999999918e+00 1.372508759350902358e-02 +-1.903999999999999915e+00 1.378277682155935359e-02 +-1.899999999999999911e+00 1.384083044982699177e-02 +-1.895999999999999908e+00 1.389925155310237082e-02 +-1.891999999999999904e+00 1.395804323866802442e-02 +-1.887999999999999901e+00 1.401720864671139599e-02 +-1.883999999999999897e+00 1.407675095074376048e-02 +-1.879999999999999893e+00 1.413667335802539123e-02 +-1.875999999999999890e+00 1.419697910999706200e-02 +-1.871999999999999886e+00 1.425767148271799359e-02 +-1.867999999999999883e+00 1.431875378731037839e-02 +-1.863999999999999879e+00 1.438022937041055424e-02 +-1.859999999999999876e+00 1.444210161462696276e-02 +-1.855999999999999872e+00 1.450437393900505002e-02 +-1.852000000000000091e+00 1.456704979949912521e-02 +-1.848000000000000087e+00 1.463013268945143920e-02 +-1.844000000000000083e+00 1.469362614007845187e-02 +-1.840000000000000080e+00 1.475753372096455344e-02 +-1.836000000000000076e+00 1.482185904056327816e-02 +-1.832000000000000073e+00 1.488660574670619061e-02 +-1.828000000000000069e+00 1.495177752711953495e-02 +-1.824000000000000066e+00 1.501737810994883265e-02 +-1.820000000000000062e+00 1.508341126429153280e-02 +-1.816000000000000059e+00 1.514988080073785895e-02 +-1.812000000000000055e+00 1.521679057192003130e-02 +-1.808000000000000052e+00 1.528414447306994904e-02 +-1.804000000000000048e+00 1.535194644258556368e-02 +-1.800000000000000044e+00 1.542020046260601449e-02 +-1.796000000000000041e+00 1.548891055959575325e-02 +-1.792000000000000037e+00 1.555808080493776072e-02 +-1.788000000000000034e+00 1.562771531553607332e-02 +-1.784000000000000030e+00 1.569781825442772769e-02 +-1.780000000000000027e+00 1.576839383140433287e-02 +-1.776000000000000023e+00 1.583944630364345421e-02 +-1.772000000000000020e+00 1.591097997634991976e-02 +-1.768000000000000016e+00 1.598299920340731997e-02 +-1.764000000000000012e+00 1.605550838803980127e-02 +-1.760000000000000009e+00 1.612851198348440665e-02 +-1.756000000000000005e+00 1.620201449367408494e-02 +-1.752000000000000002e+00 1.627602047393167731e-02 +-1.747999999999999998e+00 1.635053453167491233e-02 +-1.743999999999999995e+00 1.642556132713279479e-02 +-1.739999999999999991e+00 1.650110557407346440e-02 +-1.735999999999999988e+00 1.657717204054378474e-02 +-1.731999999999999984e+00 1.665376554962089486e-02 +-1.727999999999999980e+00 1.673089098017590398e-02 +-1.723999999999999977e+00 1.680855326764999283e-02 +-1.719999999999999973e+00 1.688675740484312654e-02 +-1.715999999999999970e+00 1.696550844271562525e-02 +-1.711999999999999966e+00 1.704481149120283534e-02 +-1.707999999999999963e+00 1.712467172004313032e-02 +-1.703999999999999959e+00 1.720509435961950842e-02 +-1.699999999999999956e+00 1.728608470181504375e-02 +-1.695999999999999952e+00 1.736764810088241642e-02 +-1.691999999999999948e+00 1.744978997432787213e-02 +-1.687999999999999945e+00 1.753251580380974645e-02 +-1.683999999999999941e+00 1.761583113605199799e-02 +-1.679999999999999938e+00 1.769974158377288220e-02 +-1.675999999999999934e+00 1.778425282662914747e-02 +-1.671999999999999931e+00 1.786937061217604844e-02 +-1.667999999999999927e+00 1.795510075684340900e-02 +-1.663999999999999924e+00 1.804144914692812005e-02 +-1.659999999999999920e+00 1.812842173960335299e-02 +-1.655999999999999917e+00 1.821602456394480485e-02 +-1.651999999999999913e+00 1.830426372197434606e-02 +-1.648000000000000131e+00 1.839314538972132082e-02 +-1.644000000000000128e+00 1.848267581830198916e-02 +-1.640000000000000124e+00 1.857286133501727041e-02 +-1.636000000000000121e+00 1.866370834446934648e-02 +-1.632000000000000117e+00 1.875522332969731948e-02 +-1.628000000000000114e+00 1.884741285333244726e-02 +-1.624000000000000110e+00 1.894028355877321393e-02 +-1.620000000000000107e+00 1.903384217138071391e-02 +-1.616000000000000103e+00 1.912809549969471390e-02 +-1.612000000000000099e+00 1.922305043667081256e-02 +-1.608000000000000096e+00 1.931871396093910384e-02 +-1.604000000000000092e+00 1.941509313808480186e-02 +-1.600000000000000089e+00 1.951219512195121603e-02 +-1.596000000000000085e+00 1.961002715596560711e-02 +-1.592000000000000082e+00 1.970859657448824701e-02 +-1.588000000000000078e+00 1.980791080418533093e-02 +-1.584000000000000075e+00 1.990797736542605431e-02 +-1.580000000000000071e+00 2.000880387370442687e-02 +-1.576000000000000068e+00 2.011039804108634768e-02 +-1.572000000000000064e+00 2.021276767768235769e-02 +-1.568000000000000060e+00 2.031592069314670790e-02 +-1.564000000000000057e+00 2.041986509820321524e-02 +-1.560000000000000053e+00 2.052460900619843334e-02 +-1.556000000000000050e+00 2.063016063468276623e-02 +-1.552000000000000046e+00 2.073652830702006275e-02 +-1.548000000000000043e+00 2.084372045402625717e-02 +-1.544000000000000039e+00 2.095174561563771173e-02 +-1.540000000000000036e+00 2.106061244260983359e-02 +-1.536000000000000032e+00 2.117032969824659064e-02 +-1.532000000000000028e+00 2.128090626016163403e-02 +-1.528000000000000025e+00 2.139235112207160325e-02 +-1.524000000000000021e+00 2.150467339562233543e-02 +-1.520000000000000018e+00 2.161788231224869364e-02 +-1.516000000000000014e+00 2.173198722506863162e-02 +-1.512000000000000011e+00 2.184699761081234162e-02 +-1.508000000000000007e+00 2.196292307178713404e-02 +-1.504000000000000004e+00 2.207977333787882260e-02 +-1.500000000000000000e+00 2.219755826859045808e-02 +-1.495999999999999996e+00 2.231628785511909074e-02 +-1.491999999999999993e+00 2.243597222247151191e-02 +-1.487999999999999989e+00 2.255662163161969297e-02 +-1.483999999999999986e+00 2.267824648169684473e-02 +-1.479999999999999982e+00 2.280085731223494352e-02 +-1.475999999999999979e+00 2.292446480544465398e-02 +-1.471999999999999975e+00 2.304907978853852624e-02 +-1.467999999999999972e+00 2.317471323609841816e-02 +-1.463999999999999968e+00 2.330137627248816262e-02 +-1.459999999999999964e+00 2.342908017431236112e-02 +-1.455999999999999961e+00 2.355783637292243465e-02 +-1.451999999999999957e+00 2.368765645697090000e-02 +-1.447999999999999954e+00 2.381855217501491206e-02 +-1.443999999999999950e+00 2.395053543817025898e-02 +-1.439999999999999947e+00 2.408361832281682297e-02 +-1.435999999999999943e+00 2.421781307335672817e-02 +-1.431999999999999940e+00 2.435313210502629278e-02 +-1.427999999999999936e+00 2.448958800676305156e-02 +-1.423999999999999932e+00 2.462719354412898007e-02 +-1.419999999999999929e+00 2.476596166229134977e-02 +-1.415999999999999925e+00 2.490590548906232785e-02 +-1.411999999999999922e+00 2.504703833799876850e-02 +-1.407999999999999918e+00 2.518937371156353827e-02 +-1.403999999999999915e+00 2.533292530434976680e-02 +-1.399999999999999911e+00 2.547770700636943150e-02 +-1.395999999999999908e+00 2.562373290640778539e-02 +-1.391999999999999904e+00 2.577101729544513040e-02 +-1.387999999999999901e+00 2.591957467014749730e-02 +-1.383999999999999897e+00 2.606941973642774163e-02 +-1.379999999999999893e+00 2.622056741307882480e-02 +-1.375999999999999890e+00 2.637303283548080718e-02 +-1.371999999999999886e+00 2.652683135938339529e-02 +-1.367999999999999883e+00 2.668197856476570498e-02 +-1.363999999999999879e+00 2.683849025977512112e-02 +-1.359999999999999876e+00 2.699638248474705085e-02 +-1.355999999999999872e+00 2.715567151630753073e-02 +-1.351999999999999869e+00 2.731637387156060290e-02 +-1.347999999999999865e+00 2.747850631236247940e-02 +-1.343999999999999861e+00 2.764208584968455562e-02 +-1.339999999999999858e+00 2.780712974806741344e-02 +-1.335999999999999854e+00 2.797365553016791656e-02 +-1.331999999999999851e+00 2.814168098140173643e-02 +-1.327999999999999847e+00 2.831122415468347725e-02 +-1.323999999999999844e+00 2.848230337526688749e-02 +-1.319999999999999840e+00 2.865493724568744099e-02 +-1.315999999999999837e+00 2.882914465080987573e-02 +-1.311999999999999833e+00 2.900494476298320218e-02 +-1.307999999999999829e+00 2.918235704730577987e-02 +-1.303999999999999826e+00 2.936140126700319958e-02 +-1.299999999999999822e+00 2.954209748892172582e-02 +-1.296000000000000041e+00 2.972446608914010996e-02 +-1.292000000000000037e+00 2.990852775870278535e-02 +-1.288000000000000034e+00 3.009430350947729649e-02 +-1.284000000000000030e+00 3.028181468013924765e-02 +-1.280000000000000027e+00 3.047108294228776867e-02 +-1.276000000000000023e+00 3.066213030669489442e-02 +-1.272000000000000020e+00 3.085497912969211928e-02 +-1.268000000000000016e+00 3.104965211969765160e-02 +-1.264000000000000012e+00 3.124617234388787565e-02 +-1.260000000000000009e+00 3.144456323501666761e-02 +-1.256000000000000005e+00 3.164484859838636449e-02 +-1.252000000000000002e+00 3.184705261897421980e-02 +-1.247999999999999998e+00 3.205119986871828724e-02 +-1.243999999999999995e+00 3.225731531396690277e-02 +-1.239999999999999991e+00 3.246542432309590387e-02 +-1.235999999999999988e+00 3.267555267429794047e-02 +-1.231999999999999984e+00 3.288772656354829738e-02 +-1.227999999999999980e+00 3.310197261275193981e-02 +-1.223999999999999977e+00 3.331831787807628537e-02 +-1.219999999999999973e+00 3.353678985847475397e-02 +-1.215999999999999970e+00 3.375741650440602232e-02 +-1.211999999999999966e+00 3.398022622675413162e-02 +-1.207999999999999963e+00 3.420524790595472903e-02 +-1.203999999999999959e+00 3.443251090133295916e-02 +-1.199999999999999956e+00 3.466204506065858476e-02 +-1.195999999999999952e+00 3.489388072992415796e-02 +-1.191999999999999948e+00 3.512804876335217513e-02 +-1.187999999999999945e+00 3.536458053363737697e-02 +-1.183999999999999941e+00 3.560350794243056366e-02 +-1.179999999999999938e+00 3.584486343107033679e-02 +-1.175999999999999934e+00 3.608867999156969292e-02 +-1.171999999999999931e+00 3.633499117786415100e-02 +-1.167999999999999927e+00 3.658383111732874116e-02 +-1.164000000000000146e+00 3.683523452257115444e-02 +-1.160000000000000142e+00 3.708923670350863788e-02 +-1.156000000000000139e+00 3.734587357973642024e-02 +-1.152000000000000135e+00 3.760518169319586324e-02 +-1.148000000000000131e+00 3.786719822115049150e-02 +-1.144000000000000128e+00 3.813196098947862350e-02 +-1.140000000000000124e+00 3.839950848629136715e-02 +-1.136000000000000121e+00 3.866987987588514641e-02 +-1.132000000000000117e+00 3.894311501303814732e-02 +-1.128000000000000114e+00 3.921925445766046014e-02 +-1.124000000000000110e+00 3.949833948980784049e-02 +-1.120000000000000107e+00 3.978041212506961549e-02 +-1.116000000000000103e+00 4.006551513034112971e-02 +-1.112000000000000099e+00 4.035369203999211729e-02 +-1.108000000000000096e+00 4.064498717244204029e-02 +-1.104000000000000092e+00 4.093944564715438356e-02 +-1.100000000000000089e+00 4.123711340206185488e-02 +-1.096000000000000085e+00 4.153803721143525113e-02 +-1.092000000000000082e+00 4.184226470420866068e-02 +-1.088000000000000078e+00 4.214984438277454004e-02 +-1.084000000000000075e+00 4.246082564226245221e-02 +-1.080000000000000071e+00 4.277525879031568445e-02 +-1.076000000000000068e+00 4.309319506738051864e-02 +-1.072000000000000064e+00 4.341468666752337779e-02 +-1.068000000000000060e+00 4.373978675979158653e-02 +-1.064000000000000057e+00 4.406854951013400301e-02 +-1.060000000000000053e+00 4.440103010389841176e-02 +-1.056000000000000050e+00 4.473728476892297606e-02 +-1.052000000000000046e+00 4.507737079923981177e-02 +-1.048000000000000043e+00 4.542134657940923026e-02 +-1.044000000000000039e+00 4.576927160950389900e-02 +-1.040000000000000036e+00 4.612120653076284132e-02 +-1.036000000000000032e+00 4.647721315193586999e-02 +-1.032000000000000028e+00 4.683735447633964599e-02 +-1.028000000000000025e+00 4.720169472964758084e-02 +-1.024000000000000021e+00 4.757029938843623795e-02 +-1.020000000000000018e+00 4.794323520951194323e-02 +-1.016000000000000014e+00 4.832057026004198119e-02 +-1.012000000000000011e+00 4.870237394851575224e-02 +-1.008000000000000007e+00 4.908871705656198819e-02 +-1.004000000000000004e+00 4.947967177164933755e-02 +-1.000000000000000000e+00 4.987531172069825658e-02 +-9.959999999999999964e-01 5.027571200463341189e-02 +-9.919999999999999929e-01 5.068094923390677881e-02 +-9.879999999999999893e-01 5.109110156502262579e-02 +-9.839999999999999858e-01 5.150624873809691445e-02 +-9.799999999999999822e-01 5.192647211548448438e-02 +-9.759999999999999787e-01 5.235185472150907793e-02 +-9.719999999999999751e-01 5.278248128333214856e-02 +-9.679999999999999716e-01 5.321843827299782559e-02 +-9.639999999999999680e-01 5.365981395069308046e-02 +-9.599999999999999645e-01 5.410669840926307650e-02 +-9.559999999999999609e-01 5.455918362002366157e-02 +-9.519999999999999574e-01 5.501736347991427467e-02 +-9.479999999999999538e-01 5.548133386003614026e-02 +-9.439999999999999503e-01 5.595119265562265715e-02 +-9.399999999999999467e-01 5.642703983749013802e-02 +-9.359999999999999432e-01 5.690897750501938690e-02 +-9.319999999999999396e-01 5.739710994072028116e-02 +-9.279999999999999361e-01 5.789154366643357169e-02 +-9.239999999999999325e-01 5.839238750122625887e-02 +-9.199999999999999289e-01 5.889975262103901155e-02 +-9.159999999999999254e-01 5.941375262014650382e-02 +-9.119999999999999218e-01 5.993450357449381372e-02 +-9.079999999999999183e-01 6.046212410697444223e-02 +-9.039999999999999147e-01 6.099673545471848146e-02 +-8.999999999999999112e-01 6.153846153846155576e-02 +-8.959999999999999076e-01 6.208742903406862940e-02 +-8.919999999999999041e-01 6.264376744628925853e-02 +-8.879999999999999005e-01 6.320760918482412616e-02 +-8.839999999999998970e-01 6.377908964278609927e-02 +-8.799999999999998934e-01 6.435834727764193353e-02 +-8.759999999999998899e-01 6.494552369472487985e-02 +-8.719999999999998863e-01 6.554076373341165274e-02 +-8.679999999999998828e-01 6.614421555606121716e-02 +-8.639999999999998792e-01 6.675603073981706270e-02 +-8.599999999999998757e-01 6.737636437137854706e-02 +-8.559999999999998721e-01 6.800537514485147095e-02 +-8.519999999999998685e-01 6.864322546279265358e-02 +-8.479999999999998650e-01 6.929008154056799651e-02 +-8.440000000000000835e-01 6.994611351414868616e-02 +-8.400000000000000799e-01 7.061149555147577805e-02 +-8.360000000000000764e-01 7.128640596752762459e-02 +-8.320000000000000728e-01 7.197102734323269912e-02 +-8.280000000000000693e-01 7.266554664837432398e-02 +-8.240000000000000657e-01 7.337015536864099907e-02 +-8.200000000000000622e-01 7.408504963698325785e-02 +-8.160000000000000586e-01 7.481043036944381996e-02 +-8.120000000000000551e-01 7.554650340563637267e-02 +-8.080000000000000515e-01 7.629347965405484933e-02 +-8.040000000000000480e-01 7.705157524240426048e-02 +-8.000000000000000444e-01 7.782101167315175205e-02 +-7.960000000000000409e-01 7.860201598450597404e-02 +-7.920000000000000373e-01 7.939482091704194722e-02 +-7.880000000000000338e-01 8.019966508619860712e-02 +-7.840000000000000302e-01 8.101679316088639116e-02 +-7.800000000000000266e-01 8.184645604845310063e-02 +-7.760000000000000231e-01 8.268891108626769126e-02 +-7.720000000000000195e-01 8.354442224019355268e-02 +-7.680000000000000160e-01 8.441326031023561882e-02 +-7.640000000000000124e-01 8.529570314365844674e-02 +-7.600000000000000089e-01 8.619203585588693095e-02 +-7.560000000000000053e-01 8.710255105951543453e-02 +-7.520000000000000018e-01 8.802754910176689707e-02 +-7.479999999999999982e-01 8.896733831075936960e-02 +-7.439999999999999947e-01 8.992223525095498216e-02 +-7.399999999999999911e-01 9.089256498818398811e-02 +-7.359999999999999876e-01 9.187866136465540345e-02 +-7.319999999999999840e-01 9.288086728438638140e-02 +-7.279999999999999805e-01 9.389953500950264098e-02 +-7.239999999999999769e-01 9.493502646788540278e-02 +-7.199999999999999734e-01 9.598771357266272508e-02 +-7.159999999999999698e-01 9.705797855406907149e-02 +-7.119999999999999662e-01 9.814621430422187931e-02 +-7.079999999999999627e-01 9.925282473539200068e-02 +-7.039999999999999591e-01 1.003782251523741564e-01 +-6.999999999999999556e-01 1.015228426395939215e-01 +-6.959999999999999520e-01 1.026871164636200262e-01 +-6.919999999999999485e-01 1.038714984917858547e-01 +-6.879999999999999449e-01 1.050764536276595079e-01 +-6.839999999999999414e-01 1.063024602641403776e-01 +-6.799999999999999378e-01 1.075500107550011047e-01 +-6.759999999999999343e-01 1.088196119057361216e-01 +-6.719999999999999307e-01 1.101117854846240113e-01 +-6.679999999999999272e-01 1.114270687549585304e-01 +-6.639999999999999236e-01 1.127660150294545194e-01 +-6.599999999999999201e-01 1.141291942478886434e-01 +-6.559999999999999165e-01 1.155171935790923476e-01 +-6.519999999999999130e-01 1.169306180484747937e-01 +-6.479999999999999094e-01 1.183700911923182969e-01 +-6.439999999999999059e-01 1.198362557401566886e-01 +-6.399999999999999023e-01 1.213297743266198020e-01 +-6.359999999999998987e-01 1.228513302342038316e-01 +-6.319999999999998952e-01 1.244016281685095121e-01 +-6.279999999999998916e-01 1.259813950675764682e-01 +-6.239999999999998881e-01 1.275913809470343163e-01 +-6.199999999999998845e-01 1.292323597828896886e-01 +-6.159999999999998810e-01 1.309051304338720301e-01 +-6.119999999999998774e-01 1.326105176053723744e-01 +-6.079999999999998739e-01 1.343493728571275858e-01 +-6.039999999999998703e-01 1.361225756569276191e-01 +-5.999999999999998668e-01 1.379310344827587020e-01 +-5.959999999999998632e-01 1.397756879759362858e-01 +-5.920000000000000817e-01 1.416575061479357356e-01 +-5.880000000000000782e-01 1.435774916437899396e-01 +-5.840000000000000746e-01 1.455366810650956244e-01 +-5.800000000000000711e-01 1.475361463558571562e-01 +-5.760000000000000675e-01 1.495769962545919762e-01 +-5.720000000000000639e-01 1.516603778163331806e-01 +-5.680000000000000604e-01 1.537874780083906268e-01 +-5.640000000000000568e-01 1.559595253839723417e-01 +-5.600000000000000533e-01 1.581777918380259385e-01 +-5.560000000000000497e-01 1.604435944499351396e-01 +-5.520000000000000462e-01 1.627582974180023512e-01 +-5.480000000000000426e-01 1.651233140909630914e-01 +-5.440000000000000391e-01 1.675401091021190281e-01 +-5.400000000000000355e-01 1.700102006120367271e-01 +-5.360000000000000320e-01 1.725351626661513482e-01 +-5.320000000000000284e-01 1.751166276740308836e-01 +-5.280000000000000249e-01 1.777562890175054255e-01 +-5.240000000000000213e-01 1.804559037953485379e-01 +-5.200000000000000178e-01 1.832172957127152779e-01 +-5.160000000000000142e-01 1.860423581240976953e-01 +-5.120000000000000107e-01 1.889330572391590413e-01 +-5.080000000000000071e-01 1.918914355014506856e-01 +-5.040000000000000036e-01 1.949196151507118502e-01 +-5.000000000000000000e-01 1.980198019801980291e-01 +-4.959999999999999964e-01 2.011942893012924893e-01 +-4.919999999999999929e-01 2.044454621285226037e-01 +-4.879999999999999893e-01 2.077758015990425755e-01 +-4.839999999999999858e-01 2.111878896416564122e-01 +-4.799999999999999822e-01 2.146844139115500483e-01 +-4.759999999999999787e-01 2.182681730080846816e-01 +-4.719999999999999751e-01 2.219420819942828083e-01 +-4.679999999999999716e-01 2.257091782380239164e-01 +-4.639999999999999680e-01 2.295726275964664609e-01 +-4.599999999999999645e-01 2.335357309668379955e-01 +-4.559999999999999609e-01 2.376019312284970986e-01 +-4.519999999999999574e-01 2.417748206030831681e-01 +-4.479999999999999538e-01 2.460581484616445047e-01 +-4.439999999999999503e-01 2.504558296098900461e-01 +-4.399999999999999467e-01 2.549719530851606852e-01 +-4.359999999999999432e-01 2.596107915013812217e-01 +-4.319999999999999396e-01 2.643768109811552858e-01 +-4.279999999999999361e-01 2.692746817173262697e-01 +-4.239999999999999325e-01 2.743092892097699353e-01 +-4.199999999999999289e-01 2.794857462269424997e-01 +-4.159999999999999254e-01 2.848094055458088580e-01 +-4.119999999999999218e-01 2.902858735282507485e-01 +-4.079999999999999183e-01 2.959210245969556841e-01 +-4.039999999999999147e-01 3.017210166791379211e-01 +-3.999999999999999112e-01 3.076923076923078759e-01 +-3.959999999999999076e-01 3.138416731527280401e-01 +-3.919999999999999041e-01 3.201762249942370353e-01 +-3.879999999999999005e-01 3.267034316928466575e-01 +-3.839999999999998970e-01 3.334311398010084693e-01 +-3.799999999999998934e-01 3.403675970047653765e-01 +-3.759999999999998899e-01 3.475214768272681387e-01 +-3.719999999999998863e-01 3.549019051134268410e-01 +-3.679999999999998828e-01 3.625184884429108467e-01 +-3.639999999999998792e-01 3.703813446324337733e-01 +-3.599999999999998757e-01 3.785011355034068048e-01 +-3.559999999999998721e-01 3.868891021077721093e-01 +-3.519999999999998685e-01 3.955571026233350440e-01 +-3.479999999999998650e-01 4.045176531503837936e-01 +-3.439999999999998614e-01 4.137839716640739907e-01 +-3.399999999999998579e-01 4.233700254022019216e-01 +-3.359999999999998543e-01 4.332905819959101401e-01 +-3.320000000000000728e-01 4.435612646818776761e-01 +-3.280000000000000693e-01 4.541986119690416546e-01 +-3.240000000000000657e-01 4.652201421712752749e-01 +-3.200000000000000622e-01 4.766444232602476405e-01 +-3.160000000000000586e-01 4.884911485403882758e-01 +-3.120000000000000551e-01 5.007812187011737581e-01 +-3.080000000000000515e-01 5.135368308615092525e-01 +-3.040000000000000480e-01 5.267815752876225943e-01 +-3.000000000000000444e-01 5.405405405405404595e-01 +-2.960000000000000409e-01 5.548404278929378597e-01 +-2.920000000000000373e-01 5.697096759491362405e-01 +-2.880000000000000338e-01 5.851785965076540252e-01 +-2.840000000000000302e-01 6.012795228245705337e-01 +-2.800000000000000266e-01 6.180469715698392319e-01 +-2.760000000000000231e-01 6.355178199196704902e-01 +-2.720000000000000195e-01 6.537314993985670064e-01 +-2.680000000000000160e-01 6.727302082772723679e-01 +-2.640000000000000124e-01 6.925591445509445832e-01 +-2.600000000000000089e-01 7.132667617689014694e-01 +-2.560000000000000053e-01 7.349050502675055219e-01 +-2.520000000000000018e-01 7.575298466759590177e-01 +-2.479999999999999982e-01 7.812011749265672655e-01 +-2.439999999999999947e-01 8.059836224127926441e-01 +-2.399999999999999911e-01 8.319467554076539484e-01 +-2.359999999999999876e-01 8.591655783902674148e-01 +-2.319999999999999840e-01 8.877210425395924975e-01 +-2.279999999999999805e-01 9.177006093532048547e-01 +-2.239999999999999769e-01 9.491988761485308235e-01 +-2.199999999999999734e-01 9.823182711198430450e-01 +-2.159999999999999698e-01 1.017169826674261701e+00 +-2.119999999999999662e-01 1.053874040974623005e+00 +-2.079999999999999627e-01 1.092561839000087742e+00 +-2.039999999999999591e-01 1.133375646024118666e+00 +-1.999999999999999556e-01 1.176470588235294601e+00 +-1.959999999999999520e-01 1.222015837325252319e+00 +-1.919999999999999485e-01 1.270196118280663145e+00 +-1.879999999999999449e-01 1.321213402388754510e+00 +-1.839999999999999414e-01 1.375288810650237448e+00 +-1.799999999999999378e-01 1.432664756446992316e+00 +-1.759999999999999343e-01 1.493607360497073655e+00 +-1.719999999999999307e-01 1.558409175913229250e+00 +-1.679999999999999272e-01 1.627392266631950468e+00 +-1.639999999999999236e-01 1.700911688665125876e+00 +-1.599999999999999201e-01 1.779359430604984027e+00 +-1.559999999999999165e-01 1.863168877627070286e+00 +-1.519999999999999130e-01 1.952819871895018489e+00 +-1.479999999999999094e-01 2.048844451729226801e+00 +-1.439999999999999059e-01 2.151833362024447638e+00 +-1.399999999999999023e-01 2.262443438914029770e+00 +-1.359999999999998987e-01 2.381405982091830076e+00 +-1.319999999999998952e-01 2.509536237703276385e+00 +-1.279999999999998916e-01 2.647744122008053314e+00 +-1.239999999999998881e-01 2.797046319087048261e+00 +-1.199999999999998845e-01 2.958579881656810073e+00 +-1.159999999999998810e-01 3.133617447981955628e+00 +-1.119999999999998774e-01 3.323584153150763942e+00 +-1.079999999999998739e-01 3.530076249646999287e+00 +-1.039999999999998703e-01 3.754881345749482069e+00 +-9.999999999999986677e-02 4.000000000000007994e+00 +-9.599999999999986322e-02 4.267668146124966810e+00 +-9.199999999999985967e-02 4.560379423568051038e+00 +-8.799999999999985612e-02 4.880905896134334121e+00 +-8.399999999999985256e-02 5.232314776056941064e+00 +-8.000000000000007105e-02 5.617977528089880046e+00 +-7.600000000000006750e-02 6.041565973900427267e+00 +-7.200000000000006395e-02 6.507027589796972933e+00 +-6.800000000000006040e-02 7.018528916339127122e+00 +-6.400000000000005684e-02 7.580351728320184890e+00 +-6.000000000000005329e-02 8.196721311475402061e+00 +-5.600000000000004974e-02 8.871540099361240550e+00 +-5.200000000000004619e-02 9.607993850883925546e+00 +-4.800000000000004263e-02 1.040799333888425338e+01 +-4.400000000000003908e-02 1.127141568981063102e+01 +-4.000000000000003553e-02 1.219512195121950349e+01 +-3.600000000000003197e-02 1.317175974710220565e+01 +-3.200000000000002842e-02 1.418842224744607527e+01 +-2.800000000000002487e-02 1.522533495736905529e+01 +-2.400000000000002132e-02 1.625487646293887423e+01 +-2.000000000000001776e-02 1.724137931034482207e+01 +-1.600000000000001421e-02 1.814223512336719324e+01 +-1.200000000000001066e-02 1.891074130105899798e+01 +-8.000000000000007105e-03 1.950078003120124492e+01 +-4.000000000000003553e-03 1.987281399046104724e+01 +0.000000000000000000e+00 1.999999999999999645e+01 +4.000000000000003553e-03 1.987281399046104724e+01 +8.000000000000007105e-03 1.950078003120124492e+01 +1.200000000000001066e-02 1.891074130105899798e+01 +1.600000000000001421e-02 1.814223512336719324e+01 +2.000000000000001776e-02 1.724137931034482207e+01 +2.400000000000002132e-02 1.625487646293887423e+01 +2.800000000000002487e-02 1.522533495736905529e+01 +3.200000000000002842e-02 1.418842224744607527e+01 +3.600000000000003197e-02 1.317175974710220565e+01 +4.000000000000003553e-02 1.219512195121950349e+01 +4.400000000000003908e-02 1.127141568981063102e+01 +4.800000000000004263e-02 1.040799333888425338e+01 +5.200000000000004619e-02 9.607993850883925546e+00 +5.600000000000004974e-02 8.871540099361240550e+00 +6.000000000000005329e-02 8.196721311475402061e+00 +6.400000000000005684e-02 7.580351728320184890e+00 +6.800000000000006040e-02 7.018528916339127122e+00 +7.200000000000006395e-02 6.507027589796972933e+00 +7.600000000000006750e-02 6.041565973900427267e+00 +8.000000000000007105e-02 5.617977528089880046e+00 +8.400000000000007461e-02 5.232314776056921524e+00 +8.800000000000007816e-02 4.880905896134316357e+00 +9.200000000000008171e-02 4.560379423568035051e+00 +9.600000000000008527e-02 4.267668146124951711e+00 +1.000000000000000888e-01 3.999999999999994671e+00 +1.040000000000000924e-01 3.754881345749468746e+00 +1.080000000000000959e-01 3.530076249646986852e+00 +1.120000000000000995e-01 3.323584153150752840e+00 +1.160000000000001030e-01 3.133617447981945414e+00 +1.200000000000001066e-01 2.958579881656800303e+00 +1.240000000000001101e-01 2.797046319087039823e+00 +1.280000000000001137e-01 2.647744122008044876e+00 +1.320000000000001172e-01 2.509536237703268391e+00 +1.360000000000001208e-01 2.381405982091822970e+00 +1.400000000000001243e-01 2.262443438914023552e+00 +1.440000000000001279e-01 2.151833362024441865e+00 +1.480000000000001315e-01 2.048844451729221916e+00 +1.520000000000001350e-01 1.952819871895013160e+00 +1.560000000000001386e-01 1.863168877627065401e+00 +1.600000000000001421e-01 1.779359430604979142e+00 +1.640000000000001457e-01 1.700911688665121879e+00 +1.680000000000001492e-01 1.627392266631946471e+00 +1.720000000000001528e-01 1.558409175913225475e+00 +1.760000000000001563e-01 1.493607360497070102e+00 +1.800000000000001599e-01 1.432664756446988985e+00 +1.840000000000001634e-01 1.375288810650234339e+00 +1.880000000000001670e-01 1.321213402388751623e+00 +1.920000000000001705e-01 1.270196118280660480e+00 +1.960000000000001741e-01 1.222015837325249654e+00 +2.000000000000001776e-01 1.176470588235292158e+00 +2.040000000000001812e-01 1.133375646024116223e+00 +2.080000000000001847e-01 1.092561839000085522e+00 +2.120000000000001883e-01 1.053874040974621007e+00 +2.160000000000001918e-01 1.017169826674259703e+00 +2.200000000000001954e-01 9.823182711198411576e-01 +2.240000000000001990e-01 9.491988761485290471e-01 +2.280000000000002025e-01 9.177006093532030784e-01 +2.320000000000002061e-01 8.877210425395909432e-01 +2.360000000000002096e-01 8.591655783902659715e-01 +2.400000000000002132e-01 8.319467554076525051e-01 +2.440000000000002167e-01 8.059836224127912008e-01 +2.480000000000002203e-01 7.812011749265659333e-01 +2.520000000000002238e-01 7.575298466759576854e-01 +2.560000000000002274e-01 7.349050502675041896e-01 +2.600000000000002309e-01 7.132667617689003592e-01 +2.640000000000002345e-01 6.925591445509434729e-01 +2.680000000000002380e-01 6.727302082772713687e-01 +2.720000000000002416e-01 6.537314993985658962e-01 +2.760000000000002451e-01 6.355178199196694910e-01 +2.800000000000002487e-01 6.180469715698382327e-01 +2.840000000000002522e-01 6.012795228245696455e-01 +2.880000000000002558e-01 5.851785965076531371e-01 +2.920000000000002593e-01 5.697096759491353524e-01 +2.960000000000002629e-01 5.548404278929370825e-01 +3.000000000000002665e-01 5.405405405405395713e-01 +3.040000000000002700e-01 5.267815752876218172e-01 +3.079999999999998295e-01 5.135368308615099187e-01 +3.119999999999998330e-01 5.007812187011744243e-01 +3.159999999999998366e-01 4.884911485403889420e-01 +3.199999999999998401e-01 4.766444232602483622e-01 +3.239999999999998437e-01 4.652201421712758855e-01 +3.279999999999998472e-01 4.541986119690422652e-01 +3.319999999999998508e-01 4.435612646818782312e-01 +3.359999999999998543e-01 4.332905819959101401e-01 +3.399999999999998579e-01 4.233700254022019216e-01 +3.439999999999998614e-01 4.137839716640739907e-01 +3.479999999999998650e-01 4.045176531503837936e-01 +3.519999999999998685e-01 3.955571026233350440e-01 +3.559999999999998721e-01 3.868891021077721093e-01 +3.599999999999998757e-01 3.785011355034068048e-01 +3.639999999999998792e-01 3.703813446324337733e-01 +3.679999999999998828e-01 3.625184884429108467e-01 +3.719999999999998863e-01 3.549019051134268410e-01 +3.759999999999998899e-01 3.475214768272681387e-01 +3.799999999999998934e-01 3.403675970047653765e-01 +3.839999999999998970e-01 3.334311398010084693e-01 +3.879999999999999005e-01 3.267034316928466575e-01 +3.919999999999999041e-01 3.201762249942370353e-01 +3.959999999999999076e-01 3.138416731527280401e-01 +3.999999999999999112e-01 3.076923076923078759e-01 +4.039999999999999147e-01 3.017210166791379211e-01 +4.079999999999999183e-01 2.959210245969556841e-01 +4.119999999999999218e-01 2.902858735282507485e-01 +4.159999999999999254e-01 2.848094055458088580e-01 +4.199999999999999289e-01 2.794857462269424997e-01 +4.239999999999999325e-01 2.743092892097699353e-01 +4.279999999999999361e-01 2.692746817173262697e-01 +4.319999999999999396e-01 2.643768109811552858e-01 +4.359999999999999432e-01 2.596107915013812217e-01 +4.399999999999999467e-01 2.549719530851606852e-01 +4.439999999999999503e-01 2.504558296098900461e-01 +4.479999999999999538e-01 2.460581484616445047e-01 +4.519999999999999574e-01 2.417748206030831681e-01 +4.559999999999999609e-01 2.376019312284970986e-01 +4.599999999999999645e-01 2.335357309668379955e-01 +4.639999999999999680e-01 2.295726275964664609e-01 +4.679999999999999716e-01 2.257091782380239164e-01 +4.719999999999999751e-01 2.219420819942828083e-01 +4.759999999999999787e-01 2.182681730080846816e-01 +4.799999999999999822e-01 2.146844139115500483e-01 +4.839999999999999858e-01 2.111878896416564122e-01 +4.879999999999999893e-01 2.077758015990425755e-01 +4.919999999999999929e-01 2.044454621285226037e-01 +4.959999999999999964e-01 2.011942893012924893e-01 +5.000000000000000000e-01 1.980198019801980291e-01 +5.040000000000000036e-01 1.949196151507118502e-01 +5.080000000000000071e-01 1.918914355014506856e-01 +5.120000000000000107e-01 1.889330572391590413e-01 +5.160000000000000142e-01 1.860423581240976953e-01 +5.200000000000000178e-01 1.832172957127152779e-01 +5.240000000000000213e-01 1.804559037953485379e-01 +5.280000000000000249e-01 1.777562890175054255e-01 +5.320000000000000284e-01 1.751166276740308836e-01 +5.360000000000000320e-01 1.725351626661513482e-01 +5.400000000000000355e-01 1.700102006120367271e-01 +5.440000000000000391e-01 1.675401091021190281e-01 +5.480000000000000426e-01 1.651233140909630914e-01 +5.520000000000000462e-01 1.627582974180023512e-01 +5.560000000000000497e-01 1.604435944499351396e-01 +5.600000000000000533e-01 1.581777918380259385e-01 +5.640000000000000568e-01 1.559595253839723417e-01 +5.680000000000000604e-01 1.537874780083906268e-01 +5.720000000000000639e-01 1.516603778163331806e-01 +5.760000000000000675e-01 1.495769962545919762e-01 +5.800000000000000711e-01 1.475361463558571562e-01 +5.840000000000000746e-01 1.455366810650956244e-01 +5.880000000000000782e-01 1.435774916437899396e-01 +5.920000000000000817e-01 1.416575061479357356e-01 +5.960000000000000853e-01 1.397756879759362025e-01 +6.000000000000000888e-01 1.379310344827585910e-01 +6.040000000000000924e-01 1.361225756569275358e-01 +6.080000000000000959e-01 1.343493728571274748e-01 +6.120000000000000995e-01 1.326105176053722912e-01 +6.160000000000001030e-01 1.309051304338719190e-01 +6.200000000000001066e-01 1.292323597828896053e-01 +6.240000000000001101e-01 1.275913809470342331e-01 +6.280000000000001137e-01 1.259813950675763849e-01 +6.320000000000001172e-01 1.244016281685094288e-01 +6.360000000000001208e-01 1.228513302342037483e-01 +6.400000000000001243e-01 1.213297743266197048e-01 +6.440000000000001279e-01 1.198362557401566053e-01 +6.480000000000001315e-01 1.183700911923182136e-01 +6.520000000000001350e-01 1.169306180484747243e-01 +6.560000000000001386e-01 1.155171935790922783e-01 +6.600000000000001421e-01 1.141291942478885602e-01 +6.640000000000001457e-01 1.127660150294544500e-01 +6.680000000000001492e-01 1.114270687549584610e-01 +6.720000000000001528e-01 1.101117854846239419e-01 +6.760000000000001563e-01 1.088196119057360522e-01 +6.800000000000001599e-01 1.075500107550010354e-01 +6.840000000000001634e-01 1.063024602641403082e-01 +6.880000000000001670e-01 1.050764536276594385e-01 +6.920000000000001705e-01 1.038714984917857992e-01 +6.960000000000001741e-01 1.026871164636199707e-01 +7.000000000000001776e-01 1.015228426395938521e-01 +7.040000000000001812e-01 1.003782251523741009e-01 +7.080000000000001847e-01 9.925282473539193129e-02 +7.120000000000001883e-01 9.814621430422182380e-02 +7.160000000000001918e-01 9.705797855406902985e-02 +7.200000000000001954e-01 9.598771357266265569e-02 +7.240000000000001990e-01 9.493502646788533339e-02 +7.280000000000002025e-01 9.389953500950258547e-02 +7.320000000000002061e-01 9.288086728438631201e-02 +7.360000000000002096e-01 9.187866136465534794e-02 +7.400000000000002132e-01 9.089256498818393259e-02 +7.440000000000002167e-01 8.992223525095492664e-02 +7.480000000000002203e-01 8.896733831075931409e-02 +7.520000000000002238e-01 8.802754910176685543e-02 +7.560000000000002274e-01 8.710255105951539289e-02 +7.600000000000002309e-01 8.619203585588687544e-02 +7.640000000000002345e-01 8.529570314365840511e-02 +7.680000000000002380e-01 8.441326031023557719e-02 +7.720000000000002416e-01 8.354442224019351104e-02 +7.760000000000002451e-01 8.268891108626764963e-02 +7.800000000000002487e-01 8.184645604845305900e-02 +7.840000000000002522e-01 8.101679316088634952e-02 +7.880000000000002558e-01 8.019966508619856549e-02 +7.920000000000002593e-01 7.939482091704190558e-02 +7.960000000000002629e-01 7.860201598450593241e-02 +8.000000000000002665e-01 7.782101167315171042e-02 +8.040000000000002700e-01 7.705157524240421885e-02 +8.080000000000002736e-01 7.629347965405480769e-02 +8.120000000000002771e-01 7.554650340563633104e-02 +8.159999999999998366e-01 7.481043036944386160e-02 +8.199999999999998401e-01 7.408504963698328560e-02 +8.239999999999998437e-01 7.337015536864105458e-02 +8.279999999999998472e-01 7.266554664837436561e-02 +8.319999999999998508e-01 7.197102734323274076e-02 +8.359999999999998543e-01 7.128640596752765235e-02 +8.399999999999998579e-01 7.061149555147580581e-02 +8.439999999999998614e-01 6.994611351414872780e-02 +8.479999999999998650e-01 6.929008154056799651e-02 +8.519999999999998685e-01 6.864322546279265358e-02 +8.559999999999998721e-01 6.800537514485147095e-02 +8.599999999999998757e-01 6.737636437137854706e-02 +8.639999999999998792e-01 6.675603073981706270e-02 +8.679999999999998828e-01 6.614421555606121716e-02 +8.719999999999998863e-01 6.554076373341165274e-02 +8.759999999999998899e-01 6.494552369472487985e-02 +8.799999999999998934e-01 6.435834727764193353e-02 +8.839999999999998970e-01 6.377908964278609927e-02 +8.879999999999999005e-01 6.320760918482412616e-02 +8.919999999999999041e-01 6.264376744628925853e-02 +8.959999999999999076e-01 6.208742903406862940e-02 +8.999999999999999112e-01 6.153846153846155576e-02 +9.039999999999999147e-01 6.099673545471848146e-02 +9.079999999999999183e-01 6.046212410697444223e-02 +9.119999999999999218e-01 5.993450357449381372e-02 +9.159999999999999254e-01 5.941375262014650382e-02 +9.199999999999999289e-01 5.889975262103901155e-02 +9.239999999999999325e-01 5.839238750122625887e-02 +9.279999999999999361e-01 5.789154366643357169e-02 +9.319999999999999396e-01 5.739710994072028116e-02 +9.359999999999999432e-01 5.690897750501938690e-02 +9.399999999999999467e-01 5.642703983749013802e-02 +9.439999999999999503e-01 5.595119265562265715e-02 +9.479999999999999538e-01 5.548133386003614026e-02 +9.519999999999999574e-01 5.501736347991427467e-02 +9.559999999999999609e-01 5.455918362002366157e-02 +9.599999999999999645e-01 5.410669840926307650e-02 +9.639999999999999680e-01 5.365981395069308046e-02 +9.679999999999999716e-01 5.321843827299782559e-02 +9.719999999999999751e-01 5.278248128333214856e-02 +9.759999999999999787e-01 5.235185472150907793e-02 +9.799999999999999822e-01 5.192647211548448438e-02 +9.839999999999999858e-01 5.150624873809691445e-02 +9.879999999999999893e-01 5.109110156502262579e-02 +9.919999999999999929e-01 5.068094923390677881e-02 +9.959999999999999964e-01 5.027571200463341189e-02 +1.000000000000000000e+00 4.987531172069825658e-02 +1.004000000000000004e+00 4.947967177164933755e-02 +1.008000000000000007e+00 4.908871705656198819e-02 +1.012000000000000011e+00 4.870237394851575224e-02 +1.016000000000000014e+00 4.832057026004198119e-02 +1.020000000000000018e+00 4.794323520951194323e-02 +1.024000000000000021e+00 4.757029938843623795e-02 +1.028000000000000025e+00 4.720169472964758084e-02 +1.032000000000000028e+00 4.683735447633964599e-02 +1.036000000000000032e+00 4.647721315193586999e-02 +1.040000000000000036e+00 4.612120653076284132e-02 +1.044000000000000039e+00 4.576927160950389900e-02 +1.048000000000000043e+00 4.542134657940923026e-02 +1.052000000000000046e+00 4.507737079923981177e-02 +1.056000000000000050e+00 4.473728476892297606e-02 +1.060000000000000053e+00 4.440103010389841176e-02 +1.064000000000000057e+00 4.406854951013400301e-02 +1.068000000000000060e+00 4.373978675979158653e-02 +1.072000000000000064e+00 4.341468666752337779e-02 +1.076000000000000068e+00 4.309319506738051864e-02 +1.080000000000000071e+00 4.277525879031568445e-02 +1.084000000000000075e+00 4.246082564226245221e-02 +1.088000000000000078e+00 4.214984438277454004e-02 +1.092000000000000082e+00 4.184226470420866068e-02 +1.096000000000000085e+00 4.153803721143525113e-02 +1.100000000000000089e+00 4.123711340206185488e-02 +1.104000000000000092e+00 4.093944564715438356e-02 +1.108000000000000096e+00 4.064498717244204029e-02 +1.112000000000000099e+00 4.035369203999211729e-02 +1.116000000000000103e+00 4.006551513034112971e-02 +1.120000000000000107e+00 3.978041212506961549e-02 +1.124000000000000110e+00 3.949833948980784049e-02 +1.128000000000000114e+00 3.921925445766046014e-02 +1.132000000000000117e+00 3.894311501303814732e-02 +1.136000000000000121e+00 3.866987987588514641e-02 +1.140000000000000124e+00 3.839950848629136715e-02 +1.144000000000000128e+00 3.813196098947862350e-02 +1.148000000000000131e+00 3.786719822115049150e-02 +1.152000000000000135e+00 3.760518169319586324e-02 +1.156000000000000139e+00 3.734587357973642024e-02 +1.160000000000000142e+00 3.708923670350863788e-02 +1.164000000000000146e+00 3.683523452257115444e-02 +1.168000000000000149e+00 3.658383111732873422e-02 +1.172000000000000153e+00 3.633499117786413712e-02 +1.176000000000000156e+00 3.608867999156967904e-02 +1.180000000000000160e+00 3.584486343107032291e-02 +1.184000000000000163e+00 3.560350794243054284e-02 +1.188000000000000167e+00 3.536458053363737003e-02 +1.192000000000000171e+00 3.512804876335216819e-02 +1.196000000000000174e+00 3.489388072992415102e-02 +1.200000000000000178e+00 3.466204506065857088e-02 +1.204000000000000181e+00 3.443251090133294529e-02 +1.208000000000000185e+00 3.420524790595471515e-02 +1.212000000000000188e+00 3.398022622675411775e-02 +1.216000000000000192e+00 3.375741650440600844e-02 +1.220000000000000195e+00 3.353678985847474009e-02 +1.224000000000000199e+00 3.331831787807627149e-02 +1.228000000000000203e+00 3.310197261275193287e-02 +1.232000000000000206e+00 3.288772656354829044e-02 +1.236000000000000210e+00 3.267555267429791965e-02 +1.240000000000000213e+00 3.246542432309589693e-02 +1.244000000000000217e+00 3.225731531396689583e-02 +1.248000000000000220e+00 3.205119986871828031e-02 +1.252000000000000224e+00 3.184705261897421286e-02 +1.256000000000000227e+00 3.164484859838635755e-02 +1.260000000000000231e+00 3.144456323501666067e-02 +1.264000000000000234e+00 3.124617234388786177e-02 +1.268000000000000238e+00 3.104965211969764119e-02 +1.272000000000000242e+00 3.085497912969210887e-02 +1.276000000000000245e+00 3.066213030669488054e-02 +1.280000000000000249e+00 3.047108294228775827e-02 +1.284000000000000252e+00 3.028181468013924071e-02 +1.288000000000000256e+00 3.009430350947728955e-02 +1.292000000000000259e+00 2.990852775870277147e-02 +1.296000000000000263e+00 2.972446608914009608e-02 +1.300000000000000266e+00 2.954209748892170501e-02 +1.304000000000000270e+00 2.936140126700317876e-02 +1.308000000000000274e+00 2.918235704730575905e-02 +1.312000000000000277e+00 2.900494476298318483e-02 +1.316000000000000281e+00 2.882914465080985839e-02 +1.320000000000000284e+00 2.865493724568742018e-02 +1.324000000000000288e+00 2.848230337526687014e-02 +1.328000000000000291e+00 2.831122415468345990e-02 +1.331999999999999851e+00 2.814168098140173643e-02 +1.335999999999999854e+00 2.797365553016791656e-02 +1.339999999999999858e+00 2.780712974806741344e-02 +1.343999999999999861e+00 2.764208584968455562e-02 +1.347999999999999865e+00 2.747850631236247940e-02 +1.351999999999999869e+00 2.731637387156060290e-02 +1.355999999999999872e+00 2.715567151630753073e-02 +1.359999999999999876e+00 2.699638248474705085e-02 +1.363999999999999879e+00 2.683849025977512112e-02 +1.367999999999999883e+00 2.668197856476570498e-02 +1.371999999999999886e+00 2.652683135938339529e-02 +1.375999999999999890e+00 2.637303283548080718e-02 +1.379999999999999893e+00 2.622056741307882480e-02 +1.383999999999999897e+00 2.606941973642774163e-02 +1.387999999999999901e+00 2.591957467014749730e-02 +1.391999999999999904e+00 2.577101729544513040e-02 +1.395999999999999908e+00 2.562373290640778539e-02 +1.399999999999999911e+00 2.547770700636943150e-02 +1.403999999999999915e+00 2.533292530434976680e-02 +1.407999999999999918e+00 2.518937371156353827e-02 +1.411999999999999922e+00 2.504703833799876850e-02 +1.415999999999999925e+00 2.490590548906232785e-02 +1.419999999999999929e+00 2.476596166229134977e-02 +1.423999999999999932e+00 2.462719354412898007e-02 +1.427999999999999936e+00 2.448958800676305156e-02 +1.431999999999999940e+00 2.435313210502629278e-02 +1.435999999999999943e+00 2.421781307335672817e-02 +1.439999999999999947e+00 2.408361832281682297e-02 +1.443999999999999950e+00 2.395053543817025898e-02 +1.447999999999999954e+00 2.381855217501491206e-02 +1.451999999999999957e+00 2.368765645697090000e-02 +1.455999999999999961e+00 2.355783637292243465e-02 +1.459999999999999964e+00 2.342908017431236112e-02 +1.463999999999999968e+00 2.330137627248816262e-02 +1.467999999999999972e+00 2.317471323609841816e-02 +1.471999999999999975e+00 2.304907978853852624e-02 +1.475999999999999979e+00 2.292446480544465398e-02 +1.479999999999999982e+00 2.280085731223494352e-02 +1.483999999999999986e+00 2.267824648169684473e-02 +1.487999999999999989e+00 2.255662163161969297e-02 +1.491999999999999993e+00 2.243597222247151191e-02 +1.495999999999999996e+00 2.231628785511909074e-02 +1.500000000000000000e+00 2.219755826859045808e-02 +1.504000000000000004e+00 2.207977333787882260e-02 +1.508000000000000007e+00 2.196292307178713404e-02 +1.512000000000000011e+00 2.184699761081234162e-02 +1.516000000000000014e+00 2.173198722506863162e-02 +1.520000000000000018e+00 2.161788231224869364e-02 +1.524000000000000021e+00 2.150467339562233543e-02 +1.528000000000000025e+00 2.139235112207160325e-02 +1.532000000000000028e+00 2.128090626016163403e-02 +1.536000000000000032e+00 2.117032969824659064e-02 +1.540000000000000036e+00 2.106061244260983359e-02 +1.544000000000000039e+00 2.095174561563771173e-02 +1.548000000000000043e+00 2.084372045402625717e-02 +1.552000000000000046e+00 2.073652830702006275e-02 +1.556000000000000050e+00 2.063016063468276623e-02 +1.560000000000000053e+00 2.052460900619843334e-02 +1.564000000000000057e+00 2.041986509820321524e-02 +1.568000000000000060e+00 2.031592069314670790e-02 +1.572000000000000064e+00 2.021276767768235769e-02 +1.576000000000000068e+00 2.011039804108634768e-02 +1.580000000000000071e+00 2.000880387370442687e-02 +1.584000000000000075e+00 1.990797736542605431e-02 +1.588000000000000078e+00 1.980791080418533093e-02 +1.592000000000000082e+00 1.970859657448824701e-02 +1.596000000000000085e+00 1.961002715596560711e-02 +1.600000000000000089e+00 1.951219512195121603e-02 +1.604000000000000092e+00 1.941509313808480186e-02 +1.608000000000000096e+00 1.931871396093910384e-02 +1.612000000000000099e+00 1.922305043667081256e-02 +1.616000000000000103e+00 1.912809549969471390e-02 +1.620000000000000107e+00 1.903384217138071391e-02 +1.624000000000000110e+00 1.894028355877321393e-02 +1.628000000000000114e+00 1.884741285333244726e-02 +1.632000000000000117e+00 1.875522332969731948e-02 +1.636000000000000121e+00 1.866370834446934648e-02 +1.640000000000000124e+00 1.857286133501727041e-02 +1.644000000000000128e+00 1.848267581830198916e-02 +1.648000000000000131e+00 1.839314538972132082e-02 +1.652000000000000135e+00 1.830426372197433912e-02 +1.656000000000000139e+00 1.821602456394480485e-02 +1.660000000000000142e+00 1.812842173960334952e-02 +1.664000000000000146e+00 1.804144914692811658e-02 +1.668000000000000149e+00 1.795510075684340554e-02 +1.672000000000000153e+00 1.786937061217604497e-02 +1.676000000000000156e+00 1.778425282662914400e-02 +1.680000000000000160e+00 1.769974158377287526e-02 +1.684000000000000163e+00 1.761583113605199452e-02 +1.688000000000000167e+00 1.753251580380974298e-02 +1.692000000000000171e+00 1.744978997432786866e-02 +1.696000000000000174e+00 1.736764810088241295e-02 +1.700000000000000178e+00 1.728608470181503681e-02 +1.704000000000000181e+00 1.720509435961950495e-02 +1.708000000000000185e+00 1.712467172004312338e-02 +1.712000000000000188e+00 1.704481149120282840e-02 +1.716000000000000192e+00 1.696550844271561831e-02 +1.720000000000000195e+00 1.688675740484311960e-02 +1.724000000000000199e+00 1.680855326764998589e-02 +1.728000000000000203e+00 1.673089098017590051e-02 +1.732000000000000206e+00 1.665376554962089140e-02 +1.736000000000000210e+00 1.657717204054378127e-02 +1.740000000000000213e+00 1.650110557407345746e-02 +1.744000000000000217e+00 1.642556132713279132e-02 +1.748000000000000220e+00 1.635053453167490539e-02 +1.752000000000000224e+00 1.627602047393167384e-02 +1.756000000000000227e+00 1.620201449367408147e-02 +1.760000000000000231e+00 1.612851198348439971e-02 +1.764000000000000234e+00 1.605550838803980127e-02 +1.768000000000000238e+00 1.598299920340731650e-02 +1.772000000000000242e+00 1.591097997634991629e-02 +1.776000000000000245e+00 1.583944630364345074e-02 +1.780000000000000249e+00 1.576839383140432940e-02 +1.784000000000000252e+00 1.569781825442772422e-02 +1.788000000000000256e+00 1.562771531553606985e-02 +1.792000000000000259e+00 1.555808080493775898e-02 +1.796000000000000263e+00 1.548891055959574804e-02 +1.800000000000000266e+00 1.542020046260600928e-02 +1.804000000000000270e+00 1.535194644258556021e-02 +1.808000000000000274e+00 1.528414447306994557e-02 +1.812000000000000277e+00 1.521679057192002783e-02 +1.816000000000000281e+00 1.514988080073785548e-02 +1.820000000000000284e+00 1.508341126429152759e-02 +1.824000000000000288e+00 1.501737810994882918e-02 +1.828000000000000291e+00 1.495177752711953148e-02 +1.832000000000000295e+00 1.488660574670618714e-02 +1.836000000000000298e+00 1.482185904056327469e-02 +1.839999999999999858e+00 1.475753372096455691e-02 +1.843999999999999861e+00 1.469362614007845534e-02 +1.847999999999999865e+00 1.463013268945144441e-02 +1.851999999999999869e+00 1.456704979949912868e-02 +1.855999999999999872e+00 1.450437393900505002e-02 +1.859999999999999876e+00 1.444210161462696276e-02 +1.863999999999999879e+00 1.438022937041055424e-02 +1.867999999999999883e+00 1.431875378731037839e-02 +1.871999999999999886e+00 1.425767148271799359e-02 +1.875999999999999890e+00 1.419697910999706200e-02 +1.879999999999999893e+00 1.413667335802539123e-02 +1.883999999999999897e+00 1.407675095074376048e-02 +1.887999999999999901e+00 1.401720864671139599e-02 +1.891999999999999904e+00 1.395804323866802442e-02 +1.895999999999999908e+00 1.389925155310237082e-02 +1.899999999999999911e+00 1.384083044982699177e-02 +1.903999999999999915e+00 1.378277682155935359e-02 +1.907999999999999918e+00 1.372508759350902358e-02 +1.911999999999999922e+00 1.366775972297091385e-02 +1.915999999999999925e+00 1.361079019892442316e-02 +1.919999999999999929e+00 1.355417604163842993e-02 +1.923999999999999932e+00 1.349791430228201340e-02 +1.927999999999999936e+00 1.344200206254079870e-02 +1.931999999999999940e+00 1.338643643423886517e-02 +1.935999999999999943e+00 1.333121455896609658e-02 +1.939999999999999947e+00 1.327633360771089677e-02 +1.943999999999999950e+00 1.322179078049817713e-02 +1.947999999999999954e+00 1.316758330603254486e-02 +1.951999999999999957e+00 1.311370844134657904e-02 +1.955999999999999961e+00 1.306016347145414098e-02 +1.959999999999999964e+00 1.300694570900861290e-02 +1.963999999999999968e+00 1.295405249396600414e-02 +1.967999999999999972e+00 1.290148119325283498e-02 +1.971999999999999975e+00 1.284922920043872485e-02 +1.975999999999999979e+00 1.279729393541359332e-02 +1.979999999999999982e+00 1.274567284406943890e-02 +1.983999999999999986e+00 1.269436339798657443e-02 +1.987999999999999989e+00 1.264336309412427556e-02 +1.991999999999999993e+00 1.259266945451578169e-02 +1.995999999999999996e+00 1.254228002596753828e-02 +2.000000000000000000e+00 1.249219237976264760e-02 diff --git a/presentations/data/siesta_30_legendre.dat b/presentations/data/siesta_30_legendre.dat new file mode 100644 index 0000000..8818da7 --- /dev/null +++ b/presentations/data/siesta_30_legendre.dat @@ -0,0 +1,81 @@ +# Contour path for the equilibrium contour segment. +# This segment belongs to the chemical potential: Left +# It has the chemical potential: +# 0.00000 eV +# Re(c) [eV] Im(c) [eV] Re(w) Im(w) +-0.399997E+02 0.931409E-01 0.111723E-02 0.238904E+00 +-0.399939E+02 0.489622E+00 0.136109E-01 0.553505E+00 +-0.399639E+02 0.119792E+01 0.519079E-01 0.861477E+00 +-0.398772E+02 0.220816E+01 0.128972E+00 0.115613E+01 +-0.396895E+02 0.350282E+01 0.255229E+00 0.142862E+01 +-0.393480E+02 0.505418E+01 0.437431E+00 0.166737E+01 +-0.387953E+02 0.682168E+01 0.677499E+00 0.185843E+01 +-0.379750E+02 0.875006E+01 0.971519E+00 0.198656E+01 +-0.368377E+02 0.107688E+02 0.130914E+01 0.203684E+01 +-0.353477E+02 0.127936E+02 0.167361E+01 0.199688E+01 +-0.334889E+02 0.147299E+02 0.204272E+01 0.185912E+01 +-0.312693E+02 0.164789E+02 0.239060E+01 0.162282E+01 +-0.287237E+02 0.179451E+02 0.269042E+01 0.129547E+01 +-0.259128E+02 0.190447E+02 0.291746E+01 0.893083E+00 +-0.229196E+02 0.197140E+02 0.305235E+01 0.439211E+00 +-0.198427E+02 0.199156E+02 0.308356E+01 -0.371783E-01 +-0.167878E+02 0.196426E+02 0.300905E+01 -0.504771E+00 +-0.138574E+02 0.189192E+02 0.283645E+01 -0.933347E+00 +-0.111423E+02 0.177976E+02 0.258191E+01 -0.129701E+01 +-0.871349E+01 0.163532E+02 0.226784E+01 -0.157669E+01 +-0.661792E+01 0.146760E+02 0.191986E+01 -0.176143E+01 +-0.487647E+01 0.128630E+02 0.156372E+01 -0.184860E+01 +-0.348548E+01 0.110099E+02 0.122242E+01 -0.184281E+01 +-0.242053E+01 0.920500E+01 0.914199E+00 -0.175414E+01 +-0.164192E+01 0.752473E+01 0.651253E+00 -0.159603E+01 +-0.110091E+01 0.603120E+01 0.439456E+00 -0.138310E+01 +-0.745925E+00 0.477209E+01 0.278724E+00 -0.112941E+01 +-0.528120E+00 0.378180E+01 0.163872E+00 -0.847339E+00 +-0.405918E+00 0.308348E+01 0.857171E-01 -0.546996E+00 +-0.348432E+00 0.269114E+01 0.322806E-01 -0.236716E+00 +-0.335594E+00 0.259883E+01 0.120509E-02 0.000000E+00 +-0.333590E+00 0.259883E+01 0.280206E-02 0.000000E+00 +-0.329991E+00 0.259883E+01 0.439384E-02 0.000000E+00 +-0.324806E+00 0.259883E+01 0.597399E-02 0.000000E+00 +-0.318049E+00 0.259883E+01 0.753807E-02 0.000000E+00 +-0.309737E+00 0.259883E+01 0.908183E-02 0.000000E+00 +-0.299893E+00 0.259883E+01 0.106011E-01 0.000000E+00 +-0.288544E+00 0.259883E+01 0.120917E-01 0.000000E+00 +-0.275720E+00 0.259883E+01 0.135497E-01 0.000000E+00 +-0.261456E+00 0.259883E+01 0.149710E-01 0.000000E+00 +-0.245790E+00 0.259883E+01 0.163517E-01 0.000000E+00 +-0.228765E+00 0.259883E+01 0.176875E-01 0.000000E+00 +-0.210426E+00 0.259883E+01 0.189740E-01 0.000000E+00 +-0.190823E+00 0.259883E+01 0.202052E-01 0.000000E+00 +-0.170009E+00 0.259883E+01 0.213718E-01 0.000000E+00 +-0.148039E+00 0.259883E+01 0.224546E-01 0.000000E+00 +-0.124974E+00 0.259883E+01 0.234070E-01 0.000000E+00 +-0.100874E+00 0.259883E+01 0.241079E-01 0.000000E+00 +-0.758059E-01 0.259883E+01 0.242391E-01 0.000000E+00 +-0.498364E-01 0.259883E+01 0.230448E-01 0.000000E+00 +-0.230357E-01 0.259883E+01 0.192826E-01 0.000000E+00 + 0.452403E-02 0.259883E+01 0.127391E-01 0.000000E+00 + 0.327685E-01 0.259883E+01 0.627412E-02 0.000000E+00 + 0.616215E-01 0.259883E+01 0.245937E-02 0.000000E+00 + 0.910052E-01 0.259883E+01 0.851305E-03 0.000000E+00 + 0.120841E+00 0.259883E+01 0.277637E-03 0.000000E+00 + 0.151047E+00 0.259883E+01 0.878093E-04 0.000000E+00 + 0.181543E+00 0.259883E+01 0.272660E-04 0.000000E+00 + 0.212247E+00 0.259883E+01 0.836418E-05 0.000000E+00 + 0.243075E+00 0.259883E+01 0.254545E-05 0.000000E+00 + 0.000000E+00 0.812134E-01 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.243640E+00 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.406067E+00 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.568494E+00 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.730920E+00 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.893347E+00 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.105577E+01 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.121820E+01 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.138063E+01 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.154305E+01 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.170548E+01 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.186791E+01 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.203033E+01 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.219276E+01 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.235519E+01 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.251761E+01 0.000000E+00 -0.162427E+00 diff --git a/presentations/data/siesta_30_legendre_right.dat b/presentations/data/siesta_30_legendre_right.dat new file mode 100644 index 0000000..cc0f255 --- /dev/null +++ b/presentations/data/siesta_30_legendre_right.dat @@ -0,0 +1,81 @@ +# Contour path for the equilibrium contour segment. +# This segment belongs to the chemical potential: Left +# It has the chemical potential: +# 0.00000 eV +# Re(c) [eV] Im(c) [eV] Re(w) Im(w) +-0.399392E+02 0.155510E+01 0.243032E+00 0.310316E+01 +-0.394559E+02 0.462329E+01 0.720584E+00 0.301948E+01 +-0.385064E+02 0.756741E+01 0.117309E+01 0.285597E+01 +-0.371232E+02 0.103111E+02 0.158542E+01 0.262010E+01 +-0.353532E+02 0.127870E+02 0.194470E+01 0.232239E+01 +-0.332548E+02 0.149395E+02 0.224095E+01 0.197581E+01 +-0.308946E+02 0.167271E+02 0.246746E+01 0.159487E+01 +-0.283442E+02 0.181229E+02 0.262106E+01 0.119482E+01 +-0.256768E+02 0.191154E+02 0.270198E+01 0.790701E+00 +-0.229634E+02 0.197077E+02 0.271363E+01 0.396631E+00 +-0.202706E+02 0.199162E+02 0.266212E+01 0.250881E-01 +-0.176575E+02 0.197689E+02 0.255567E+01 -0.313550E+00 +-0.151743E+02 0.193028E+02 0.240398E+01 -0.611317E+00 +-0.128611E+02 0.185617E+02 0.221753E+01 -0.862772E+00 +-0.107473E+02 0.175937E+02 0.200697E+01 -0.106494E+01 +-0.885177E+01 0.164485E+02 0.178254E+01 -0.121713E+01 +-0.718367E+01 0.151757E+02 0.155364E+01 -0.132058E+01 +-0.574325E+01 0.138226E+02 0.132844E+01 -0.137813E+01 +-0.452327E+01 0.124334E+02 0.111374E+01 -0.139378E+01 +-0.351049E+01 0.110475E+02 0.914796E+00 -0.137229E+01 +-0.268717E+01 0.969947E+01 0.735334E+00 -0.131880E+01 +-0.203255E+01 0.841880E+01 0.577641E+00 -0.123849E+01 +-0.152429E+01 0.722977E+01 0.442677E+00 -0.113634E+01 +-0.113968E+01 0.615189E+01 0.330240E+00 -0.101689E+01 +-0.856687E+00 0.520040E+01 0.239155E+00 -0.884171E+00 +-0.654900E+00 0.438683E+01 0.167448E+00 -0.741578E+00 +-0.516193E+00 0.371960E+01 0.112520E+00 -0.591903E+00 +-0.425287E+00 0.320464E+01 0.713005E-01 -0.437364E+00 +-0.370156E+00 0.284591E+01 0.403801E-01 -0.279700E+00 +-0.342299E+00 0.264578E+01 0.161449E-01 -0.120461E+00 +-0.335594E+00 0.259883E+01 0.120509E-02 0.000000E+00 +-0.333590E+00 0.259883E+01 0.280206E-02 0.000000E+00 +-0.329991E+00 0.259883E+01 0.439384E-02 0.000000E+00 +-0.324806E+00 0.259883E+01 0.597399E-02 0.000000E+00 +-0.318049E+00 0.259883E+01 0.753807E-02 0.000000E+00 +-0.309737E+00 0.259883E+01 0.908183E-02 0.000000E+00 +-0.299893E+00 0.259883E+01 0.106011E-01 0.000000E+00 +-0.288544E+00 0.259883E+01 0.120917E-01 0.000000E+00 +-0.275720E+00 0.259883E+01 0.135497E-01 0.000000E+00 +-0.261456E+00 0.259883E+01 0.149710E-01 0.000000E+00 +-0.245790E+00 0.259883E+01 0.163517E-01 0.000000E+00 +-0.228765E+00 0.259883E+01 0.176875E-01 0.000000E+00 +-0.210426E+00 0.259883E+01 0.189740E-01 0.000000E+00 +-0.190823E+00 0.259883E+01 0.202052E-01 0.000000E+00 +-0.170009E+00 0.259883E+01 0.213718E-01 0.000000E+00 +-0.148039E+00 0.259883E+01 0.224546E-01 0.000000E+00 +-0.124974E+00 0.259883E+01 0.234070E-01 0.000000E+00 +-0.100874E+00 0.259883E+01 0.241079E-01 0.000000E+00 +-0.758059E-01 0.259883E+01 0.242391E-01 0.000000E+00 +-0.498364E-01 0.259883E+01 0.230448E-01 0.000000E+00 +-0.230357E-01 0.259883E+01 0.192826E-01 0.000000E+00 + 0.452403E-02 0.259883E+01 0.127391E-01 0.000000E+00 + 0.327685E-01 0.259883E+01 0.627412E-02 0.000000E+00 + 0.616215E-01 0.259883E+01 0.245937E-02 0.000000E+00 + 0.910052E-01 0.259883E+01 0.851305E-03 0.000000E+00 + 0.120841E+00 0.259883E+01 0.277637E-03 0.000000E+00 + 0.151047E+00 0.259883E+01 0.878093E-04 0.000000E+00 + 0.181543E+00 0.259883E+01 0.272660E-04 0.000000E+00 + 0.212247E+00 0.259883E+01 0.836418E-05 0.000000E+00 + 0.243075E+00 0.259883E+01 0.254545E-05 0.000000E+00 + 0.000000E+00 0.812134E-01 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.243640E+00 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.406067E+00 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.568494E+00 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.730920E+00 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.893347E+00 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.105577E+01 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.121820E+01 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.138063E+01 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.154305E+01 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.170548E+01 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.186791E+01 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.203033E+01 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.219276E+01 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.235519E+01 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.251761E+01 0.000000E+00 -0.162427E+00 diff --git a/presentations/data/siesta_30_simpson.dat b/presentations/data/siesta_30_simpson.dat new file mode 100644 index 0000000..1bcd4ee --- /dev/null +++ b/presentations/data/siesta_30_simpson.dat @@ -0,0 +1,81 @@ +# Contour path for the equilibrium contour segment. +# This segment belongs to the chemical potential: Left +# It has the chemical potential: +# 0.00000 eV +# Re(c) [eV] Im(c) [eV] Re(w) Im(w) +-0.400000E+02 0.243914E-14 0.931903E-16 0.760957E+00 +-0.398967E+02 0.202571E+01 0.232184E+00 0.227103E+01 +-0.395879E+02 0.403041E+01 0.461960E+00 0.223564E+01 +-0.390768E+02 0.599331E+01 0.457963E+00 0.145138E+01 +-0.383688E+02 0.789405E+01 0.904806E+00 0.209591E+01 +-0.374711E+02 0.971292E+01 0.111328E+01 0.199301E+01 +-0.363930E+02 0.114311E+02 0.873475E+00 0.124630E+01 +-0.351458E+02 0.130306E+02 0.149355E+01 0.172650E+01 +-0.337424E+02 0.144951E+02 0.166141E+01 0.156564E+01 +-0.321973E+02 0.158092E+02 0.120802E+01 0.925695E+00 +-0.305266E+02 0.169593E+02 0.194386E+01 0.119705E+01 +-0.287476E+02 0.179336E+02 0.205552E+01 0.993135E+00 +-0.268787E+02 0.187219E+02 0.143058E+01 0.519282E+00 +-0.249393E+02 0.193159E+02 0.221397E+01 0.556634E+00 +-0.229495E+02 0.197097E+02 0.225910E+01 0.328571E+00 +-0.209300E+02 0.198991E+02 0.152054E+01 0.647337E-01 +-0.189018E+02 0.198820E+02 0.227885E+01 -0.135377E+00 +-0.168857E+02 0.196588E+02 0.225327E+01 -0.366450E+00 +-0.149029E+02 0.192317E+02 0.146954E+01 -0.395816E+00 +-0.129737E+02 0.186051E+02 0.213249E+01 -0.814839E+00 +-0.111183E+02 0.177856E+02 0.203856E+01 -0.102750E+01 +-0.935590E+01 0.167816E+02 0.128232E+01 -0.819674E+00 +-0.770472E+01 0.156036E+02 0.178846E+01 -0.141877E+01 +-0.618191E+01 0.142637E+02 0.163489E+01 -0.159331E+01 +-0.480328E+01 0.127759E+02 0.976240E+00 -0.116755E+01 +-0.358311E+01 0.111556E+02 0.127864E+01 -0.189118E+01 +-0.253406E+01 0.941964E+01 0.107967E+01 -0.201142E+01 +-0.166702E+01 0.758595E+01 0.618415E+00 -0.150128E+01 +-0.839300E+00 0.513569E+01 0.889806E+00 -0.333413E+01 +-0.336063E+00 0.259883E+01 0.112567E+00 -0.855327E+00 +-0.335594E+00 0.259883E+01 0.120509E-02 0.000000E+00 +-0.333590E+00 0.259883E+01 0.280206E-02 0.000000E+00 +-0.329991E+00 0.259883E+01 0.439384E-02 0.000000E+00 +-0.324806E+00 0.259883E+01 0.597399E-02 0.000000E+00 +-0.318049E+00 0.259883E+01 0.753807E-02 0.000000E+00 +-0.309737E+00 0.259883E+01 0.908183E-02 0.000000E+00 +-0.299893E+00 0.259883E+01 0.106011E-01 0.000000E+00 +-0.288544E+00 0.259883E+01 0.120917E-01 0.000000E+00 +-0.275720E+00 0.259883E+01 0.135497E-01 0.000000E+00 +-0.261456E+00 0.259883E+01 0.149710E-01 0.000000E+00 +-0.245790E+00 0.259883E+01 0.163517E-01 0.000000E+00 +-0.228765E+00 0.259883E+01 0.176875E-01 0.000000E+00 +-0.210426E+00 0.259883E+01 0.189740E-01 0.000000E+00 +-0.190823E+00 0.259883E+01 0.202052E-01 0.000000E+00 +-0.170009E+00 0.259883E+01 0.213718E-01 0.000000E+00 +-0.148039E+00 0.259883E+01 0.224546E-01 0.000000E+00 +-0.124974E+00 0.259883E+01 0.234070E-01 0.000000E+00 +-0.100874E+00 0.259883E+01 0.241079E-01 0.000000E+00 +-0.758059E-01 0.259883E+01 0.242391E-01 0.000000E+00 +-0.498364E-01 0.259883E+01 0.230448E-01 0.000000E+00 +-0.230357E-01 0.259883E+01 0.192826E-01 0.000000E+00 + 0.452403E-02 0.259883E+01 0.127391E-01 0.000000E+00 + 0.327685E-01 0.259883E+01 0.627412E-02 0.000000E+00 + 0.616215E-01 0.259883E+01 0.245937E-02 0.000000E+00 + 0.910052E-01 0.259883E+01 0.851305E-03 0.000000E+00 + 0.120841E+00 0.259883E+01 0.277637E-03 0.000000E+00 + 0.151047E+00 0.259883E+01 0.878093E-04 0.000000E+00 + 0.181543E+00 0.259883E+01 0.272660E-04 0.000000E+00 + 0.212247E+00 0.259883E+01 0.836418E-05 0.000000E+00 + 0.243075E+00 0.259883E+01 0.254545E-05 0.000000E+00 + 0.000000E+00 0.812134E-01 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.243640E+00 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.406067E+00 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.568494E+00 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.730920E+00 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.893347E+00 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.105577E+01 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.121820E+01 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.138063E+01 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.154305E+01 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.170548E+01 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.186791E+01 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.203033E+01 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.219276E+01 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.235519E+01 0.000000E+00 -0.162427E+00 + 0.000000E+00 0.251761E+01 0.000000E+00 -0.162427E+00 diff --git a/presentations/equations.tex b/presentations/equations.tex new file mode 100644 index 0000000..2c2115d --- /dev/null +++ b/presentations/equations.tex @@ -0,0 +1,11 @@ +\begin{align*} + \G_\kk(\E)&=\big[(\E+\im\eta)\SO_\kk - \HH_\kk - \sum_\idxE\SE_{\idxE,\kk}(\E-\mu_\idxE)\big]^{-1} + \\ + \Scat_{\idxE,\kk}(\E) &=i\big(\SE_{\idxE,\kk}(\E-\mu_\idxE)-\SE^\dagger_{\idxE,\kk}(\E-\mu_\idxE)\big) + \\ + \Spec_{\idxE,\kk}(\E) &=\G_\kk(\E)\Scat_{\idxE,\kk}(\E)\G_\kk^\dagger(\E) + % \\ + % \DM & =\frac1{2\pi} + % \iint_\BZ\dEBZ\cd \kk \dd\E\, \sum_\idxE\Spec_{\idxE,\kk}(\E) n_{F,\idxE}(\E) + % \eikr, +\end{align*} \ No newline at end of file diff --git a/presentations/fig/10-1021-nl202065-4.jpg b/presentations/fig/10-1021-nl202065-4.jpg new file mode 100644 index 0000000..90d54b7 Binary files /dev/null and b/presentations/fig/10-1021-nl202065-4.jpg differ diff --git a/presentations/fig/10-1126-science-1144657-1.jpg b/presentations/fig/10-1126-science-1144657-1.jpg new file mode 100644 index 0000000..6cf6d96 Binary files /dev/null and b/presentations/fig/10-1126-science-1144657-1.jpg differ diff --git a/presentations/fig/45nm_die_dualcore.jpg b/presentations/fig/45nm_die_dualcore.jpg new file mode 100644 index 0000000..0942c36 Binary files /dev/null and b/presentations/fig/45nm_die_dualcore.jpg differ diff --git a/presentations/fig/A_recursion.pdf b/presentations/fig/A_recursion.pdf new file mode 100644 index 0000000..9063da4 Binary files /dev/null and b/presentations/fig/A_recursion.pdf differ diff --git a/presentations/fig/G_recursion.pdf b/presentations/fig/G_recursion.pdf new file mode 100644 index 0000000..be893dd Binary files /dev/null and b/presentations/fig/G_recursion.pdf differ diff --git a/presentations/fig/atom+GGPS.png b/presentations/fig/atom+GGPS.png new file mode 100644 index 0000000..94056e4 Binary files /dev/null and b/presentations/fig/atom+GGPS.png differ diff --git a/presentations/fig/atom+GPS.png b/presentations/fig/atom+GPS.png new file mode 100644 index 0000000..2e06402 Binary files /dev/null and b/presentations/fig/atom+GPS.png differ diff --git a/presentations/fig/atom+el-1.png b/presentations/fig/atom+el-1.png new file mode 100644 index 0000000..01c5724 Binary files /dev/null and b/presentations/fig/atom+el-1.png differ diff --git a/presentations/fig/atom+el-2.png b/presentations/fig/atom+el-2.png new file mode 100644 index 0000000..a765fcb Binary files /dev/null and b/presentations/fig/atom+el-2.png differ diff --git a/presentations/fig/atom+el-3.png b/presentations/fig/atom+el-3.png new file mode 100644 index 0000000..3d89a7c Binary files /dev/null and b/presentations/fig/atom+el-3.png differ diff --git a/presentations/fig/atom+el-3_ani_0.png b/presentations/fig/atom+el-3_ani_0.png new file mode 100644 index 0000000..b16cc9b Binary files /dev/null and b/presentations/fig/atom+el-3_ani_0.png differ diff --git a/presentations/fig/atom+el-3_ani_21483.png b/presentations/fig/atom+el-3_ani_21483.png new file mode 100644 index 0000000..be1ad1e Binary files /dev/null and b/presentations/fig/atom+el-3_ani_21483.png differ diff --git a/presentations/fig/atom+rev-CM.png b/presentations/fig/atom+rev-CM.png new file mode 100644 index 0000000..120b047 Binary files /dev/null and b/presentations/fig/atom+rev-CM.png differ diff --git a/presentations/fig/bdt.png b/presentations/fig/bdt.png new file mode 100644 index 0000000..c244d6f Binary files /dev/null and b/presentations/fig/bdt.png differ diff --git a/presentations/fig/bdt_tip.png b/presentations/fig/bdt_tip.png new file mode 100644 index 0000000..21c0d24 Binary files /dev/null and b/presentations/fig/bdt_tip.png differ diff --git a/presentations/fig/bdt_tip_layer.png b/presentations/fig/bdt_tip_layer.png new file mode 100644 index 0000000..abeff22 Binary files /dev/null and b/presentations/fig/bdt_tip_layer.png differ diff --git a/presentations/fig/btd.tex b/presentations/fig/btd.tex new file mode 100644 index 0000000..eacc7cd --- /dev/null +++ b/presentations/fig/btd.tex @@ -0,0 +1,140 @@ +\input ../common.tex +\usepackage[export]{adjustbox} + +\usetikzlibrary{external,backgrounds,calc,intersections} +\usetikzlibrary{fadings} +\usetikzlibrary{arrows,arrows.meta} +\usetikzlibrary{shapes.arrows,shapes.misc,shapes.geometric} +\usetikzlibrary{fadings} +\usetikzlibrary{decorations,decorations.markings,decorations.pathreplacing} + +\tikzexternalize + +\begin{document} + + +%\tikzexternaldisable + +\def\linfty{\overleftarrow{\boldsymbol\infty}} +\def\rinfty{\overrightarrow{\boldsymbol\infty}} + +% +% Create inversion algorithm +\def\miniblock[#1]#2{% + \tikz[baseline=(X.base)y] \node[draw,font=\scriptsize, + minimum width=.475cm,minimum height=.4cm,#1] (X) + {$\vphantom{\overleftarrow A_1}#2$}; +} +\tikzsetfigurename{inv-block_} +\def\bsize{.8cm} + +\foreach \YYY in {0,1,...,17} { +\begin{tikzpicture}[block/.style={ + shape=rectangle,draw,minimum size=.8cm}, + dd/.style={densely dotted}, + block dd/.style={block,dd}, + Y/.style={anchor=north west,align=left}, + ] + + \node[block dd] at (-1.5*\bsize,0.5*\bsize) {}; + \foreach \x in {0,1,2,3,4,5,6,7} { + \node[block] (A\x) at ({(\x-0.5)*\bsize},0.5*\bsize) {$\mathbf H$}; + } + \node[block dd] at (7.5*\bsize,0.5*\bsize) {}; + + \draw[->,dd] (A0) to[out=75,in=105] node[above] {$\mathbf V$} (A1); + \draw[->,dd] (A1) to[out=75,in=105] node[above] {$\mathbf V$} (A2); + \draw[->,dd] (A2) to[out=75,in=105] node[above] {$\mathbf V$} (A3); + \draw[->,dd] (A3) to[out=75,in=105] node[above] {$\mathbf V$} (A4); + \draw[->,dd] (A4) to[out=75,in=105] node[above] {$\mathbf V$} (A5); + \draw[->,dd] (A5) to[out=75,in=105] node[above] {$\mathbf V$} (A6); + \draw[->,dd] (A6) to[out=75,in=105] node[above] {$\mathbf V$} (A7); + + \draw[<-,dd] (A0) to[out=-75,in=-105] node[below] {$\mathbf V^\dagger$} (A1); + \draw[<-,dd] (A1) to[out=-75,in=-105] node[below] {$\mathbf V^\dagger$} (A2); + \draw[<-,dd] (A2) to[out=-75,in=-105] node[below] {$\mathbf V^\dagger$} (A3); + \draw[<-,dd] (A3) to[out=-75,in=-105] node[below] {$\mathbf V^\dagger$} (A4); + \draw[<-,dd] (A4) to[out=-75,in=-105] node[below] {$\mathbf V^\dagger$} (A5); + \draw[<-,dd] (A5) to[out=-75,in=-105] node[below] {$\mathbf V^\dagger$} (A6); + \draw[<-,dd] (A6) to[out=-75,in=-105] node[below] {$\mathbf V^\dagger$} (A7); + + \begin{scope}[on background layer, + top/.style={red!90!black!##1!white}, + bot/.style={blue!90!black!##1!white}, + ] + \fill[top=10] (A0.south west) + |- (A0.north east) -- cycle; + + \ifnum\YYY>0 + \fill[top=20] (A1.south west) + |- (A1.north east) -- cycle; + \fi + \ifnum\YYY>1 + \fill[top=30] (A2.south west) + |- (A2.north east) -- cycle; + \fi + \ifnum\YYY>2 + \fill[top=40] (A3.south west) + |- (A3.north east) -- cycle; + \fi + \ifnum\YYY>3 + \fill[top=50] (A4.south west) + |- (A4.north east) -- cycle; + \fi + \ifnum\YYY>4 + \fill[top=60] (A5.south west) + |- (A5.north east) -- cycle; + \fi + \ifnum\YYY>5 + \fill[top=70] (A6.south west) + |- (A6.north east) -- cycle; + \fi + \ifnum\YYY>6 + \fill[top=70] (A7.south west) + |- (A7.north east) -- cycle; + \fi + + \ifnum\YYY>16 + \fill[bot=70] (A0.south west) + -| (A0.north east) -- cycle; + \fi + \ifnum\YYY>15 + \fill[bot=70] (A1.south west) + -| (A1.north east) -- cycle; + \fi + \ifnum\YYY>14 + \fill[bot=60] (A2.south west) + -| (A2.north east) -- cycle; + \fi + \ifnum\YYY>13 + \fill[bot=50] (A3.south west) + -| (A3.north east) -- cycle; + \fi + \ifnum\YYY>12 + \fill[bot=40] (A4.south west) + -| (A4.north east) -- cycle; + \fi + \ifnum\YYY>11 + \fill[bot=30] (A5.south west) + -| (A5.north east) -- cycle; + \fi + \ifnum\YYY>10 + \fill[bot=20] (A6.south west) + -| (A6.north east) -- cycle; + \fi + \fill[bot=10] (A7.south west) + -| (A7.north east) -- cycle; + + \end{scope} + +\end{tikzpicture} + +} + +\end{document} + + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "btd" +%%% End: diff --git a/presentations/fig/dev2.png b/presentations/fig/dev2.png new file mode 100644 index 0000000..35c1658 Binary files /dev/null and b/presentations/fig/dev2.png differ diff --git a/presentations/fig/elec.png b/presentations/fig/elec.png new file mode 100644 index 0000000..6fdfd36 Binary files /dev/null and b/presentations/fig/elec.png differ diff --git a/presentations/fig/full.png b/presentations/fig/full.png new file mode 100644 index 0000000..7379721 Binary files /dev/null and b/presentations/fig/full.png differ diff --git a/presentations/fig/human-hair.jpeg b/presentations/fig/human-hair.jpeg new file mode 100644 index 0000000..a776e67 Binary files /dev/null and b/presentations/fig/human-hair.jpeg differ diff --git a/presentations/fig/inv-block3.pdf b/presentations/fig/inv-block3.pdf new file mode 100644 index 0000000..61eb6b1 Binary files /dev/null and b/presentations/fig/inv-block3.pdf differ diff --git a/presentations/fig/mpv.conf b/presentations/fig/mpv.conf new file mode 100644 index 0000000..1571a84 --- /dev/null +++ b/presentations/fig/mpv.conf @@ -0,0 +1,4 @@ +fullscreen=yes +pause +screen=1 +#geometry=60%+380+80 diff --git a/presentations/fig/no_trs.png b/presentations/fig/no_trs.png new file mode 100644 index 0000000..7d3054a Binary files /dev/null and b/presentations/fig/no_trs.png differ diff --git a/presentations/fig/perf_method_new.pdf b/presentations/fig/perf_method_new.pdf new file mode 100644 index 0000000..39dbbe0 Binary files /dev/null and b/presentations/fig/perf_method_new.pdf differ diff --git a/presentations/fig/perf_method_old.pdf b/presentations/fig/perf_method_old.pdf new file mode 100644 index 0000000..3ab101f Binary files /dev/null and b/presentations/fig/perf_method_old.pdf differ diff --git a/presentations/fig/pivoting.mp4 b/presentations/fig/pivoting.mp4 new file mode 100644 index 0000000..dd9f219 Binary files /dev/null and b/presentations/fig/pivoting.mp4 differ diff --git a/presentations/fig/red_blood_cell.jpeg b/presentations/fig/red_blood_cell.jpeg new file mode 100644 index 0000000..c1db890 Binary files /dev/null and b/presentations/fig/red_blood_cell.jpeg differ diff --git a/presentations/fig/tbt-algorithm.pdf b/presentations/fig/tbt-algorithm.pdf new file mode 100644 index 0000000..f0297b9 Binary files /dev/null and b/presentations/fig/tbt-algorithm.pdf differ diff --git a/presentations/fig/tbt-nterminal.pdf b/presentations/fig/tbt-nterminal.pdf new file mode 100644 index 0000000..0c13d48 Binary files /dev/null and b/presentations/fig/tbt-nterminal.pdf differ diff --git a/presentations/fig/transistors-were-people.jpg b/presentations/fig/transistors-were-people.jpg new file mode 100644 index 0000000..7025159 Binary files /dev/null and b/presentations/fig/transistors-were-people.jpg differ diff --git a/presentations/fig/trs.png b/presentations/fig/trs.png new file mode 100644 index 0000000..9824a05 Binary files /dev/null and b/presentations/fig/trs.png differ diff --git a/presentations/fig/ts-poisson-initial.pdf b/presentations/fig/ts-poisson-initial.pdf new file mode 100644 index 0000000..d7eaeb9 Binary files /dev/null and b/presentations/fig/ts-poisson-initial.pdf differ diff --git a/presentations/fig/wos_negf_cite.jpg b/presentations/fig/wos_negf_cite.jpg new file mode 100644 index 0000000..d5d63fb Binary files /dev/null and b/presentations/fig/wos_negf_cite.jpg differ diff --git a/presentations/theme/beamercolorthemeworkshopdtu.sty b/presentations/theme/beamercolorthemeworkshopdtu.sty new file mode 100644 index 0000000..a8e7d76 --- /dev/null +++ b/presentations/theme/beamercolorthemeworkshopdtu.sty @@ -0,0 +1,32 @@ +%% Color theme +% Define colors +\definecolor{dtured} {cmyk}{0.00, 0.95, 0.72, 0.27} +\definecolor{dtudarkgray} {cmyk}{0.00, 0.00, 0.00, 0.56} +\definecolor{dtugray} {cmyk}{0.00, 0.00, 0.00, 0.37} +\definecolor{dtulightgray} {cmyk}{0.00, 0.00, 0.00, 0.19} +\definecolor{dtudarkblue} {cmyk}{1.00, 0.72, 0.00, 0.38} +\definecolor{dtublue} {cmyk}{0.60, 0.44, 0.00, 0.24} +\definecolor{dtulightblue} {cmyk}{0.30, 0.22, 0.00, 0.12} +\definecolor{dtudarkgreen} {cmyk}{1.00, 0.00, 0.83, 0.47} +\definecolor{dtugreen} {cmyk}{0.725,0.004,1.00, 0.004} +\definecolor{dtuyellow} {cmyk}{0.00, 0.00, 1.00, 0.00} +\definecolor{dtuorange} {cmyk}{0.00, 0.34, 0.91, 0.00} +\definecolor{dtudarkorange}{cmyk}{0.00, 0.51, 1.00, 0.00} +\definecolor{dtupurpur} {cmyk}{0.00, 0.94, 0.00, 0.43} +\definecolor{dtupurple} {cmyk}{0.83, 1.00, 0.00, 0.23} + +\mode + +\usecolortheme[named=dtudarkgray]{structure} +\setbeamercolor*{title}{parent=structure} +\setbeamercolor{block title example}{fg=white,bg=dtudarkgreen} + +\setbeamercolor{background canvas}{bg=white} +\setbeamercolor{background}{fg=dtulightgray} +\setbeamercolor{block body}{fg=black,bg=white} +\setbeamercolor{block title}{fg=dtugray!40,bg=dtured} +\setbeamercolor{frametitle}{fg=dtugray!50} +\setbeamercolor{framesubtitle}{fg=dtugray} +\setbeamercolor{footline}{fg=dtugray} + +\mode \ No newline at end of file diff --git a/presentations/theme/beamerfontthemeworkshopdtu.sty b/presentations/theme/beamerfontthemeworkshopdtu.sty new file mode 100644 index 0000000..1c0d3d1 --- /dev/null +++ b/presentations/theme/beamerfontthemeworkshopdtu.sty @@ -0,0 +1,4 @@ +%% Font theme +\usefonttheme{default} +\setbeamerfont{frametitle}{series=\bfseries,family=\sffamily} +\setbeamerfont{framesubtitle}{series=\mdseries,family=\sffamily,size=\normalsize} \setbeamerfont{footline}{series=\mdseries,family=\sffamily} \ No newline at end of file diff --git a/presentations/theme/beamerinnerthemeworkshopdtu.sty b/presentations/theme/beamerinnerthemeworkshopdtu.sty new file mode 100644 index 0000000..1c868a4 --- /dev/null +++ b/presentations/theme/beamerinnerthemeworkshopdtu.sty @@ -0,0 +1,32 @@ +%% Inner theme +\useinnertheme[shadow=true]{rounded} + +% Title page: default + +% \defbeamertemplate*{title page}{default}[1][]% +% { +% \vbox{} +% \vfill +% \begin{centering} +% \begin{beamercolorbox}[sep=8pt,center,#1]{title} +% \usebeamerfont{title}\inserttitle\par% +% \ifx\insertsubtitle\@empty% +% \else% +% \vskip0.25em% +% {\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}\insertsubtitle\par}% +% \fi% +% \end{beamercolorbox}\vskip0.5em +% {\usebeamercolor[fg]{titlegraphic}\inserttitlegraphic\par} +% %\vskip1em\par +% \begin{beamercolorbox}[sep=8pt,center,#1]{author} +% \usebeamerfont{author}\insertauthor +% \end{beamercolorbox} +% \begin{beamercolorbox}[sep=8pt,center,#1]{institute} +% \usebeamerfont{institute}\insertinstitute +% \end{beamercolorbox} +% \begin{beamercolorbox}[sep=8pt,center,#1]{date} +% \usebeamerfont{date}\insertdate +% \end{beamercolorbox} +% \end{centering} +% \vfill +% } diff --git a/presentations/theme/beamerouterthemeworkshopdtu.sty b/presentations/theme/beamerouterthemeworkshopdtu.sty new file mode 100644 index 0000000..8e6dbfc --- /dev/null +++ b/presentations/theme/beamerouterthemeworkshopdtu.sty @@ -0,0 +1,116 @@ +\RequirePackage{calc} + +\beamertemplatenumberedballsectiontoc + +%% Theme + +\newlength\framesep +\setlength\framesep{0.05\paperwidth} +\setbeamersize{% + sidebar width left=\framesep, + sidebar width right=\framesep, + text margin left=0.6\framesep, + text margin right=0.6\framesep, +} + +\newlength\frametitleheight +\setlength\frametitleheight{2\framesep} + +\setbeamertemplate{background}{% + \begin{pgfpicture}{0pt}{0pt}{\paperwidth}{\paperheight} + \begin{pgfscope} + \usebeamercolor[bg]{background} + \color{dtured} + \pgfpathrectangle{% + \pgfpoint{0pt}{\paperheight-\frametitleheight}}{% + \pgfpoint{\paperwidth}{\frametitleheight}} + \pgfusepath{fill} + \end{pgfscope} + \begin{pgfscope} + \pgfsetlinewidth{0.4bp} + \pgfpathmoveto{\pgfpoint{\framesep}{\framesep}} + \pgfpathlineto{\pgfpoint{\paperwidth-\framesep}{\framesep}} + \pgfpathlineto{\pgfpoint{\paperwidth-\framesep}{\paperheight-\framesep}} + \pgfpathlineto{\pgfpoint{\framesep}{\paperheight-\framesep}} + \pgfpathclose + \pgfsetlinewidth{1bp} + \pgfusepath{stroke} + %\pgfsetdash{{3.0pt}{3.0pt}}{0.0pt} + \pgfpathmoveto{\pgfpoint{0pt}{\paperheight-\frametitleheight}} + \pgfpathmoveto{\pgfpoint{\paperwidth}{\paperheight-\frametitleheight}} + \pgfusepath{stroke} + \end{pgfscope} + \end{pgfpicture}% +} + +\makeatletter +\setbeamertemplate{frametitle} +{%\vspace*{1.1\framesep} +\leavevmode + \begin{beamercolorbox}[wd=\textwidth, + ht=0.85\frametitleheight, + dp=1ex, + leftskip=-0.4\framesep, + rightskip=-0.4\framesep]{frametitle}% + \null\vfill + \usebeamerfont{frametitle}% + \insertframetitle + \end{beamercolorbox}% + \ifx\insertframesubtitle\@empty\par% + \else + \usebeamerfont{framesubtitle}\par% + \begin{beamercolorbox}[wd=\textwidth, + dp=1ex, + leftskip=-0.4\framesep, + rightskip=-0.4\framesep]{framesubtitle}% + \usebeamerfont{framesubtitle}% + \insertframesubtitle + \end{beamercolorbox}% + \vskip-4pt + \fi +} +\makeatother +%\setbeamertemplate{beamerboxes}{width=\textwidth}% + +\setbeamertemplate{footline}{% + \begin{beamercolorbox}[wd=\paperwidth, + ht=2ex, + dp=0.2\framesep, + leftskip=1.1\framesep, + rightskip=1.1\framesep]{footline} + \insertshortinstitute + \hfill + \insertframenumber/\inserttotalframenumber% +% \rlap{\hskip 3.5pt\insertlogo} + \end{beamercolorbox} +} + + +\newlength\logoposition +\setlength\logoposition{\paperheight-1.1\framesep} + +\setbeamertemplate{sidebar right}{% + \vspace{\logoposition}% + \llap{% + \parbox[b][0pt]{\framesep}{% + \hspace{0.1\framesep}% + \insertlogo% + \hspace{0.1\framesep}% + } + }% + \vfill + \llap{\usebeamertemplate***{navigation symbols}\hskip0.1cm}% + \vskip2pt% +} + +\setbeamertemplate{sidebar left}{% + \vspace{\logoposition}% + \rlap{% + \setlength\fboxsep{0pt}% + \parbox[b][0pt]{2\framesep}{% + \hspace{1.1\framesep}% + %\insertlogo + \hspace{0.1\framesep}% + }% + }% +} \ No newline at end of file diff --git a/presentations/theme/beamerthemeworkshopdtu.sty b/presentations/theme/beamerthemeworkshopdtu.sty new file mode 100644 index 0000000..87f23cd --- /dev/null +++ b/presentations/theme/beamerthemeworkshopdtu.sty @@ -0,0 +1,15 @@ +\RequirePackage{dtulogo} +\logo{\tikz \node[shape=DTU logo,anchor=center,DTU logo={width=.04\paperwidth,mark color=dtured}] {};} + +\usefonttheme{professionalfonts} + +\usepackage{beamercolorthemeworkshopdtu} +\usepackage{beamerfontthemeworkshopdtu} +\usepackage{beamerinnerthemeworkshopdtu} +\usepackage{beamerouterthemeworkshopdtu} + + +\mode{% + \setbeamercolor{background canvas}{bg=black!2} + \beamertemplatenavigationsymbolsempty +} diff --git a/presentations/theme/template.tex b/presentations/theme/template.tex new file mode 100644 index 0000000..c6883df --- /dev/null +++ b/presentations/theme/template.tex @@ -0,0 +1,129 @@ +\documentclass[presentation]{beamer} % to compile the presentation +% \documentclass[handout]{beamer} % to compile 2x2 handouts +\usepackage{tikz} +\usepackage{pgf} +\usetheme{workshopdtu} +\begin{document} + + +\author{Insert name} +\title{Insert title} +\date{Insert date} +\institute[% + Insert left footer + ]{% + DTU -- Technical University of Denmark \\ + MIC -- Department of Micro and Nanotechnology +} + +% The somelogo, if you want to use it! :D +%\pgfdeclareimage[width=0.8\framesep]{mylogo}{} +%\logo{\pgfuseimage{mylogo}} % The right logo + +\begin{frame} + \maketitle +\end{frame} + +\begin{frame} + \frametitle{Outline} + \tableofcontents +\end{frame} + +\section{Lists} +\begin{frame}[fragile] + \frametitle{A slide with a list} + \framesubtitle{Use to specify layers} + \begin{itemize} + \item<1-> First item on all overlays + \item<2> Second item only on the second overlay. + \item<1,3> Third on first and last. + \begin{description} + \item<3>[Note] Lists can be nested. + \item<3>[Point] Use this to structure your presentation. + \end{description} + \end{itemize} + +\end{frame} + +\section{Columns} +\begin{frame} + \frametitle{A slide with columns} + \begin{columns}[t] % Align the columns at the top + \column{0.4\textwidth} + This is the \alert{first} column. It occupies $40$\% of the text width. + \column{0.6\textwidth} + This is the \alert{second} column. This could be a nice image\ldots + \begin{center} + \rule{0.4\textwidth}{0.3\textwidth} + \end{center} + \end{columns} +\end{frame} + +\section{Blocks} +\begin{frame} + \frametitle{Use blocks to highlight your points} + \begin{block}{} + This is the point you want to highlight. It could be an important formula + \[ + a^2+b^2=c^2 + \] + \end{block} + + \begin{example} + The example block is useful for typesetting examples consistently. + \end{example} +\end{frame} + +\section{Verbatim} +\begin{frame}[fragile] + \frametitle{Verbatim material} + If the slide contains verbatim material you must use the \texttt{fragile} option for the frame. + + + + The \texttt{listings} package can be used for more fancy verbatim text and pretty printing of source code. +\end{frame} + +\section{Finding documentation} +\begin{frame} + \frametitle{Beamer documentation} + The Beamer userguide is available on-line at CTAN: + \begin{center} + \url{ftp://tug.ctan.org/pub/tex-archive/macros/latex/contrib/beamer/doc/beameruserguide.pdf} + \end{center} + + If Beamer is installed on your system you can find the manual by running + \begin{center} + \texttt{mthelp beamer} + \end{center} + in a Command Prompt. +\end{frame} + +\section{DTU stuff} + +\begin{frame} + \frametitle{The template} + This presentation template is a \texttt{beamer} implementation of the official DTU PowerPoint template available at + \begin{center} + \url{http://portalen.dtu.dk/Services/Kommunikation.aspx} + \end{center} + + To follow the design guidelines completely, you should use the colors from the DTU color palette + \begin{center} + \url{http://portalen.dtu.dk/upload/ak/design/dtu-farvemanual_03_07_2006.pdf} + \end{center} + These colors are defined in the DTU beamer theme with the names shown on the next slide. +\end{frame} + + \newcommand\dtucolorbox[1]{\parbox[b][1cm+2ex][c]{2cm}{\tiny \centering\color{#1}\rule{.8cm}{.8cm}\\ \textcolor{black}{#1}}}% +\begin{frame} + \frametitle{DTU colors} + \centering + \dtucolorbox{dtudarkgray}\dtucolorbox{dtugray}\dtucolorbox{dtulightgray}\\ + \dtucolorbox{dtudarkblue}\dtucolorbox{dtublue}\dtucolorbox{dtulightblue}\\ + \dtucolorbox{dtured}\dtucolorbox{dtupurpur}\dtucolorbox{dtupurple}\\ + \dtucolorbox{dtudarkorange}\dtucolorbox{dtuorange}\dtucolorbox{dtuyellow}\\ + \dtucolorbox{dtudarkgreen}\dtucolorbox{dtugreen}\rule{2cm}{0pt}\\ +\end{frame} + +\end{document} diff --git a/tar.sh b/tar.sh index 7744757..473db5b 100755 --- a/tar.sh +++ b/tar.sh @@ -1,10 +1,40 @@ #!/bin/bash -tar cvfz TBT-TS-sisl.tar.gz \ - tutorial.pdf install_tutorial.sh \ - C.psf [01]*/*.{fdf,py,sh,psf} \ - */*/*.psf \ - siesta.pdf tbtrans.pdf \ - 07/*.xyz - -echo " TBT-TS-sisl.tar.gz" +# This file will tar all examples and required files for +# the tutorial tar.gz file. + +_files= +function add_file { + while [ $# -gt 0 ]; + do + _files="$_files $1" + shift + done +} + +# Add manuals +add_file arch.make +add_file siesta.pdf tbtrans.pdf +add_file tselecs.sh + +# Add IPython books +add_file tutorial.ipynb +add_file */run.ipynb + +# Add RUN.fdf +add_file */RUN.fdf +add_file */RUN_ELEC.fdf +add_file */RUN_ELEC_*.fdf + +# Add pseudo +add_file C.psf +add_file */C.psf +add_file */*/C.psf + +# Add executables +add_file */run.sh + +#echo These files will be added to the tar file: +#echo "$(echo $_files | tr ' ' '\n')" + +tar cfz sisl-TBT-TS.tar.gz $_files diff --git a/tutorial.ipynb b/tutorial.ipynb new file mode 100644 index 0000000..4f6c51e --- /dev/null +++ b/tutorial.ipynb @@ -0,0 +1,193 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import sisl" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "# sisl + TBtrans + TranSiesta\n", + "\n", + "Welcome to the tutorial on the tools:\n", + "\n", + "- sisl\n", + "- TBtrans\n", + "- TranSiesta\n", + "\n", + "Throughout this tutorial you will work with the Jupyter notebook scheme. \n", + "It is *Mathematica* \"like\" and will allow one to more quickly explore different things. A few rules about the notebook format is:\n", + "\n", + "- Everything in the notebook is parsed as Python code. One can do *any* Python code in here. So feel free to explore.\n", + "- If things crash, then select (at the top) `Kernel -> Restart & Run All` to restart the kernel and then rerun all cells.\n", + "- Press `h` for a quick help menu. These below commands are useful:\n", + " - `Esc` escape from editing the current cell\n", + " - `y` changes the current cell to a code-field, Python code\n", + " - `m` changes the current cell to a text-field, Markdown with (limited) $\\LaTeX$ support\n", + " - `Enter` edit current marked cell\n", + " - `Shift + Enter` execute current cell and skip to next cell\n", + " - `Alt + Enter` execute current cell and insert new cell below\n", + "\n", + "The tutorials encourages you to _explore_ the possibilities of extracting quantities using `sisl`. You are thus encouraged to read about relevanent functions and methods to explore intrinsic capabilities.\n", + "\n", + "One can always get help regarding any class, function or method by invoking:\n", + "\n", + " help(<>)\n", + " \n", + "For instance to get help regarding a specific function in a class, you may invoke either of the following 2 lines of code, whichever you prefer (the first will divide the current window with this and a help window, while the other will print out):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%pdoc sisl.Geometry.tile\n", + "help(sisl.Geometry.tile)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If in doubt of arguments to routines it may help you greatly to remember the above functionality.\n", + "Alternatively you can find the `sisl` API documentation [here](http://zerothi.github.io/sisl/docs/latest/api.html)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tutorials\n", + "\n", + "This tutorial is made up in consecutive examples such that one is first, introduced to the transport methodology using TBtrans. So called “tight-binding” Hamiltonians are excellent examples to understand the methodology. They are extremely simple and may be used to shed light on more complicated issues. \n", + "Subsequent to the understanding of sisl and TBtrans, the tutorial will present examples of self-consistent bias calculations using TranSiesta. These are merely extensions of the same simplistic modelling and we try and retrieve the same results as using sisl and TBtrans. If your interest lie only with TranSIESTA, do not be tempted to skip the tight-binding exercises. By understanding the underlying methodology for simple transport problems it becomes much easier to extrapolate to more complex/larger systems." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "All tutorials are hosted online [here (version 2017)](https://github.com/zerothi/ts-tbt-sisl-tutorial/tree/2017)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Table of contents" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The tutorials may be found in the sub-folders (or by pressing these links):\n", + "\n", + "- [Example 1](01/run.ipynb) \n", + " A basic example of how to create electronic structures in `sisl`. \n", + " The graphene electronic structure is recreated from a simple tight-binding calculation.\n", + " In this example you will get your first glance at `sisl` code and how to utilize it for simple things.\n", + " \n", + "- [Example 2](02/run.ipynb) \n", + " Creation of your first tight-binding Hamiltonian for TBtrans.\n", + " This, again, creates a graphene device with 2 electrodes and a small scattering region.\n", + " After having created the electronic structure to be fed into TBtrans you will run TBtrans. Then returning to the tutorial script you will run some data-analysis using `sisl` again.\n", + "\n", + "- [Example 3](03/run.ipynb) \n", + " Create transport in a skewed lattice. This exemplifies the generality of TBtrans, but also TranSiesta for cases where skewed transport directions reduces the computational effort.\n", + " \n", + " *Fast example*\n", + " \n", + "- [Example 4](04/run.ipynb) \n", + " Introduction to the `sisl.io` module which interfaces the build-in file types. In this case we concentrate on the TBtrans output file `*.TBT.nc` where `sisl` is the primary tool to perform data-analysis. Extraction of transmission, DOS, spectral DOS and the aforementioned quantities on individiual subsets of atoms.\n", + " \n", + "- [Example 5](05/run.ipynb) \n", + " Same system as in [04](04/run.ipynb). This example shows you the importance of utilising the periodicity in the electrodes. The exercises elaborates on [04](04/run.ipynb) and will teach you to extract transmission and density of states quantities on a *per $\\mathbf k$-point* case, thus enabling investigations on a Brillouin zone level.\n", + "\n", + "\n", + "- [Example 6](06/run.ipynb) \n", + " The first $N>2$-electrode example with a cross-bar graphene nano-ribbon system. You will learn to extract data from a calculation with multiple electrodes and also explore details of symmetry for $N>2$ electrode systems.\n", + " \n", + "\n", + "- [Example 7](07/run.ipynb) \n", + " Advanced exercise of *manipulation* of a predefined Hamiltonian. This example will cover how to add a magnetic field to a tight-binding Hamiltonian. This may be accomblished by using the $\\delta\\mathbf H$/$\\delta\\boldsymbol\\Sigma$ method.\n", + " \n", + " \n", + "- [Example 8](08/run.ipynb) \n", + " The first TranSiesta example. Simple graphene TranSiesta calculation where you will learn about the importance of principle cell connections *only*.\n", + " \n", + "\n", + "- [Example 9](09/run.ipynb) \n", + " The first TranSiesta example with applied bias'. You will learn to perform effective bias calculations and also to interpolate Hamiltonians for accurate $I(V)$ curves with a minimal/few self-consistently calculated Hamiltonians.\n", + " \n", + "\n", + "- [Example 10](10/run.ipynb) \n", + " Learn how to create your first input for TranSiesta, from scratch. \n", + " Create a 1D Carbon chain model with proper electrodes, a minimal scattering region and inputs for both TranSiesta and TBtrans.\n", + " \n", + " \n", + "- [Example 11](11/run.ipynb) \n", + " A multi-electrode calculation with TranSiesta. 2 overlying Carbon chains in a cross-bar configuration. In this tutorial you are encouraged to play around with data-extraction utilities such as orbital-resolved DOS, etc.\n", + "\n", + " \n", + "- [Example 12](12/run.ipynb) \n", + " Advanced example by using buffer atoms in a TranSiesta calculation. Buffer atoms are equivalent to *removing* the atoms in the TranSiesta calculation. They are however necessary when performing calculations using non equivalent electrodes and/or different periodicities." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In addition to the above examples there are a few *advanced* examples were you are challenged by the capabilities of TBtrans and TranSiesta.\n", + "\n", + "### Advanced examples\n", + "\n", + "Here is an assorted list of advanced examples. \n", + "They are not intended to be carried out in any particular order. So read the initial description and try the examples that you find most interesting.\n", + "\n", + "- [Advanced 01](A01/run.ipynb) \n", + " Use buffer atoms instead of changing the input Hamiltonian\n", + " \n", + "- [Advanced 02](A02/run.ipynb) \n", + " The advanced contour input of TranSiesta allows a variety of contours. Here you will try and create different contours and use some of the advanced contour methods.\n", + " \n", + "- [Advanced 03](A03/run.ipynb) \n", + " Create a 4 (or 6) terminal Hall-bar configuration using tight-binding.\n", + " \n", + "- [Advanced 04](A04/run.ipynb) \n", + " Create a 3rd nearest neighbour graphene model." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/tutorial.tex b/tutorial.tex deleted file mode 100644 index 6fe4c85..0000000 --- a/tutorial.tex +++ /dev/null @@ -1,844 +0,0 @@ -\documentclass[10pt]{article} - -\usepackage[textwidth=14cm,textheight=19cm]{geometry} -\usepackage{hyperref} - -\usepackage{amsmath} -\usepackage{amssymb} - -\usepackage{kpfonts} - -\newcommand\sisl{\textsc{sisl}} -\newcommand\tbt{\textsc{TBtrans}} -\newcommand\ts{\textsc{TranSIESTA}} -\newcommand\kwant{\textsc{kwant}} - -\newcommand\obj{\emph{Objective}: } -\newcommand\script[1]{\texttt{#1}} - -\newcommand\objskip{\vskip 1ex} - - -\title{Tutorial in \sisl, \tbt\ and \ts} -\author{Nick R\"ubner Papior} -\date{9--11 November, 2016} - -\newcounter{example} -\newcommand\newexample{% - \stepcounter{example}% - \ifnum\value{example}<10% - \subsection{Example 0\theexample}% - \else% - \subsection{Example \theexample}% - \fi% -} -\newcommand\theprevexample[1][1]{% - \addtocounter{example}{-#1}% - \ifnum\value{example}<10\relax% - 0\theexample% - \else% - \theexample% - \fi% - \addtocounter{example}{#1}% -} - - -\begin{document} - -\maketitle - -\tableofcontents - - -\section{Tutorial outline} - -This tutorial is made up in consecutive examples such that one is first, introduced to the -transport methodology using \tbt. So called ``tight-binding'' Hamiltonians are excellent -examples to understand the methodology. They are extremely simple and may be used to shed -light on more complicated issues. - -Subsequent to the understanding of \sisl\ and \tbt, the tutorial will present examples of -self-consistent bias calculations using \ts. These are merely extensions of the same -simplistic modelling and we try and retrieve the same results as using \sisl\ and \tbt. - -If your interest lie \emph{only} with \ts, do not be tempted to skip the tight-binding -exercises. By understanding the underlying methodology in simplistic transport problems it -is much easier to extrapolate to more complex/larger systems. - - - -\section{Installation of \sisl, \tbt\ and \ts} - -The following lists the required software for running the scripts in this tutorial. - -If you are unsure whether you have the required software you may run the installation -script \script{install\_tutorial.sh} which downloads and installs the prerequisite -packages. - -If, however, you want to \emph{stay in control} you should download and install -the following packages. - -The required Python packages are: -\begin{itemize} - \itemsep=0pt - \parskip=0pt - \item \script{six} - \item \script{numpy} - \item \script{scipy} - \item \script{matplotlib} (strictly not needed) - \item \script{netCDF4} - \item \script{sisl} -\end{itemize} -which may all be obtained using \script{pip}. Be aware that some of the modules requires -certain dependencies in your UNIX installation, see \script{install\_tutorial.sh} for the -details. - -If you have a geometry plotter (\script{molden}, \script{Jmol}, \script{XCrySDen}) you may -also view the calculated geometries from the \script{.xyz} files. - -Additionally the examples generates tabular data which may be plotted using your favourite -plotting tool (\script{gnuplot}, \script{xmgrace}, etc.). Further, some examples generates -atomic vector plots that may be plotted using \script{XCrySDen}, however, this is not a -requirement. - - - -\section{Examples} - -Although each example is laid out in step-by-step actions you are \emph{encouraged} to -read the full example before doing anything. - -If you find any errors, misprints, etc. in the examples and/or scripts, please let me -know: \href{mailto:nickpapior@gmail.com}{nickpapior@gmail.com}. - - - -% Create your first Hamiltonian using sisl -\newexample - -\obj To understand how \sisl\ may be used to create Hamiltonians. - -\objskip - -This example first creates the geometry of the graphene lattice. Then the Hamiltonian -elements are assigned to the associated object and lastly the bandstructure of graphene is -plotted (if you have \script{matplotlib}). - -\objskip - -Carefully go through \script{run.py} where each step is documented. Please do not be -discouraged by the code, there are only $7$ lines of actual code. - -Execute \script{run.py} using this command: -\begin{verbatim} - python run.py -\end{verbatim} - - -% First tbtrans calculation using orthogonal graphene example -\newexample - -\obj To understand how \sisl\ may be used to create transport Hamiltonians and interface -with \tbt. In this example you will also experience the dependency on proper $k$-point -sampling of the physical quantities. - -\objskip - -This example creates the geometry of the graphene lattice in the basic orthogonal -unit-cell (4 atoms). Then the Hamiltonian is created for an \emph{electrode} and also the -Hamiltonian for the \emph{device} region is created. Both are saved to the \script{\*.nc} -files which are the input files for \tbt. - - -\objskip - -Carefully go through \script{run.py} and note where the Hamiltonians are created and -written to disk. Once you know how the Hamiltonians are created you should be able to -return to example \theprevexample\ and reduce the $7$ lines of code to $4$ (you are -encouraged to do this after you have completed this example). - -\objskip - -After having executed \script{run.py} read the \script{RUN.fdf} which contains the minimal -input for \tbt. This is the most basic input for \tbt\ and you are encouraged to -understand all flags/keys, they are all required input for both \tbt\ and \ts. - -Then execute \tbt\ using this command: -\begin{verbatim} - tbtrans RUN.fdf -\end{verbatim} -This will run \tbt\ and will take less than a minute. Subsequently you will find numerous -files: -\begin{itemize} - \itemsep=0pt - \parskip=0pt - \item \script{siesta.TBT.nc} - - This file contains every computed quantity from \tbt. - - \item \script{siesta.TBT.CC} - - This file contains the energy points used for calculating the physical quantities, it - also contains the weights of the points in case it is a bias calculation (used for - integrating the current). - - \item \script{siesta.TBT.KP} - - This file contains the $\mathbf k$-points and weights used for integrating the Brillouin - zone. - - \item \script{siesta.TBT.TRANS\_Left-Right} - - This file contains the $\mathbf k$ resolved transmissions. - - May be plotted with - \begin{center} - \script{gnuplot -p -e 'plot "siesta.TBT.TRANS\_Left-Right" w l'} - \end{center} - - \item \script{siesta.TBT.AVTRANS\_Left-Right} - - This file contains the Brillouin zone integrated transmission. This may easily be - re-created by summing all different $\mathbf k$-point transmissions with their - associated weights (\script{siesta.TBT.TRANS\_Left-Right} file). - - May be plotted with - \begin{center} - \script{gnuplot -p -e 'plot "siesta.TBT.AVTRANS\_Left-Right" w l'} - \end{center} - -\end{itemize} - -You may alter the number of $\mathbf k$-points to converge the transmission (always do -this!). It should be apparent that \emph{many} $\mathbf k$-points are required for -converged results. In order to re-run \tbt, the output file of \tbt\ is required to be -deleted (i.e. you should delete file \script{siesta.TBT.nc}), else you will possible -overwrite data which do did not intend to be overwritten. - -How many $\mathbf k$-points are needed for a smooth transmission? -% around 200-300 - - - - - -% Second tbtrans calculation using skewed graphene example -\newexample - -\obj Learn that \tbt\ allows complex geometries and are not limited to orthogonal -unit-cells (\ts\ also allows these complex geometries). - -\objskip - -This example is equivalent to example \theprevexample, but instead of an orthogonal -unit-cell we use the standard 2 atomic unit-cell of graphene. I.e. the transport -calculation is based on a skewed unit-cell\footnote{For those with experience in the older - \ts\ input, it may be surprising that one can perform transport on skewed - unit-cells. However, the NEGF formalism does not constrain the semi-infinite - directions to be orthogonal to the other lattice vectors.}. - -Carefully go through \script{run.py} and note that there is only one small change from -example \theprevexample. Then execute \script{run.py} and \tbt\ to obtain the transmission -spectrum. - -\objskip - -Carefully compare to example \theprevexample\ and figure out if the converged $\mathbf k$-point sampling -are different or the same. -I.e. calculate the transmission for example \theprevexample\ and calculate the -transmission for this example using the converged number of $\mathbf k$-points. Then plot -the resulting two transmissions in the same plot. -% -Are they equivalent? If not, why not? -% the width of the unit-cells are not the same - - - -% sdata example -\newexample - -\obj Learn how to use the data extraction tool in \sisl. The command \script{sdata} is -extremely powerful and enables extraction of multiple quantities simultaneously. - -\objskip - -This example creates a big graphene lattice with a hole in it (it also removes dangling -bonds in the hole). Execute \script{run.py} to create the electronic structure. - -\objskip - -Go through \script{RUN.fdf} to familiarise yourself with the flags that enable the -calculation of \emph{many} physical quantities. Each of the new flags creates a new file -in the output directory. Run \tbt\ and subsequently run \script{run.sh} which extracts -certain information into 4 files. -% -Notice that \tbt\ creates many more files than the previous examples. By now you should -have figured out that the content of each file is described in the header of each -file. Please go through the files and figure out which files corresponds to what physical -quantity. - -\emph{HINT}: The prefix \script{AV} has a special meaning for all physical quantities. - -\objskip - -The \script{sdata} command has a help menu which \emph{depends} on the input. It is -extremely powerful and interfaces with many different files. This means that the help menu -will only be present if there is an initial file to process. If you do \script{sdata - siesta.TBT.nc -h} you will find one help menu. If you do \script{sdata device.xyz -h} -you will find another help menu. - -If you have a geometry viewer in your installation you may view the geometry and try and -extract the DOS and spectral-DOS from specific, or several, atoms. - - - -% Learn about Bloch's theorem in self-energies... -\newexample - -\obj Use periodicity when it may be applied. This example is equivalent to the previous -example. There is one change which increases the throughput (decreases calculation time) -by taking advantage of the self-energy calculations. This is related to Bloch's theorem, -which is encouraged to be used whenever possible. - -\objskip - -In this tutorial you should read the manual for \tbt\ and figure out how to enable Bloch's -theorem in the calculation of the electrode self-energies. - -\emph{HINT}: You only need to change \script{RUN.fdf} with an appropriate Bloch -keyword. The Python script need not be changed. - -Once you have calculated the physical quantities in this example you should compare the -execution time to example \theprevexample. Also, you should assert that the physical -quantities indeed are equivalent. - - - - -% N-electrode tight-binding calculation -\newexample - -\obj Create an $N$-electrode tight-binding calculation using \sisl\ and \tbt\ and try to -understand the symmetries involved in simple $N$-electrode setup. - -\objskip - -This example has some rather complex Python scripting to create the geometry of the -4-electrode system. When going through \script{run.py} please pay attention to the -semi-infinite directions and how they are enforced. I.e. for $N$-electrodes there will in -most cases be, at least, 2 different semi-infinite directions. Here there are two -electrodes with the semi-infinite directions along the first lattice vector (this is an -orthogonal example where the first lattice vector is equivalent to the $x$-direction), and -two electrodes with semi-infinite directions along the second lattice vector (the -$y$-direction). - -\objskip - -After running the script you should find $3$ \script{\*.nc} files, which contains the -electronic structure of the two electrodes (\script{ELEC\_X/Y.nc}) and the device -(\script{DEVICE.nc}) which are then used for \tbt\ subsequently. - -\objskip - -After running \tbt, all $12$\footnote{Due to time-reversal symmetry you only need to - calculate $6$ of them.} transmission curves have been calculated. By plotting them you -will recognise that one of the nano-ribbons have 2 symmetric transmission curves, while -the other nano-ribbon have no symmetric transmissions. - -Why is this? Try and view the device geometry to answer the question. -% one of the sides of the armchair nano-ribbon is not -% symmetric - - - -% Magnetic example -\newexample - -\obj Learn how to include arbitrary effects not intrinsically enabled in \tbt\ (in this -example we apply a magnetic field); how to import external geometries in \sisl. Finally -this example also teaches you how to speed up calculations by reusing the self-energies. -You should recognise that the $\delta\mathbf H$ method used here may also be applied on -any \ts\ system. - -\objskip - -We will consider a rather large square lattice with one electrode on each side and a -constriction in the device region. This system is considered in one of the main examples -reported in the documentation for \kwant\ (\url{https://kwant-project.org}), a well-known -toolkit to compute transmission coefficients in presence of a magnetic field. - -\objskip - -Instead of creating the geometry objects from scratch, this time we will import them in -\sisl\ by reading from two external files, one for the electrodes -(\script{electrode-square.xyz}) and one for the device region -(\script{device.xyz}). Go through \script{run.py} and find the line where this is -done. NB: \sisl\ employ a variety of IO interfaces for managing geometries. Many of the -most popular file formats are already hard-coded, otherwise you can easily implement your -own format. - -\objskip - -Continue reading \script{run.py}, you can check that there is no mention of magnetic -fields in the first part of the script: the Hamiltonian $\mathbf H$ for electrodes and -device region are created and written as usual. Generically \tbt\ does not implement a -generalised scheme for applying magnetic fields, instead \tbt\ accounts for arbitrary -effects by incorporating to the ``unperturbed'' Hamiltonian a simple additive term: -$\mathbf H \leftarrow \mathbf H+ \delta\mathbf H$ (check out Section 4.1.1 in the manual -for a more general description). I.e. nearly \emph{any} electronic structure change can be -emulated using the $\delta\mathbf H$ method. Based on the Peierls substitution, the -elements of the additive $\delta\mathbf H$ will contain the magnetic field in the form of -a phase factor. Now go through the rest of the script to get confident on how these -additive terms can be setup using \sisl\ in an efficient way. Then run \script{run.py} to -create the input \script{*.nc} files for \tbt. You should notice that one -\script{M\_*.dH.nc} file has been generated for each magnetic field (by now you -should have figured out that in our case the magnetic field have been given in the -form of reciprocal magnetic flux $1/\phi$). - -\objskip - -Now we have all ingredients to perform the transport calculations with an applied magnetic -field. Go through \script{RUN.fdf} file. Note that there are no flags which mentions the -\script{M\_*.dH.nc} files. Instead of defining the \script{TBT.dH} flag\footnote{As you - should have found in Section 4.1.1 of the \tbt\ manual.} in the file one can set the -flag on the command-line. You may find an example in \script{run.sh} on how the -command-line options are given to \tbt. - -\objskip - -Before performing the \tbt\ calculations you should realise that the calculation will -calculate the same self-energies for \emph{all} the different magnetic field calculations -(we do not have any magnetic fields in the electrodes). This redundancy is extremely heavy -and in this example the main computation time is spent on calculating the -self-energies. Search in the manual on how to reuse the self-energies by storing them -on-disk. -% -\emph{HINT}: this is an electrode setting. - - -\objskip - -Run the transmission calculations by running \script{run.sh}. -% -After all calculations are finished, you should have one directory per magnetic entry, -each one containing all the results of the respective calculation. If you plot all the -transmissions for increasing magnetic field you will find a transition from a smooth curvy -transmission curve with onset at $0\,\mathrm{eV}$ (zero magnetic field) to fully quantised -transmissions (steps) for higher magnetic fields. - -The output files contain the timings, check how much time you have saved by reusing the -self-energies from the electrodes by checking the timings in \script{TBT.out} and -\script{TBT\_M\_5.out}. If you perform $N$ calculations with the same system, how much -time will you save by reusing the self-energies? -% I save around 60 secs per calculation - - -% You can now run ‘python -% plot.py’ to plot the transmission coefficient as a function of 1/phi in comparison with -% that obtained by using KWANT for exactly the same system. If you are not yet fully -% convinced that the two curves are actually the same, try repeating the same calculation -% for 200 values of 1/phi instead of 25 (you can check that this is actually the number of -% points used to compute ‘T_kwant.txt’) HINT: edit the reciprocal_phis list in -% ‘run.py’. Such increase in resolution would indeed capture the sharp transmission steps -% resulting from KWANT. NB: the KWANT code used to produce ‘T_kwant.txt’ can be found in -% the documentation for KWANT (https://downloads.kwant-project.org/doc/kwant-paper.pdf). The -% only difference in this example is that we do not account for disorder effects. - - - -%%%%%%%%%%%%%%%%%%%%%%% -% Transiesta examples % -%%%%%%%%%%%%%%%%%%%%%%% -\newexample - -\obj Learn to run your first \ts\ calculation. This example also teaches, arguably, the -\emph{most important} principle of the NEGF scheme, i.e. the requirement that the -electrode only should couple to its nearest neighbour unit-cell. - -\objskip - -This example is, yet again, the basic orthogonal graphene unit-cell. First create the -geometries by running \script{run.py}. - -Now comes the self-consistent NEGF calculation of the system. -% -Most importantly \ts\ is a two-step calculation in addition to the final \tbt\ -calculation: -\begin{enumerate} - - \item% - Calculate the electronic structures of the bulk electrodes with periodicity along their - respective semi-infinite direction. Generally you are advised to use a high number of - $\mathbf k$-points in the transport direction ($>50$) to assert that the electronic - structure is captured adequately along this direction. - - Run \ts\ on the \script{RUN\_ELEC.fdf} input: - \begin{center} - \script{transiesta RUN\_ELEC.fdf > RUN\_ELEC.out} - \end{center} - Running \ts\ on the electrodes creates the electrode \script{*.TSHS} files which contain - the required information for the subsequent device calculation. - In this example the file \script{ELEC.TSHS} is created. - - \item% - Run the NEGF calculation of the device region. This requires the electrodes electronic - structures found in their \script{*.TSHS} files. In this case both electrodes use the - same electronic structure. - \begin{center} - \script{transiesta RUN.fdf > RUN.out} - \end{center} - Running \ts\ is ``easy'', but, ensuring that the setup and calculation is successful - requires checking the output (and TESTING!). - - Here is a short list which is a guidance for ensuring that the calculation has converged - (this list is far from complete\footnote{Even if the items are ensured, it does not mean - that the calculation is correct.}) - \begin{itemize} - \item% - Ensure that the SCF has indeed converged, \ts\ should not stop because of the maximum - allowed iterations is too small. Optionally you may use this flag - \script{SCFMustConverge T} to make \ts\ die if it does not converge. - - \item% - Ensure that the \script{dQ} column is close to $0$, below $0.01$ is preferable. - Further, it is advised that the previous couple of iterations also obey this - condition. - - \item% - Ensure that the change in Hamiltonian is below $0.005\,\mathrm{eV}$. The lower the - better. Also, this may be checked for the previous couple of iterations. - - \end{itemize} - - Carefully go through the output after these lines: -\begin{verbatim} - *************************** - * WELCOME TO TRANSIESTA * - *************************** -\end{verbatim} - and become familiar with how \ts\ output looks. - - \item% - To calculate the transmission execute \tbt\ as this: - \begin{center} - \script{tbtrans RUN.fdf > TBT.out} - \end{center} - You will notice that there are \emph{no} \script{TBT.*} keys in \script{RUN.fdf}. This - is because \tbt\ defaults to read the equivalent data from the \script{TS.*} keys. As - such one typically need not specify separate electrodes for \tbt. Note that \tbt\ will - prefer the \script{TBT.*} keys if they exist, else \tbt\ will fall back to \script{TS.*} - keys. - -\end{enumerate} - -\objskip - -An important aspect of the electrodes is that there must only be Hamiltonian elements -between nearest neighbour unit-cells along the transport direction. \ts\ has a built-in -check for this requirement. If you follow this small sequence of commands you will obtain -the error-message from \ts: -\begin{enumerate} - - \item% - Compare the electrode structures in \script{STRUCT\_ELEC.xyz} and - \script{STRUCT\_ELEC\_small.xyz}. Note that the latter is half the size of the former. - - \item% - Delete files \script{ELEC.*}. - - \item% - Adapt \script{RUN\_ELEC.fdf} to read the electrode geometry from - \script{STRUCT\_ELEC\_small.fdf} (change \script{STRUCT\_ELEC.fdf} to - \script{STRUCT\_ELEC\_small.fdf}) - - \item% - Re-run the electrode - \begin{center} - \script{transiesta RUN\_ELEC.fdf > RUN\_ELEC\_small.out} - \end{center} - - \item% - Execute \ts: - \begin{center} - \script{transiesta RUN.fdf > RUN\_small.out} - \end{center} - What is the output? - -\end{enumerate} - -Evidently \ts\ does \emph{not} allow too small electrodes as that will create an erroneous -coupling to the semi-infinite directions. Luckily this may easily be inferred in the -electrode output by looking for this keyword: \script{Internal auxiliary supercell}. The -output of \ts\ will print 3 numbers \script{ x x } which corresponds to the number -of neighbouring unit-cells the primary unit-cell connects to. The important number to -look for is the number corresponding to the semi-infinite direction. -What should this number be in order to preserve nearest-neighbour unit-cell interactions? -Say, if the semi-infinite is along the \script{} direction what should the number -\script{} be? -% answer 3 - - -% Run the first bias calculation with transiesta -\newexample - -\obj Learn to run your first \ts\ bias calculation. This example is equivalent to example -\theprevexample\ but with an applied bias\footnote{Applying a bias to a fully periodic - structure is not physical, this is only as an example.}. Use \tbt\ to calculate the -transport/current for various applied bias' by interpolating the Hamiltonian. - -\objskip - -First run \script{run.py}, then \script{transiesta RUN\_ELEC.fdf}. Now we are ready to -perform the \ts\ bias calculations. - -\objskip - -Bias calculations are very heavy as you need to perform self-consistent SCF calculations -for each bias. -% -To perform bias calculations the input options becomes more complex as one should define -the chemical potentials, the equilibrium contours for all different chemical potentials -and the bias contour. However, once these have been setup one may use the same input file -for \emph{all} bias calculations\footnote{In \ts\ versions prior to 4.1 the number of - points on the bias contour was fixed. Thus one needed to update this number for each - different bias. The number of bias contour points is now determined by an - energy-spacing.}. - -Please carefully go through \script{RUN.fdf} which now is more complex than example -\theprevexample. - -\objskip - -Performing the bias calculations is a linear process, first the zero bias ($V=0$) is -calculated, then the \ts\ density matrix is copied to the next bias ($V=0.5\,\mathrm{eV}$) -and then calculated as a \emph{restart} of \ts. Lastly, the \ts\ density matrix for -$V=0.5\,\mathrm{eV}$ is copied to the $V=1\,\mathrm{eV}$ folder and the last bias is -calculated. This scheme should \emph{always} be followed and you are recommended to use -bias-steps of $\delta V\le0.25\,\mathrm{eV}$. -% -Hence the commands to be executed are: -\begin{verbatim} - cd V0 - transiesta ../RUN.fdf > RUN.out - # Check that it has converged... - cp siesta.TSDE ../V0.5/ - cd ../V0.5 - transiesta -V 0.5:eV ../RUN.fdf > RUN.out - # Check that it has converged... - cp siesta.TSDE ../V1.0/ - cd ../V1.0 - transiesta -V 1:eV ../RUN.fdf > RUN.out - # Check that it has converged... -\end{verbatim} -In this example there are only 3 bias' points which is hardly enough to create a detailed -$IV$ curve. - -\objskip - -One may either do manual interpolation of the $IV$ points which will typically not capture -changes in the electronic structure. Certainly not with $\delta V$ being too high. In the -remainder of this example you will perform \tbt\ calculations using interpolated -Hamiltonians. This is more precise than interpolating the $IV$ curve because the -electronic structure is interpolated, rather than the final values. - -First, find the block \script{TBT.HS.Files} in \script{RUN.fdf} which contains the -relevant Hamiltonians and the bias' used for their self-consistent solution. -% -\tbt\ will now perform spline interpolation using the supplied Hamiltonians in the input -file. Also notice the block \script{TBT.Contours} and \script{TBT.Contour.IV} which is the -input for \tbt\ to \emph{only} calculate the transmission and other physical quantities in -the bias window. If one is \emph{only} interested in the $IV$ characteristics this input -is much preferred due to the higher throughput. - -So far the electronic structure is determined at 3 bias points. We will use interpolation -to calculate sufficiently approximate intermediate bias points using the spline -method. The following commands will calculate the interpolated transmission and current in -steps of $0.1\,\mathrm{eV}$: -\begin{verbatim} - for V in $(seq 0 0.1 1) ; do - d=TBT_V${V//,/.} - mkdir $d - cd $d - tbtrans -V "${V//,/.}:eV" ../RUN.fdf > TBT.out - cd ../ - done -\end{verbatim} -An additional $10$ -directories with output from \tbt. In the corresponding \script{TBT\_V*/TBT.out} files you -will find the calculated current for the applied (interpolated) bias. - - - - -% Create your own geometry for transiesta -% 1D chain. -\newexample - -\obj Learn to create input for \ts\ and run your first self-created \ts\ calculation. In -this example you should use your gathered knowledge from the previous examples (both \tbt\ -and \ts) to construct your own input for \ts. - -\objskip - -Create a 1D chain input. It will be easier to use \sisl\ to generate the geometry input -for \ts\ for both the electrode and the device (the beginning of a script may be found in -\script{run.py}). The chain should consist of carbon atoms with an inter-atomic spacing of -$1.5\,\text\AA$. Your first task is to figure out the extend of the electrode to -ensure nearest-neighbour unit-cell interactions\footnote{Example 08 highlighted this - issue.}. - -\objskip - -\emph{HINT}: You may use the shipped script \script{tselecs.sh}\footnote{This script is - also shipped with the \ts\ sources in the \script{Util/TS} folder.} to generate the -basic input for \ts, or you may copy input from the previous example. In both cases you -should edit the \script{fdf} options to conform to your system. - -Please help each other in this example! - - - -% N-electrode transiesta calculation -\newexample - -\obj Perform $N$-electrode \ts\ calculations and their intricacies. - -\objskip - -This example consists of two overlying carbon nano-wires. The main difference in this -example is the additional electrodes which requires to be defined. - -Carefully go through \script{RUN.fdf} and pay attention to the additional electrodes. Take -note of how the chemical potentials are defined and how an applied bias would affect the -system. How many electrodes are there? And how many different chemical potentials are -there? -% 4 electrodes, 2 chemical potentials. - -\objskip - -To successfully run this example you should first create the geometries (\script{run.py}), -then run both electrodes (\script{transiesta RUN\_ELEC\_X/Y.fdf}) and finally the device -system (\script{transiesta RUN.fdf}). - -\objskip - -After having runned the SCF of \ts\ you can run \tbt. By now you should have realised that -the default energy range \tbt\ uses is $-2\,\mathrm{eV}$ to $2\,\mathrm{eV}$ with setting -$E-E_F=0$ as the reference energy and a $\delta E=0.01\,\mathrm{eV}$. -% -By running \tbt\ and looking through the output you will find the interpreted energy -contour (\script{TBT.Contours} and \script{TBT.Contour.line}). Try and edit the fdf file -to calculate the transmission in the range $-16\,\mathrm{eV}$ to $20\,\mathrm{eV}$. - -\emph{HINT}: Copy paste the blocks from \tbt\ output and edit the energies. - -\objskip - -After having calculated the transmission for $V=0$ you should try and perform a SCF bias -calculation at $V=0.5\,\mathrm{eV}$ and subsequent transport of the system as in example -\theprevexample[2]. - - - -% 3 electrode calculation with buffer atoms. -\newexample - -\obj To learn how to perform $3$-electrode calculations which requires buffer -atoms. Further this example highlights the importance of manually specifying -$\mathbf k$-points for \ts\ with more than $2$ electrodes if periodicity is present. - -\objskip - -Buffer atoms in \ts\ are atoms that are \emph{not} taken into account in the SCF cycle of -\ts. Their intended use is to terminate electrodes such that the actual electrode -positions behave as bulk as possible. This helps \ts\ two-fold, 1) the initial Hamiltonian -used for the SCF cycle when entering \ts\ is more consistent with the actual device, and -2) the electrostatics are better screened in the device region. Both are \emph{very} -important when performing SCF NEGF calculations. - -\objskip - -In this example we create an STM-like structure with all-carbon atoms. A graphene flake is -suspended with a STM-chain floating above the plane. The graphene is terminated by two -electrodes. The chain consists of an electrode terminated by 2 buffer atoms. Carefully go -through \script{RUN.fdf} file and locate the block that defines the buffer -atoms\footnote{You may also search for \emph{buffer} in the manual which makes it easy to - track down.}. - -\objskip - -Another thing to note in this example is the $\mathbf k$-point sampling which is a little -more complex due to the intrinsic periodicity of the graphene (but not the -STM-chain). Hence, \ts\ cannot easily reduce the $\mathbf k$-points as in a $2$-electrode -system because there is no \emph{single} semi-infinite direction. - -\objskip - -This example is computationally demanding so do not spend time on converging the -electronic structure or the transmission. - -\objskip - -After having executed \ts\ and \tbt\ on the relevant input you should run \script{run.sh} -which will create 3 \script{atomic-DOS-*} files, one for each electrode. They contain 5 -columns, the first is the energy, the second is the Green function DOS for all graphene -atoms (normalised), the third is the spectral density of states from the electrode (from -filename: \script{*} and normalised), the fourth and fifth are the Green function DOS and -spectral DOS for the chain atoms, also normalised. -% -By plotting them you can determine the \emph{coupling} strength between the chain and the -graphene plane by comparing the splitting of the DOS. Note that: -\begin{equation} - \mathrm{DOS}_{\mathbf G} = \sum_{\mathfrak{e}} \mathrm{DOS}_{\mathbf{A}_\mathfrak{e}}, -\end{equation} -where $\mathrm{DOS}_{\mathbf G}$ and $\mathrm{DOS}_{\mathbf{A}_\mathfrak{e}}$ is the Green -function DOS and the spectral DOS from electrode $\mathfrak e$. - -\objskip - - -\section{Extra stuff to play with} - -If you have time on your hands, I highly suggest you to lookup the \sisl\ documentation at -\url{https://zerothi.github.io/sisl/bizstyle/py-modindex.html} and familiarise yourself -with the tight-binding capabilities of the module. - -In the following there is a list, randomly sorted, which suggests several ways to enhance -your skills in using \sisl, \tbt\ and \ts. -% -First skip the \emph{HARD} exercises, unless you really want to do them, then once -finished, return and make the \emph{HARD} exercises. -\begin{itemize} - \item Create 3 new geometries with semi-infinite directions in any of the 3 - lattice vectors directions - - \emph{HARD}: Do this with \ts\ as well. - - \item Create a device geometry with orthogonal lattice vectors but with two electrodes - at an angle of $30^\circ$ between them. - - \emph{HARD}: Do this with \ts\ as well. - - \item Create a device geometry with orthogonal lattice vectors but with three electrodes - at an angle of $30^\circ$ between two of them, the last you may decide where to place. - - \emph{HARD}: Do this with \ts\ as well. - - \item Create a Hall bar device with 4 and/or 6 terminals. - - \emph{HARD}: Do this with \ts\ as well. - - \item Create a Python script to extract DOS from specific atoms (hard-code the atoms as - though you were performing an analysis on your current research project) - - \item Create a Python script to extract the bond-currents from a \script{siesta.TBT.nc} - file and reduce the bond-currents to only have values above a certain value. - You may try and extract the bond-currents for individual atoms for comparison. - - \emph{HINT} you may download the \sisl\ code and look in the - \script{sisl/io/siesta/tbtrans.py} file for information. - -\end{itemize} - - -\end{document}