Developing
In order to develop within the code, the reader is encouraged to check the Modules details.
Input file choices
In this section we will describe the input file keywords.
Every valid keyword will use “camel” syntax and will have
an = sign right next to it. For example, the following
is a valid keyword syntax JobName= MyJob. Comments need
to have a # (hash) sign right nex to the phrase we want
to comment. Example comment could be something like:
#My comment.
JobName=
This variable will indicate the name of the job we are sunning.
It is just a tag to distinguish different outputs.
As we mentioned before and example use should be: JobName= MyJob
Verbose=
Controls the verbosity level of the output. If set to 0 no
output is printed out. If set to 1, only basic messages of
the current execution point of the code will be printed.
If set to 2, information about basic quantities are also
printed. If set to 3, all relevant possible info is printed.
CoordsOutFile=
This will store the name of the output coordinates files. Basically
if CoordsOutFile= coords two output file will be created: coords.xyz
and coords.pdb.
PrintCml=
By setiing PrintCml= T will also print
create coords.cml which can be read by avogadro. In order to have
this option working one needs to install [openbabel]
In order to read a cml file one needs to have [avogadro]
installed. On gnu linux:
sudo apt-get avogadro
sudo apt-get obabel
ClusterType=
This variable will define the type of shape/cluster/slab we
want to construct. There are many options including
Bulk, Planes, Bravais and Spheroid. We will explain
all these in the following section.
ClusterType= Bulk
This will just cut a “piece of bulk” by indicating how many lattice point we want. For example, the following will create a bulk/lattice with 50 points on each a,b,c direction:
ClusterType= Bulk
LatticePoints= 50
The following, instead, will create a bulk/lattice with 100 lattice points in the x direction and 50 on the rest:
LatticePointsX1= 1
LatticePointsX2= 100
LatticePointsY1= 1
LatticePointsY2= 50
LatticePointsZ1= 1
LatticePointsZ2= 50
ClusterType= Spheroid
This will produce a “spheroid” center at the origin. And example follows:
ClusterType= Spheroid
LatticePoints= 50 #This is necessary to construct the initial bulk
AAxis= 1.0 #Radius in direction x
BAxis= 2.0 #Radius in direction y
CAxis= 2.0 #Radius in direction z
See section regular to see another example.
ClusterType= Planes
This will cut a shape using Miller indices. This is an important tool to construct a slab to study a surface. The cut does not guarantee periodicity. In order to have a periodic structure different plane boundaries need to be tried and the structures needs to be checked using a molecular visualizer. An example is given as follows:
NumberOfPlanes= 6
Planes[
0 1 1 2.5
0 -1 -1 1.5
0 -1 1 4.5
0 1 -1 3.5
1 0 0 4.5
-1 0 0 3.5
]
Three first number on each row indicate the Miller indices. The fourth number indicates how many Miller planes from the origin will be cut out. If the number of planes is 6, then the system tries to get the slab periodicity vectors since if the Miller planes are orthogonal to each other, the shape will be a “Parallelepiped”. If instead the number different than 6, then the periodicity vectors are given by the “Boundaries” of the minimal box that contains the shape.
CenterAtBox=
If set to T, the shape will be centered at the box (the periodicity vectors
of the shape/cluster)
Reorient=
If set to T this, will reorient the shape, such that vector “a” will
be aligned with the x direction. This is important when making slabs
needed to study a surface.
AtomType=
This will sed the atom symbol if the lattice basis is not read from file.
TypeOfLattice=
This will set the Lattice unit cell. if set to
SC or FCC either a simple cubic or face centered cubinc lattice is built provided
we set LatticeConstanta= to the lattice constant
value. For general unit cell we can set TypeOfLattice= Triclinic, and provide
the lattice parameters as in the following example:
LatticeConstanta= 6.5329400000000000
LatticeConstantb= 11.022100000000000
LatticeConstantc= 7.3568800000000003
LatticeAngleAlpha= 90.000000000000000
LatticeAngleBeta= 102.65200000000000
LatticeAngleGamma= 90.000000000000000
RandomSeed=
To generate random positions in the lattice. This will
need to be used in conjunction with RCoeff= which controls the degree
of deviation from the lattice positions.
PrimitiveFormat=
This will indicate if the lattice needs to be constructed out
of a,b,c and angle parameter or primitive lattice vectors. If
PrimitiveFormat= Angles (default), then the lattice parameters
will need to be passed as in the following example:
LatticeConstanta= 6.5329400000000000
LatticeConstantb= 11.022100000000000
LatticeConstantc= 7.3568800000000003
LatticeAngleAlpha= 90.000000000000000
LatticeAngleBeta= 102.65200000000000
LatticeAngleGamma= 90.000000000000000
If instead, PrimitiveFormat= Vectors then the primitive vectors
will need to be passed as in the following example:
LatticeVectors[
2.0 0 0 #First lattice vector
0.0 2.0 0
0.0 2.0 2.0
]
UseLatticeBase=
This is an important tool that allows us to “dress” every lattice point
with a basis of choice. The basis is defined to be the minimal set of
coordinates and atom types needed to define a crystal system lattice point.
The basis here will be red from file by providing the latticebase
LatticeBaseFile= wich will contain our atom types and coordinates.
If ReadLatticeFromFile= is set to T, then, the lattice parameters will
be read from the lattice basis file. If is set to F, the the lattice
parameters will need to be passed as explaines before.
Another important keyword is the BaseFormat=. If this is set to abc, then
the basis coordinates stored in the file are assumed to be given in fractional
coordinates of the lattice parameters. If is set to xyz, the it will be assumed
to be given in Cartesian coordinates.
SymmetryOperations=
If the basis needs to be constricted from symmetry operation, then one needs to pass all these operation to the code as follows:
SymmetryOperations= T
NumberOfOperations= 4
Translations[
0 0 0 0.0
1 1 1 0.5
1 1 0 1.0
-0.5 1.5 0.5 1.0
]
Symmetries[
0 0 0
-1 1 -1
-1 -1 -1
1 -1 1
]
The first block indices the “translations” within the unit cell. The first three
rows indicating the directions of the translation and the fourth indicating the intensity.
The second block indicates the symmetry of operations. For example, if an operation is indicated
as \((-x + 1/2, -y, -z)\) then there will be a translation 0.5 0 0 1.0 and a symmetry -1 0 0:
NumberOfOperations= 0
MaxCoordination= 1
NumberOfIterations= 1
Truncation= 1.0000000000000000E+040
RCut= 20.000000000000000
RTol= 1.0000000000000000E-002
CutAfterAddingBase=F
SeedFile=seed.pdb