You are on page 1of 27

Nanocut

Release 12.12

B. Aradi, F. Uekermann, S. Fiedel

December 04, 2012


Contents

1 What is Nanocut? 1

2 Installation 3
2.1 Download . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 Install . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

3 Invoking the program 5


3.1 Command line options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

4 Configuration file 7
4.1 Geometry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.2 Periodicity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.3 Cutting bodies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

5 Examples 13
5.1 Clusters (0D) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
5.2 Nanowires (1D) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5.3 Slabs (2D) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
5.4 Supercells (3D) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

6 License 23

i
ii
Chapter 1

What is Nanocut?

Nanocut is a program designed to cut out various objects from three dimensional crystal structures. It is aimed to
be helpful when creating geometry input for atomistic simulations. Currently it can create following objects:
• Spherical cluster
• Polyhedral cluster
• Cylindrical cluster
• Spherical wire (1D periodic)
• Polyhedral wire (1D periodic)
• Plain slab (2D periodic)
• Supercells (3D periodic)
The program is available under the 2-clause BSD license (see License (page 23)). It is an open source project,
so feel free to join it; especially if you think that some additional features are needed or something could be
implemented in a more user friendly way. The project is currently hosted under
http://bitbucket.org/aradi/nanocut
If you find the program useful, please recommend it to others who may be also interested in using it.

1
Nanocut, Release 12.12

2 Chapter 1. What is Nanocut?


Chapter 2

Installation

2.1 Download

The latest version of Nanocut can be downloaded from http://bitbucket.org/aradi/nanocut/.

2.2 Install

Nanocut is written in Python3 and uses the great NumPy package. In order to install and run it, you need therefore:
• Python version 3.2 or later
• NumPy version 1.6.2 or later
You can install the program using the standard Python package installation procedure. If you want to install
Nanocut to the standard python package location (you may need root rights for that), you can issue:
python3 setup.py install

in the root directory of Nanocut. Otherwise, you can specify a location prefix. For example to install it somewhere
in your HOME-directory:
python3 setup.py install --prefix ~/opt/nanocut

In this case make sure, your PYTHONPATH environment variable contains the appropriate site-packages
folder with the Nanocut packages. When using the BASH shell, you should issue:
export PYTHONPATH=$PYTHONPATH:~/opt/nanocut/lib/python3.2/site-packages

provided you’re using Python version 3.2. The Nanocut executable (nanocut) will be placed into the diretory
~/opt/nanocut/bin.
You can check your installation by invoking Nanocut. Issuing:
~/opt/nanocut/bin/nanocut -h

should give you a short summary about the command line options of the program. If you get error messages
about missing modules instead, make sure you use the right version of Python and NumPy and you set up your
environment as explained above.

3
Nanocut, Release 12.12

4 Chapter 2. Installation
Chapter 3

Invoking the program

The behaviour of Nanocut is controlled via a few command line options and through specifications in a configu-
ration file. Latter is described in the section Configuration file (page 7).
You can get a short summary of the command line options by invoking the program with the -h or --help
option:
nanocut -h

The usual way of invoking Nanocut is to pass it the name of the configuration file and the name of the file, which
the resulting structure should be stored in:
nanocut mycut.ini mycut.xyz

If your resulting structure is periodic, you may want to store the lattice vectors in a separate file (instead in the
xyz-file as comment line). This can be achieved by specifying also the name of a lattice vector file on the command
line, e.g.:
nanocut mycut.ini mycut.xyz mycut.latvecs

3.1 Command line options

-a, --append Append the resulting structure to the result file instead of overwriting it.
-g, --gen-format Creates the result file in GEN format (suitable for the DFTB+ program) instead of XYZ.
-h, --help Prints a short help about the usage of the program and exits.
-o, --orthogonal-latvecs As most programs expect three dimensional periodic structures as input,
Nanocut allows you to extend the periodicity of your resulting 0D, 1D or 2D structure to 3D using this
option. You have to specify the length of the additional lattice vectors.
For example after executing
nanocut -o 30 mycut.ini mycut.xyz mycut.latvecs

you would obtain in mycut.latvecs 3 lattice vectors. The lattice vectors which are not determined by the
inherent translation vector(s) of your structure will be orthogonal to the inherent ones and have the specified
length of 30 Angstrom.
-v, --verbosity Sets the verbosity level of the program. Currently the values 0 (no output except error
messages) and 1 (normal output, default) are allowed.
--version Prints the version number of the program and exits.

