This Document contains keywords, examples and contact information.
The code is organised in a series of modules, each module has a different
activity.
Passes control to the ‘Metadise Input Controller’ where the coordinates and
potential are input along with information on the crystal regions for; dislocation,
interface or surface.
This parameter is assumed and hence should not be typed explicitly at the top
of the file. It can be added before stop to signify the beginning of another
Metadise run if the wish is to run in series.
Evaluates the elastic constants, bulk and basis strains to check that the
structure given to metadise is pre-minimised.
generates a rotated unit cell from the data supplied be the Metadise Input Controller.
If unsure which are non-dipolar terminations this will return a code for each
of the non-dipolar cuts.
automatically performs multiple calls to stackgen for a range of Miller
Indices.
suggests possible Miller Index to generate specific steps.
performs a minimisation of the simulation cell, using either Newton-Raphson or
conjugate gradients.
allows for flexible boundaries which is important for edge dislocations.
scans a molecule or interface over a surface to generate an energy surface.
Includes options for minimising at each grid point.
calls the Chaos Input Controller to allow for the simulation of point defects
at surfaces. (Three body bonds not yet implemented).
Calls the Gem input controller to allow the production of nano crystals
Calls the wrap input controller to allow the production of nano tubes
As the name implies, this causes the program to stop and produces a XXXX####fin.res
file which contains the coordinates and can be used for restarting.
If used before the first occurence of start then is used to halt the calculation after the start keyword and any lines following start will be ignored.
The ‘meta’ parameter is assumed and
hence does not need to typed explicitly because the first action is to pass control
to the Metadise Input Controller. This keyword is used to return the program
back to the Metadise Input Controller. For example, if the same dataset is to
be used to run with different parameters or if stackgen is
used to generate a number of possible surfaces and each needs to be run. The
keyword: 'Start' causes the program to leave the Metadise Controller and
run the program.
Essential:
Simulation Control
Crystal structure
requires crystal and/or restart structure
either latt and basis or cell, space
and frac in Metadise style input (which is itself based on CASCADE and
THBREL)
OR VASP (POSCAR) or CASTEP (geom. File)
OR DL_POLY (CONFIG)
Potential Model
requires potential model information if intending to calculate any
properties
poten
OR if simply displaying, expanding, rotating structure can use
nopoten
Control Keyword
requires control keywords
finishing with Stop
Back to top
Simulation Control
Cuto
The default is cutoff
1.0 15.0 0.7 60.0
Title
ends
as the name implies, this is for adding title information.
Note: if occasional comments are required elsewhere in the text, start the line with #
stack
directs the program that the coordinates are rotated into the appropriate orientation. Only to be used if the x component of the first two lattice vectors are zero.
Print following by different keywords and print value
e.g Print reg1 1 reg2 1 cart 1 dlpoly 1
possible options include:
· reg1
·
valid options are 0 do not print region 1
1 print region 1 in output
· reg2
·
valid options are 0 do not print region 2
1 print region 2 in output
2 include region 2 in output files (car, pdb etc)
· mini
·
valid options are 0 do not print gd1 and alpha
1 print gd1 but no alpha
2 print gd1 and alpha
· forc
·
valid options are 0 do not print forces
1 print forces
· pldr
·
valid options are 0 do not print pldraw
1 print stacking sequence
2 print sequence including shells
· prop
·
valid options are 0 do not print properties
1 print bulk properties
· dlpoly
·
valid options are 0 do not print dlpoly files
1 print CONTROL, FIELD and CONFIG
n implies using perturbation method Field has n files and reg2-block2 has V
added before the atom name
· relax
·
valid options are 0 do not print .rel files
1 print .rel file at end
2 print .rel file each iteration
· cart
·
valid options are 0 print basis coords in fin-res file in Xtallog. coords
1 print file in Cartesian
·
· vasp
·
valid options are 0 do not print POSCAR
1 POSCAR has cartesian coords
2 POSCAR has direct coords
POSCAR called cryst.csvp
·
castep
·
valid options are 0 do not print cell file
1 cell file has cartesian coords
2 cell file has direct coords
.cell. file called cryst.cst
·
· md
·
valid options are 0 to 3
·
· phon
·
valid options are 0 to 3
·
· xyz
·
valid options are
0 do not print .xyz files
1 print .xyz files
·
· arc
·
valid options are
0 do not print .arc (insight MD) files
1 print .arc files
·
· xtl
·
valid options are
0 do not print .xtl (insight crystallog) files
1 print .xtl files
·
· csd
·
valid options to give Cdif/dat/csd files
0 do not print .dat files
1 print .dat files
2 print .dat files with shells
·
bond
· valid options
· 0 do not print bond distances
· 1 print bond distances of first coordination shell
· 2 print bond angles with atoms in first coordination shell
Note: If you want to
reduce the maximum distance it looks at you must change the short range cutoff
(so do not use this run for any energies etc).
Suppose you want to limit it to 2.6 A
then write at the top somewhere:
cuto 1.0 2.6 0.5
60.0
One of the following
dislocation, surface, slab, film or bulk specify which regions
are active. If none of these are specified the program will stop after
completing the input processing for the metadise controller
dislocation or surface
cause only "reg1 block1" and "reg2 block1" to be active
slab
causes only "reg1 block1" to be active
film
causes only "reg1 block1", "reg2 block1" and "reg1
block2" to be active
bulk
causes all four regions to be active
n.b. any coordinates in regions which are not active are simply ignored
Keywords used with the lattice vectors to generate a rotated unit cell:
Region
Zreg
miller or miller1
(hkl) miller plane selected
miller2
normal1 or orient1
a,b,c is the cartesian vector describing the normal to the crystal surface
zone2 or orient2
shift
shft is the position of the cut - for generating identical datasets to those
obtained from MIDAS or MARVINS - we use stackgen
polar
rand reg1
will randomly modify the coords in region 1 upto a given depth by upto a
max-displacement
region
scale
scales first 2 vectors of rotated cell, used in stackgen to cut polar surfaces
xscale
scales surface lattice vectors of a restarted dataset
vscale1
scales surface lattice vectors of a generated surface, where the first surface
lattice vector is sc1a* the first lattice vector and sc1b * the second lattice
vector and the second line is for the second surface lattice vector, ie sc2a
times the 1st and sc2b times the second.
vscale2
dilation or dilat1
dilat2
fixv
perp
rotate
disp
rlat
coin
defe
terminated by ends
allows the introduction of vacancies and intestitials
e.g.
defe
vaca O 0.0 0.0 0.0
inte Cl 0.0 0.0 0.0
ends
this replaces an oxygen core by a chlorine core
Note:
if line terminates in block2 then interstitial defects added to reg1
block2 (useful for scan option)
adsorb
terminates by ends
hydroxyl
hydrate
adds either dissociated or associated water molecules as defects - use in
conjunction with an orientated cell
solvent depth 20 void 1 shift 0.1
will look for a file called solvent; format: latt (3 lines) basis n (coords)
ends where n is no. of atoms in solvent molecule
depth - of solvent is 20 A, void is the gap around edge of solvent cell and
shift moves the whole solvent cell by 0.1
read
read add shel
add causes the atoms to be added to those that exist
shel attaches shells to atoms if required. In the case of vasp there is another
keyword
read vasp add shel shift 3.5
where the coordinates are shifted and reboxed.
Note: another way of including data is to have the line beginning
@include, if this is followed
by a file name, it will be inserted into the input dataset
Control Keywords for forcing incorrect cell to run
The energies will be meaningless!
charge
dipole
coords
see stackgen module, this keeps atoms of a molecular unit together in output
rdf print rdf for either bulk or region 1. rdf # prints # coordinates of either bulk or region 1
Prin see above
dump
pdb
stop
title
noso
check runs through the sructure creation program
force gives 3D energies and forces
props gives 3D properties
conv runs thru a constant volume minimiser
conp runs thru a constant pressure minimiser
other useful keywords grow, rand, cons, opti, bkstr
Back to top
The program works in cartesian vectors and usually the crystal structure given to the program will be in terms of cartesian vectors, both for the unit cell and the atomic positions. The program allows two different materials to be entered; refered to as block1 and block2 respectively. Once a simulation cell is generated the file will also contain the coordinates of region 1 and 2 which is referred to (for historical reasons) as 'restart input'.
Cartesian:
requires the lattice vectors and the basis of coordinates of at least block1.
latt or latvec1
followed by 3 vectors - specifying the lattice vectors
latt or latvec2
fullvec1 or fullvec2
followed by 3 vectors - these are used only for the the Miller keyword if the reduced unit cell is used
basi or basis1 or cart
coordinates
Mg 0.0 0.0 0.0
or
Mg core 0.0 0.0 0.0
for shell model - where 2 coordinates used for each species
O 0.0 2.0 0.0
O(S) 0.0 2.0 0.0
or
O core 0.0 2.0 0.0
O shel 0.0 2.0 0.0
When using a rotated unit cell can add
trans after a given x,y,z coordinates to move atom to bottom of unit
cell
basi or basis2 or cart
trans
as above but for block 2
each section is terminated by: ends
As noted above, we normally work in cartesian coordinates. But if preferred crystallographic data can be entered. This requires the unit cell dimensions and the fractional coordinates of block1
Cell or cell1
Cell or cell2
cell 10.0 10.0 10.0 90. 90. 90.
specifying unit cell lengths and angles
Note: There are two conventions, in conven.cbl, if conven=.true. then x is parallel to reciprocal a, z is parallel to c, y is orthogonal to x and z and forms a right handed set while if conven=.false. then x is parallel to a, z is parallel to reciprocal c, y is orthogonal to x and z and forms a right handed set.
This choice of convention is of particular concern if using cell followed by basis
Space
If full is specified, then the program takes account of the space group type,
either 'F', 'C' etc to construct a full cell - rather than the default
primitive unit cell.
Frac or Frac1 or direct
As an alternative can use fractional coordinates - the advantage is that you do
not have to worry about the convention.
The method of specifying coordinates is as for basis
Frac or Frac2 or direct
each section is terminated by: ends
requires the surface lattice vectors, or Burgers vector and the region I
and region II coordinates of block1 and block2 (if required).
surflat or burg or diss
NB surface lattice vectors for block 1 and 2 must be the same. Thus a second call to surflat leads to all block2 coordinates being scaled onto the block1 surface lattice vectors
reg1 block1
reg1 block2
reg2 block1
reg2 block2
each section is terminated by: ends and they MUST be in the order
specified.
OR
Use read keyword to input coordinates
Read car (input Biosym style coords)
Read pdb (input PDB style coords)
Read config (input dlpoly coordinates)
Each is followed by the filename containing the coordinates
Note: the default is to replace the current coordinates but there is additional
keyword add which forces the new coordinates into region 1 block 1.
Back to top
Initiated by keyword: Pote
This requires the parameters to entered in a specific order,
spec
atom label, core or shel, charge, mass
ends
example:
spec
Mg core 2.0 26.0
O core 1.0 16.0
O shel -3.0 0.0
ends
buck
three lines:
buck atomX typeX atomY typeY
A p C rmin rmax
ends
where the first line specifies which atoms are interacting and includes there
types (ie core or shell), the second line gives the interaction energy
parameters A, p and C for the equation:
V(rij) = A exp(-rij/pij) - C/rij6
where the units of A, p and C are eV, A and eV/A6.
lenn
mors
morq
spri
harm
thbo
tors
If 3-body
Anga
If 4-body
Tors
Examples:
For Cr2O3:
POTE
SPEC
O SHEL -2.18 0.0
O CORE .18 15.9994
CR CORE 2.03 52.996
CR SHEL 0.97 0.0
ENDS
BUCK O SHEL CR SHEL
1734.1 0.3010 0.0
ENDS
BUCK O SHEL O SHEL
22764.3 0.1490 27.99
ENDS
HARM O CORE O SHEL 27.29
HARM CR CORE CR SHEL 100.00
ENDS
For CaCO3
pote
spec
ca core 2.0 40.0
c core 1.135 12.0
o core 0.587 16.0
o shel -1.632 0.0
ends
buck o shel o shel
16372.0 0.213 3.47 20.0
ends
buck ca core o shel
1550.0 0.297 0.0 20.0
ends
mors c core o shel
4.71 3.80 1.18 0.0 1.4
ends
harm o core o shel 507.4
boha 1 1.69 120.0
toha 1 0.11290 1 2
ends
thbo
anga 1 c core o core o core
1.4 1.4 2.4
ends
tors
tora 1 c core o core o core o core
rij max 1.4
rik max 1.4
ril max 1.4
rjk max 2.4
rjl max 2.4
rkl max 2.4
ends
Back to top
Props
This module is a subset of the meta (i.e. keywords entered
before first start) and evaluates the elastic constants, bulk and basis
strains to check that the structure given to metadise is pre-minimised. Note
the first elastic constant using the Rotated Cell is the Young's Modulus for
that surface. If the crystal is not minimised use the 'conp,
'
and 'stop' keywords in the Metadise Input Controller.
Check
check 1 program will run through
Xtallographic input processor (for block1 unit cell).
force
forc 1 as check but also calculates
energies and and forces (for block1).
Prop
prop 1 as check but also calculates
elastic data and strains (for block1).
Conv
conv 1 as prop but also performs a
constant volume minimisation first (for block1).
Conp
conp 1 as conv but also does a constant
pressure minimisation (for block1).
Cons
cons 1 as conp but keeps unit cell shape
fixed (for block1).
Maxi
maxi 100 performs upto 100 Newton
Raphson iterations (if conv or conp specified).
grow
Maxu
maxu 10 updates 2nd
derivatives every 10 iterations (if conv or conp specified).
bkstrain
bkstrn 0.1 allows up to 0.1, i.e. 10%
strain for cons or conp calculations.
Rand
Rand basi 0.2
and/or
rand cell 0.2 will randomly adjust the
basis coords and/or the cell dimensions by upto the amount specified.
NOTE: if the print statement: prin cart 1
is set then the fin#####.res file is output in cartesian coordinates
AND if do not want frequencies: prin phon 0
Back to top
Stackgen
generates a rotated unit cell from the data supplied be the Metadise Input Controller. If unsure which are
non-dipolar terminations this will return a code for each of the non-dipolar
cuts.
Stackgen is immediately followed by either 'systematic' or a number.
Stackgen Systematic
Causes the program to search for zero dipolar cuts, see pldr####.out for the
index or indices which give a zero dipolar cut. [For each cut the full
coordinates are printed in stac#####.out, in a potential model is inserted into
this dataset all the surfaces can be run as a single job.]
Stackgen #no.
will select the specified index as obtained using systematic.
Note:
For those surfaces with a residual dipole that can not be removed using
stackgen use 'dipole' in stackgen controller and use 'grow' in Metadise controller
The keyword: 'Start' causes the program
to leave the Stackgen Controller.
Keywords:
Coord:
coord c core o core 1.6 will assume all o cores within 1.6 Ang of a c
core will stay with the c core.
Prevents polyanions from being cut. The first coordinate becomes a dependent
coordinate and can not then be used later as a central atom or first atom.
Prin
print 1 increases information printed
Pldr
pldr 0.2 defines thickness of a plane of atoms for generating schematic
figures in pldrw####.out
tole
tolerance 0.0001 is the thickness of a plane of atoms for
separating ions at a dipolar surface
dipolar
dipolar forces all surfaces, including dipolar ones, to be printed
mult
mult 1 allows for multiple stackgen entries
nosort
nosort prevents coordinates being sorted
noro
norotate prevents coordinates from being rotated into new configuration.
all
all alternative cut strategy.
from
from # causes change in cut strategy from systematic vlaue #.
mirror
mirror only mirror cuts displayed.
noshift
noshift prevents coordinates from having their x coordinate (height)
modified.
grow
grow # # # grows simulation cell - to aid in cutting dipolar surfaces.
Star
start causes input processor to finish and the program to run.
Prin
print 1 increases information printed
Max
max 3 considers all symmetry independent Miller indices up to 3 - unless nosymmetry set
nosymmetry
nosymmetry causes all Miller indices to be considered
Stackgen
stackgen allows all stackgen keywords to be invoked.
see stackgen for possible options
start
start causes input processor to finish and the program to
run.
Back to top
Step
suggests possible Miller Index to generate specific steps.
The keyword: 'Start' causes the program
to leave the Step Controller
Keywords:
flat
numb
acc
Back to top
Minimise
performs a minimisation of the simulation cell, using either Newton-Raphson or
conjugate gradients.
The keyword: 'Start' causes the program
to leave the Minimisation Controller
Keywords:
accm
tidy
prem
perp
fixv
prin
Newt
newt 100 performs upto 100 Newton Raphson iterations.
Maxu maxu 10 updates 2nd derivatives every 10 iterations.
Update update 10 updates 2nd derivatives every 10 iterations.
Maxd maxd 0.001 maximum size of displacement for a given iteration.
dspm dspm 0.001 maximum size of displacement for a given iteration.
Conj
conj 100 performs upto 100 conjugate gradient iterations.
cstec
sacc
cacc
Bfgs: bfgs 100 performs upto 100 BFGS iterations
bstep
facc
bacc
The
next feature adopted by METADISE, is a finite particle generator. As it is
based on one of our SGI GL programs called GEM, the new module is called
GEM. The module is currently in its
infancy and is very primitive, clearly requiring more work. The module has, at present, two parts. The first is to generate a morphology, which
requires surface energies and space group information, which use the keywords index
and Space. Something like…
Space FULL P1 1 1
Index 1 0 0 1.0
Index –1 0 0 1.0
Index 0 1 0 1.0
Index 0 –1 0 1.0
Index 0 0 1 1.0
Index 0 0 –1 1.0
As
a check of the shape the program writes a vrml file showing the morphology via
a Wulff plot.
|
A Wulff plot of rutile |
The code does make a number of assumptions, which should be removed before the production version is released. Perhaps the most important is that if the space group is A, B, C, I or F centred, then Space must be followed by FULL otherwise the index refers to the reduced unit cell. The second is that unlike the surface module in METADISE the particle generator does nothing to construct sensible surface terminations. Essentially, as with METADISE we will have to learn the rules.
One of the initial tests will be the use of the surface module to calculate all the relevant surface energies and hence construct a Wulff plot. The idealised total surface energy can now be compared with that calculated explicitly by generating a nanoparticle. The second part of the input gathers information about the nanoparticle by starting with the keyword nano and finishing with ends. The approach is then to use the Wulff plot to define a portion of space containing the nanoparticle and then fill the space with atoms defined by the crystallographic coordinate file using the rules defined within the nano/ends keywords.This will generate a simulation cell bounded by the symmetry related surfaces specified by index keywords. The input is converted to P1 symmetry and output as p1indices.res, which can then be used as a replacement for the input to the gem module and allows us make subtle changes to the morphology.
The coordinates of this run are all put into region 1 (as specified by rad1 which gives the limit of the most distant vertex). The alternative approach is to scale the morphology by a factor specified by scale, i.e. the conversion to Angs.
|
2.6 nm rutile
nano-particle |
|
20 nm nano particle
of ceria, showing both polar and non-polar surfaces |
|
Two 2nm hematite
particles |
|
![]() |