Tutorial 01: nanotube

First of all, let’s import the NanoTCAD ViDES module

from NanoTCAD_ViDES import *

At this point, we have to create the nanotube. Let’s say for example we want to 
study a (13,0) CNT, 2 nm long. We can do this by typing the following command:

CNT=nanotube(13,2)

We can now compute for example the atoms coordinates of the nanotube, by applying the 
method atoms_coordinates() to the instance CNT of the class nanotube:

When instancing the class nanotube, the method atoms_coordinates() is called and that the atoms coordinates of the nanotube are computed and stored in CNT.x, CNT.y and CNT.z:

Equivalently one could have typed.
CNT.atoms_coordinates()

In partucular, the i-th C  atom of the nanotubes have the coordinates

CNT.x[i], CNT.y[i] and CNT.z[i]

Please note that the z-axis is aligned with the CNT axis, and that the smallest z-coordinate is equal to 0.
Such command is not important for the computation of the free charge and the transmission coefficient
of the nanotube, but it is necessary when defining the grid to be used in the self-consistent solution of the NEGF
and of the Poisson equations, as it will be explained in the grid and in the self-consistent solution scheme tutorials.

In order to compute the free charge and the transmission coefficient within the real space approach, it is sufficient to run the command
CNT.charge_T()
If not specified, the potential in correspondence of each C atom is imposed to zero. Otherwise, the electrostatic potential can be imposed, by varying the CNT.Phi array.
The energy and the transmission coefficient are stored in the arrays CNT.E and CNT.T
If matplotlib module is install, the transmission coefficient can be plotted by means of the following command:
plot(CNT.E,CNT.T)
show()
Below it is plotted the transmission coefficient as it appears once run the plot command.
Transmission coefficient as a function of energy for a (13,0) CNT
If matplotlib is not installed, one can save the array in a file (e.g. Tn) and plot for example with gnuplot, using the numpy savetxt command.
a=[CNT.E,CNT.T]
savetxt(“Tn”,transpose(a))
The upper and the lower limit for the energy, can be specified by the user, changing the attributes Eupper and Elower of the instance CNT. If the transmission coefficient wants to be computed in the energy interval [-1, 2] eV,
then the user has to type:
CNT.Eupper=2;
CNT.Elower=-1;
If not specified, Eupper and Elower are automatically computed.
In order to solve the NEGF problem within the mode space approach, using for example 4 modes, one has to specify:
CNT.Nmodes=4;
CNT.mode_charge_T();
As stated above, the electrostatic potential along the CNT can be specified through the CNT.Phi array, whose length is equal to n*Nc
Let’s say that we want to impose a constant potential equal to 2 eV in the whole CNT. This can be accomplished in this way:
CNT.Phi=-2*ones(CNT.n*CNT.Nc)
Please note that the electrostatic potential is the opposite of the potential energy.
The computed charge is then stored in CNT.charge array. In particular, the i-th C atoms has the free charge equal to CNT.charge[i]

Comments are closed.