5
Nanocut, Release 12.12

6 Chapter 3. Invoking the program


Chapter 4

Configuration file

The configuration file uses the INI-format. In the configuration file you tell Nanocut
• the structure of the original bulk 3D crystal,
• the periodicity of the resulting object,
• the shape of the resulting object.
Each of them corresponds to a section in the file with additional options within. For example, in order to cut out a
spherical diamond cluster with a radius of 10 Angstrom, the configuration file would look as follows:
[geometry]
# Diamond lattice vectors in Angstrom
lattice_vectors:
0.000 1.790 1.790
1.790 0.000 1.790
1.790 1.790 0.000

basis:
C 0.0 0.0 0.0
C 0.25 0.25 0.25

[periodicity]
period_type: 0D

[sphere:1]
radius: 10

Please note, that option values going over more than one line require that the continuation lines are indented by at
least one whitespace character (like for the options lattice_vectors and basis above). Lines starting with hashmark
(#) are treated as comments.
Below you find the detailed description of all the options. For complete examples see the chapter Examples
(page 13).

4.1 Geometry

The [geometry] section contains all information regarding the crystal structure. Following options should be
specified:
lattice_vectors Defines the three lattice vectors of the crystal structure in Cartesian coordinates in Angstrom units.
For example the diamond fcc lattice would look like:
lattice_vectors:
0.000 1.785 1.785
1.785 0.000 1.785
1.785 1.785 0.000

basis Chemical symbol of each basis atom followed by its coordinates. Coordinates are interpreted as fractional
coordinates, unless specified differently in the option basis_coordsys.
Again taking the diamond unit cell as example, you would have to use:

7
Nanocut, Release 12.12

basis:
C 0.00 0.00 0.00
C 0.25 0.25 0.25

basis_coordsys (optional) Defines the coordinate system of the basis. Possible values are lattice (fractional
coordinates) and cartesian (Cartesian coordinates in Angstrom) with lattice being default.
To indicate that coordinates in the basis section are Cartesian coordinates in Angstrom (instead of fractional
coordinates), you would have to write:
basis_coordsys: cartesian

shift_vector (optional) It shifts the coordinates of the basis atoms by the given amount. You can use it to create
structures with a different origin as the one you would obtain based on the specified coordinates. It is
specified in fractional coordinates, unless set differently in shift_vector_coordsys.
If you wanted the diamond lattice from the example above being centered around a tetrahedral interstitial
site (instead of the atom in the origin), you could issue:
shift_vector: 0.25 0.25 0.25

shift_vector_coordsys (optional) Coordinate system of the shift vector: lattice (default) or cartesian.
bravais_cell (optional) Specifies the conventional Bravais cell as linear combination of the primitve lattice vec-
tors (3x3 integers). If set, the axis specifications in the periodicity section and any Miller indices in the input
file will interpreted with respect to the conventional Bravais cell.
The cubic Bravais cell of diamond would require the input:
bravais_cell:
-1 1 1
1 -1 1
1 1 -1

You can use the superlattice option in the periodicity section to find out the transformation matrix for the
Bravais cell (see Periodicity (page 8)).

4.2 Periodicity

Structures with periodicity in one or two dimensions require the [periodicity] section defining the type of period-
icity and the axis or axes of the translations. Following options can be specified:
period_type Defines the number of directions in which the structure is periodic. Possible values are 0D, 1D, 2D
or 3D. Specifying 0D is equivalent to leaving out the whole section.
axis (mandatory for 1D, optional for 2D and 3D) Defines the axis/axes alongside which the supercell is peri-
odic for the 1D, 2D and 3D cases. You must specifiy one vector (3 elements) for 1D, two vectors (6
elements) for 2D and three vectors (9 elements) for 3D, respectively. Depending on the settings in the
[geometry] section (Geometry (page 7)), the numbers are interpreted as fractional coordinates of either
the primitive lattice or the conventional Bravais lattice. The numbers must be integers. For 2D and 3D
periodicity you can alternatively use the keywords miller_indices or superlattice to specify the periodicity.
A nanowire along the 001 direction can be specified as:
[periodicity]
period_type: 1D
axis: 0 0 1

A slab in the plane of the vectors 100 and 010 can be specified as:
[periodicity]
period_type: 2D
axis:

8 Chapter 4. Configuration file


Nanocut, Release 12.12

1 0 0
0 1 0

A possible 3D supercell definition could look like:


[periodicity]
period_type: 3D
axis:
-1 1 1
1 -1 1
1 1 -1

axis_repetition (optional) Integer scaling factors for the translational vectors. Nanocut creates per default the
smallest possible unit cell along the specified periodicity axes, which can be repeated by using this option.
It requires one (1D), two (2D) or three (3D) integer numbers. Default value is one for all axis (no enlargment
of the cell).
In order to enlarge a 3D supercell by a factor of 2 along every direction, you would have to enter:
axis_repetition: 2 2 2

miller_indices (optional, only for 2D) In the case of 2D periodicity, you can specify the Miller indices of the
slab plane with this keyword (instead of specfying two axis vectors with the axis keyword). It needs 3
integer numbers. The program will create the shortes possible unit cell on the surface, which you can
enlarge using the axis_repetition keyword if needed. Depending on the settings in the [geometry] section
(Geometry (page 7)), the numbers are interpreted with respect to the primitive lattice or the conventional
Bravais lattice.
The following example shows the input for a 211 surface slab:
[periodicity]
miller_indices: 2 1 1

superlattice (optional, only for 3D) Allows to specify the Cartesian coordinates of a superlattice (instead of spec-
ifying the relative coordinates with the axis keyword). It needs 9 real numbers (components of the three
superlattice vectors). Nanocut will try to build an integer linear combination of the lattice vectors of the
primitive lattice (or the Bravais lattice, if specified) to create a superlattice similar to the specified one. The
absolute sizes of the superlattice vectors are irrelevant, but their relative sizes and their angles must yield a
lattice which is compatible with the original one. Nanocut will create the smallest possible 3D cell, which
can be enlarged using the axis_repetition keyword if necessary.
For example, in order to search for a cubic supercell for a given lattice, you should specify:
[periodicity]
superlattice:
1.0 0.0 0.0
0.0 1.0 0.0
0.0 0.0 1.0

4.3 Cutting bodies

The configuration file can contain an arbitrary number of sections defining bodies. Each body section is opened
by [BODY: NAME] where BODY defines the body’s type and NAME is an unique name to distinguish different
bodies with equal types. The bodies are cut from the crystal in the order they appear in the configuration file.
Depending on their flag, they are added to or removed from the result of the previous cut. Trivially, the first cut
should be additive.
Below you find the individual specification for each body. All of them support the following options:
shift_vector (optional) Shifts the defined body with the given vector.
To shift the origin of the cutting body by 1 Angstrom along the z-axis, you should specify:

4.3. Cutting bodies 9


Nanocut, Release 12.12

shift_vector: 0.0 0.0 1.0


shift_vector_coordsys: cartesian

shift_vector_coordsys (optional) Coordinate system of the shift vector. Values lattice (default) and
cartesian can be used to interprete the components of shift_vector as fractional or Cartesian coordi-
nates,
additive (optional) Specifies whether the atoms inside the given body should be added to or subtracted from the
previous structure (default: true).
In order to subtract a given body from the previous results, specify:
additive: false

4.3.1 Sphere

Specified as [sphere: NAME] with following options:


radius Radius of the sphere.
To cut a sphere with a radius of 10 Angstrom, enter:
[sphere: 1]
radius = 10

4.3.2 Cylinder

Specified as [cylinder: NAME]. It creates a body with circular base and top areas being orthogonal to the difference
vector of their centers. The circumference of the circles at the top and the bottom are connected by the smallest
lateral area possible. As the radius of the circles can be different, you can also create truncated cones.
point1, point2 Position vectors to the center of the first and second circular area.
point1_coordsys, point2_coordsys (optional) Coordinate system for the position vectors: lattice (default) or
cartesian.
radius1, radius2 Radius of the circular areas.
Example for a truncated cone along the 111 Cartesian direction:
[cylinder: 1]
point1: 0 0 0
point2: 10 10 10
point2_coordsys: cartesian
radius1: 5
radius2: 9

4.3.3 Polyhedron

Specified as [polyhedron: NAME] for a convex polyhedron defined by its delimiting planes. Planes can be defined
by their Miller indices or by their normal vectors.
planes_miller Miller indices of the delimiting planes (except those defined using normal vectors) followed by
their distance from the origin. Depending on the settings in the [geometry] section, the Miller indices are
interpreted with respect to the primitive lattice or the Bravais lattice.
planes_normal Orthogonal vectors for each plane (except those defined using Miller indices) followed by their
distance from the origin. The vectors do not need to be normalized.
planes_normal_coordsys Coordinate system for the normal vectors of the planes: lattice (default) or
cartesian.

10 Chapter 4. Configuration file


Nanocut, Release 12.12

Example for an octahedron defined via the Miller indices of eight planes, each of them being displaced by 5
Angstrom from the origin:
[polyhedron: 1]
planes_miller:
1 1 1 5
-1 1 1 5
1 -1 1 5
-1 -1 1 5
1 1 -1 5
-1 1 -1 5
1 -1 -1 5
-1 -1 -1 5

4.3.4 Periodic cylinder (1D)

The section [periodic_1D_cylinder: NAME] specifies a supercell of an infinitely long cylinder with a circular base
area. The base area’s center is the origin and its normal vector is parallel to the axis specified in the [periodicity]
section.
radius Cylinder radius.
A cylindrical nanowire with a radius of 5 Angstrom can be defined as:
[periodic_1D_cylinder:1]
radius: 5

4.3.5 Periodic convex prism (1D)

Using [periodic_1D_prism: NAME] one specifies an infinitely long prism with a convex polygon as base area.
The prism is defined by its lateral planes. A plane can be defined using it’s Miller indices or it’s normal vector.
The planes must be parallel to the periodicity axis specified in the [periodicity] section.
planes_miller Miller indices of the delimiting planes (except those defined using normal vectors) followed by
their distance from the origin. Depending on the settings in the [geometry] section, the Miller indices are
interpreted with respect to the primitive lattice or the Bravais lattice.
planes_normal Orthogonal vector to each plane (except those defined using Miller indices) followed by the dis-
tance of the plane from the origin.
planes_normal_coordsys Coordinate system for the normal vectors of the planes: lattice (default) or
cartesian.
Example for a 001 wire with quadratic cross section:
[periodic_1D_prism:1]
planes_miller:
1 1 0 10.0
1 -1 0 10.0
-1 1 0 10.0
-1 -1 0 10.0

4.3.6 Slab (2D)

The [periodic_2D_plane:NAME] section specifies a slab delimited by two parallel planes and being periodic along
the planes. The upper and lower limiting planes are equidistant from the origin. The direction of the limiting planes
are automatically derived from the periodicity specified in the [periodicity] section.
thickness Thickness of the slab.
Sample input for a slab with thickness of 20 Angstrom:

4.3. Cutting bodies 11


Nanocut, Release 12.12

[periodic_2D_plane:slab]
thickness: 20

4.3.7 Supercell (3D)

The [periodic_3D_supercell:NAME] section specifies a supercell built from the unit cell of the original crystal. It
does not take any further options, everything is derived from the settings in the [periodicity] section:
[periodic_3D_supercell:mycell]

12 Chapter 4. Configuration file


Chapter 5

Examples

Here you find some examples demonstrating Nanocut’s capablities. You have at least one example for every
geometrical body. The molecules had been visualized and rendered using Jmol and Povray.

5.1 Clusters (0D)

5.1.1 Octahedral diamond cluster

A nice octahedral shaped diamond cluster for your quantum bit project:
[geometry]
lattice_vectors:
0.00000000 1.78500000 1.78500000
1.78500000 0.00000000 1.78500000
1.78500000 1.78500000 0.00000000

basis:
C 0.00 0.00 0.00
C 0.25 0.25 0.25

basis_coordsys: lattice

[polyhedron: 1]
planes_normal:
1 1 1 5
-1 1 1 5
1 -1 1 5
-1 -1 1 5
1 1 -1 5
-1 1 -1 5
1 -1 -1 5
-1 -1 -1 5

planes_normal_coordsys: cartesian

You should obtain a 165 atom cluster as in Figure Octahedral diamond cluster (page 14).

5.1.2 Spherical diamond cluster

The same as above but creating a spherical diamond nanoparticle with the a radius of 2 nm:
[geometry]
lattice_vectors:
0.00000000 1.78500000 1.78500000
1.78500000 0.00000000 1.78500000
1.78500000 1.78500000 0.00000000

basis:
C 0.00 0.00 0.00

13
Nanocut, Release 12.12

Figure 5.1: Octahedral diamond cluster

C 0.25 0.25 0.25

basis_coordsys: lattice

[sphere: 1]
radius: 20

The resulting cluster is rather big, but looks indeed spherical (see Figure Spherical diamond cluster (page 14)).

Figure 5.2: Spherical diamond cluster

The cluster you obtain this way is atom centered. If you wanted a Td-site centered sphere instead (its center being
in the origin), you should shift the basis atom coordinates by the appropriate amount using the shift_vector
option in the [geometry] section:
[geometry]
lattice_vectors:
0.00000000 1.78500000 1.78500000
1.78500000 0.00000000 1.78500000
1.78500000 1.78500000 0.00000000

basis:
C 0.00 0.00 0.00

14 Chapter 5. Examples
Nanocut, Release 12.12

C 0.25 0.25 0.25


basis_coordsys: lattice

shift_vector: 0.25 0.25 0.25


shift_vector_coordsys: lattice

[sphere: 1]
radius: 10

This results in a spherical, Td-centered cluster as shown in Figure Spherical Td-centered diamond cluster (page 15)
(the cluster radius had been decreased to 10 Angstrom).

Figure 5.3: Spherical Td-centered diamond cluster

5.1.3 Cylindrical silicon carbide cluster

It is questionable, whether a conical 3C-SiC along the [111] direction is a meaningful atomistic object, but Nanocut
can definitely produce such one, if requested:
[geometry]
lattice_vectors:
0.00000000 2.18000000 2.1800000
2.18000000 0.00000000 2.18000000
2.18000000 2.18000000 0.00000000

basis:
Si 0.00 0.00 0.00
C 0.25 0.25 0.25

basis_coordsys: lattice

[cylinder: 1]
point1 = 0 0 0
point2 = 10 10 10
point2_coordsys = cartesian
radius1 = 5
radius2 = 9

This would then look something like Figure 3C-SiC truncated cone (page 16).

5.1. Clusters (0D) 15


Nanocut, Release 12.12

Figure 5.4: 3C-SiC truncated cone

5.2 Nanowires (1D)

5.2.1 Cylindrical sodium chloride [111] wire

An input for a salty wire might look as


[geometry]
lattice_vectors:
0 2.83 2.83
2.83 0 2.83
2.83 2.83 0

basis:
Na 0 0 0
Cl 0.5 -0.5 0.5

[periodicity]
period_type: 1D
axis: 4 4 4

[periodic_1D_cylinder:1]
radius: 10

and should result in the structure in Figure NaCl wire (page 17).

Every geometrical object allows the flag additive, which you can set to false in order to substract something
from the previous structure. In the case of the NaCl wire, one can use that to create a wire being empty in the
middle:
[geometry]
lattice_vectors:
0 2.83 2.83
2.83 0 2.83
2.83 2.83 0

basis:
Na 0 0 0
Cl 0.5 -0.5 0.5

[periodicity]
period_type: 1D

16 Chapter 5. Examples
Nanocut, Release 12.12

Figure 5.5: NaCl wire

axis: 4 4 4

[periodic_1D_cylinder:1]
radius: 10

# Second cylinder is subtracted from the previous one


[periodic_1D_cylinder:2]
additive: false
radius: 5

With this input you should obtain a nanowire with an empty core shell as in Figure NaCl wire with an empty core
(page 17).

Figure 5.6: NaCl wire with an empty core

5.2.2 Rectangular rutile [001] wire

The input below should create the primitve cell of a rutile [001] nanowire:
[geometry]
lattice_vectors:
4.67700000 0.00000000 0.00000000

5.2. Nanowires (1D) 17


Nanocut, Release 12.12

0.00000000 4.67700000 0.00000000


0.00000000 0.00000000 2.99900000

basis:
Ti -0.5 0. 0.
Ti 0. 0.5 0.5
O -0.1986603 0.3013397 0.
O 0.1986603 0.6986603 0.
O 0.3013397 0.1986603 0.5
O -0.3013397 0.8013397 0.5
basis_coordsys: lattice

[periodicity]
period_type: 1D
axis: 0 0 1

[periodic_1D_prism: 1]
planes_normal:
1 1 0 16.5
1 -1 0 16.5
-1 1 0 16.5
-1 -1 0 16.5
planes_normal_coordsys: cartesian

The resuling structure should look something like Figure Rutile nanowire (page 18).

Figure 5.7: Rutile nanowire

5.3 Slabs (2D)

5.3.1 Diamond (100) surface

Creating a diamond slab with a thickness of 12 atoms and a 4x4 surface supercell cell would require an input like
this:
[geometry]
lattice_vectors:
0.00000000 1.78500000 1.78500000
1.78500000 0.00000000 1.78500000
1.78500000 1.78500000 0.00000000

18 Chapter 5. Examples
Nanocut, Release 12.12

basis:
C 0.00 0.00 0.00
C 0.25 0.25 0.25

basis_coordsys: lattice

[periodicity]
period_type: 2D
axis:
0 0 1
1 -1 0
axis_repetition: 4 4

[periodic_2D_plane:slab]
thickness: 12

Please note, that Nanocut always gives the smallest possible unit cell, so that the axis_repetition opion had
to be used to enlarge it. As result, you would obtain the slab in Figure Diamond slab (page 19).

Figure 5.8: Diamond slab

5.3.2 Diamond (211) surface

An alternative way of determining the surface plane of a slab is to specify its Miller indices. Since the Miller
indices are usually given with respect to the conventional Bravais lattice, you should consider the usage of the
bravais_cell option in the [geometry] section for non-conventional lattices. (The appropriate transfor-
mation matrix can be determined via Nanocut, see the section Automatic Bravais cell search (page 21)). For the
211 diamond surface the input would look as the following:
[geometry]
lattice_vectors:
0.000 1.785 1.785
1.785 0.000 1.785
1.785 1.785 0.000

basis:
C 0.00 0.00 0.00
C 0.25 0.25 0.25

bravais_cell:
-1 1 1
1 -1 1

5.3. Slabs (2D) 19


Nanocut, Release 12.12

1 1 -1

[periodicity]
period_type: 2D
miller_indices: 2 1 1

[periodic_2D_plane:slab]
thickness: 10

The resuling structure should look something like Figure Diamond 211 surface (page 20).

Figure 5.9: Diamond 211 surface

5.4 Supercells (3D)

5.4.1 3C-SiC, 64 atom cubic supercell

In order to build a 64 atom cubic supercell of 3C-SiC, the lattice vectors of the base lattice must be combined to
yield a cubic superstructure of the right size:
[geometry]
lattice_vectors:
0.00000000 2.18000000 2.1800000
2.18000000 0.00000000 2.18000000
2.18000000 2.18000000 0.00000000

basis:
Si 0.00 0.00 0.00
C 0.25 0.25 0.25

[periodicity]
period_type: 3D
axis:
-1 1 1
1 -1 1
1 1 -1
axis_repetition: 2 2 2

[periodic_3D_supercell:1]
shift_vector: -0.5 -0.5 -0.5

20 Chapter 5. Examples
Nanocut, Release 12.12

In the input above, the resulting supercell had been shifted by the half of the diagonal of the orginal unit cell, to
make the supercell look more compact (see Figure Cubic 3C-SiC supercell (page 21)).

Figure 5.10: Cubic 3C-SiC supercell

5.4.2 Automatic Bravais cell search

Nanocut can help you to find the transformation matrix, which creates the Bravais lattice from the primitive lattice.
For example, in order to get the cubic conventional cell of SiC, you should enter the following configuration file:
[geometry]
lattice_vectors:
0.00000000 2.18000000 2.1800000
2.18000000 0.00000000 2.18000000
2.18000000 2.18000000 0.00000000

basis:
Si 0.00 0.00 0.00
C 0.25 0.25 0.25

[periodicity]
period_type: 3D
superlattice:
1.0 0.0 0.0
0.0 1.0 0.0
0.0 0.0 1.0

[periodic_3D_supercell:bravais]

In the output of Nanocut you should see the transformation matrix:


Axis with respect to primitive lattice:
-1 1 1
1 -1 1
1 1 -1

Additionally the resulting geometry file would contain the simple cubic 8 atom unit cell.

5.4. Supercells (3D) 21


Nanocut, Release 12.12

22 Chapter 5. Examples
Chapter 6

License

Copyright (c) 2009, Florian Uekerman, Sebastian Fiedel, Bálint Aradi


Copyright (c) 2010-2012, Bálint Aradi
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
following conditions are met:
• Redistributions of source code must retain the above copyright notice, this list of conditions and the follow-
ing disclaimer.
• Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the
following disclaimer in the documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WAR-
RANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DI-
RECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUD-
ING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.

23