-
General Notes
-
When you enter a new value in a field, always
hit the 'enter/return' key at the end of the input, or else
it will not be taken into account by the program !!!
-
You should regularly save your project
using the 'File' menu at the top -> Save. You can reload via
the same menu->'Load'. (That being said, the program has reliably run under
Linux and Windows (NT, 98) on test structures for days.)
-
First step: create your Crystal Structure
-
From the top menu 'Objects', create a new Crystal Object.
-
Click on the 'Crystals' tab to see your created crystal.
-
You can already display you crystal structure: in the Crystal, use the
'Display' menu-> 3D Display. You can use the mouse to change the
display:
-
drag with the left mouse button down to change the orientation (this will
probably crash under Windows 95)
-
drag with the middle button to change the distance/aspect ratio. You can
also use the '+' and '-' keys to change the distance, if you have a two-mouse
button.
-
right-button click will display a popup menu to update the Crystal Display
when you have changed some parameter (sometimes the program will try to
do it itself).
-
You can give your Crystal a name in the Field just after 'Crystal'
(where it is written 'Change Me!'). This will be useful to choose your
Crystal Structures thereafter. (do not forget to hit 'return'
at the end of the input...)
-
You can change the spacegroup by entering either a symbol ('Ia3d',
'-I 4bd 2c 3'or the number '230') in the SpaceGroup Field. (for high symmetries
it can take a few seconds to find the asymmetric unit). If
the name reverts to the old entry, it means that the symbol has not been
understood. In doubt (when using not standard settings), use the full Hermann-Mauguin
Symbol (eg '-I 4bd 2c 3', 'P1121/a',...)
-
You can Change the Lattice parameters. Again, do not forget to hit 'return'
at the end of the input... Use the right-button menu to update the 3D Display
of the structure.
-
To add atoms to your structure, you must first create the atom types,
what is called 'ScatteringPower' in the program. Go to the 'Scatterers'
menu of the Crystal, and choose 'Add Scattering Power'. This will add a
'SccatteringPowerAtom'a bit lower. You should change the name (eg 'Ta1')
of this atom type, as well as the symbol corresponding to the atom
(e.g. 'Ta' ). Each time do not forget to hit 'return' to validate the
input...
-
Add as many scattering power as you need (you can add ones later, of course).
You need only one ScatteringPower per type of atom, unless you want (say)
your oxygens to have different temperature B-factors.
-
Then you can add an Atom to you structure. Use the 'Scatterers'
menu again -> 'Add Atom'. You will be prompted to choose one of the atom
types that you have entered (from the names that you have given). If you
update (or create) the 3D display now, you should see your atom in (0,0,0)
and its symetric positions.
-
You can change the position of the atom by entering new values in the x,y
and z fields (you must manually update the 3D display (righ-button click)
to take that into account).
-
You can change the atom type (ScatteringPower) by clicking on the atom
type button.
-
Refinable flags: note the little checkbox before each parameter
? If it is checked, it means that the parameter will be refined (not fixed).
(thus x,y,z are refined by default, but not unit cell parameters). By
using a right-button click on the parameter's name, you can change the
limits associated to this parameter.
-
You can also directly add more complex objects such as:
-
polyhedra: use the 'Scatterers' menu again. You will be prompted for two
atom types and a bond distance, eg 'S' and 'O' and 1.5 for a SO4 tetrahedron.
-
You can also create a custom ZScatterer object: Choose the Scatterers->Add
ZScatterer. Then add atoms in the ZScatterer. This follows a Z-Matrix approach
(if you do not know what a Z-Matrix is, see these links: 12
). You can add atoms using the menu. You must be
careful with ZScatterer: contrary to ZPolyhedra, the limits on bondlengths,
angles and dihedral angles are very loose. You should use local menus (right-click
on each parameter) or the 'parameter' menu to change these limits (these
limits can also be changed from a saved file).
-
If you want the program to automatically correct special positions
(highly recommended for inorganic structures),
you should select 'Yes' for the 'Use Dynamical Occupancy Correction'
option (that's the default, anyway). Thus an atom on a two-fold axis will
only be seen as a single atom, and not two at the same position. For
organic structures you should de-select this option.
-
Now would be a good idea to save everything (top window menu File->Save,
just in case ?)
-
Second Step: create a PowderPattern Object
-
From the top menu 'Objects', create a new PowderPattern Object.
-
Click on the 'Powder Diffraction' tab. There you can see you new PowderPattern
Object and change its name after in the 'PowderPattern' Field (again never
forget to hit the return key).
-
Import your experimental Pattern, from your PowderPattern 'Object'
menu ->Import FullProf Pattern (for example-other formats are supported).
(Alternatively, you can just Simulate a Powder Spectrum (if you
have no data), using the PowderPattern's Object->Simulate menu. This will
create a powder pattern with constant intensity equal to 1)
-
Change the wavelength and then the radiation type
(X-Ray, neutron) for your experiment.
-
Add a background component for your experiment. To do this you first
need to create a text file with two columns, 2Theta (in degrees), and Ibackground,
eg:
10 5367.3
15 128.45
90 137.90
Add as many points as necessary, with increasing 2theta values (so
far only linear interpolation is available). The format (spaces etc) is
free, as long as you alternate 2theta/Intensity values. Once this file
is created, in the 'Components' menu -> Add Interpolated Background. Then
in the 'Object' menu of the new PowderPatternBackground object, use 'Import'
and choose your 2theta/Intensity file.
-
Finaly add a Crystalline component to your Powder Pattern: in the
PowderPattern 'Components' menu -> Add Crystalline Phase. You will be prompted
to choose the crystal structure. You can now add
several crystal phases.
-
You can now display your calculated and observed patterns : use
the 'Pattern'-> Show graph. It can take some time to generate all profiles
the first time. In the Pattern menu you can fit the scale factor to minimise
R or Rw. You can use a right button-click to update the graph each time
something as changed (crystal structure, profile parameters, etc...). You
can resize the window (like all others), but not zoom.
-
You can change the profile parameters and profile type for your Crystalline
phase with the corresponding fields.
-
Now would be a good idea to save everything, just in case ?
-
Third Step: create a GlobalOptimization
-
From the top menu 'Objects', create a new GlobalOptimization Object.
-
Click on the 'GlobalOptimization' tab. You have your new object, which
you can name (this time it's not useful)
-
You can choose the algorithm, either standard Simulated Annealing
or Parallel Tempering. If you have no idea how many trials you will
need to find the crystal structure, we recommend the latter. For simple
structures it can be slower than Simulated Annealing but otherwise it can
get the optimization out of false mimima much more easily than Simulated
Annealing, since you have 'high temperatures at all times'.
-
You can choose the Temperature schedule (exponential is a good choice-stick
with it-do not try the 'smart' choice-it does not work yet !). The Max
and Min temperatures should be chosen so that at the highest almost any
configuration can be reached, and at the lowest only the 'best' configurations
are chosen. Current values should be fine unless you use a cost function
which goes above 1.
-
You can choose the Displacement Amplitude (or mutation) schedule:
this affects how much the parameters can vary for each random move. Just
choose 'smart', and the program will change this parameter for each temperature
so that the number of accepted moves is between 30% and 70%.
-
Then you can change the number of trials to do. Very simple structures
(PbSO4) can be solved in 20000 trials, but for many independent atoms you
can use million of trials.
-
Before launching the global optimization, you must first tell the algorithm
which Objects are to be optimized: in this case use the 'Optimize'
menu -> 'Add object to optimize', and add both your Crystal and your powder
pattern object. The two objects should appear at the bottom.
-
Then you must choose which cost functions (ie strutural model criterion)
you are going to use. Use the 'Optimize'-> 'Add Cost Function' menu and
add (for example), the Rw for your powder pattern. You can also choose
the R-factor. (The antibump cost function cannot be used unless
you add antibump distances, which can be done in the Crystal menu 'Parameters->Add
AntiBump distance'). If you add several cost functions, the weighted
sum of the cost functions will be used as a criterion.
-
Before Launching the optimization, check for all objects (crystal and powder
pattern) which parameters are not fixed (box unchecked).
With this version of the program you should only optimize atomic positions
(and populations if necessary-but this is delicate-do it only when you
have approximate values for atoms positions). You must avoid refining
lattice or profile parameters since this is going to very slow (in
a global optimization, you should already now them sufficiently beforehand),
and the 'global' nature of the optimization will lead to delirious values
and then to a crash of the program (negative profile width, etc..) unless
you give small limits to these parameters.
-
Then You can launch the optimization : 'Optimize'-> 'Run Optimization'.
If you have windows with the 3D Crystal Structure and the Powder Pattern
graph, these should be automatically modified for each new 'best structure'
found by the program. All structure parameters are updated 'live' during
the optimization as well. You can Stop the optimization via the
'Optimize' menu.
-
Once you have a reasonable structural model, you can copy the atomic positions
and use them in a least-squares refinement program (gsas, fullprof, ...).
-
You can save the atomic positions using the Crystal's menu 'Object->Save
(Text)'. This will give you the atom positions with the corresponding Biso,
as well as the occupancies and dynamical correction of the occupancy (if
it is <1, it corresponds to an atom on a special position, or different
equivalent atoms merged during the optimization). The table of minimal
distances can be used to determine which atoms are overlapping, if any.
-
Further notes
-
You can edit the saved files, which are written in XML
format. There you can (among other things) change the limits for all parameters
(denoted with a <Par> tag). You can set low and high limits. This is
automatically done when you create Polyhedron. If you have already used
HTML, you should easily be able to read the file format, which includes
every data to describe all objects... You can also change the connectivity
of all ZScatterer, etc...
-
You can combine several Powder patterns corresponding to the same structure,
as in the example file example/pbso4-joint.xml.
-
every time you want to load a save file, you must re-launch the program
beforehand (you are not supposed to have objects (crystal,...) with the
same name).
This program is in still being developped. If you want to keep up
with new releases, you can subscribe to the ObjCryst-Fox mailing
list which will give only announcements.
If you want to see new features in this program, you can drop
me an email or, since this is an open-source project, you can contribute
to it. Further developments should include : preferred orientation.. and
other Cost Functions.