[ICON: To the NSR page]

[ICON: To the RIM page]

Crystallography Laboratory University of Nijmegen

SYSTER manual



*                                                                      *
*    Program       S Y S T E R        version  0.9       Aug 24, 2000  *
*                                                                      *
*                                                                      *
*    J.M.M. Smits  and  R. de Gelder                                   *
*    Department of Inorganic Chemistry                                 *
*    University of Nijmegen                                            *
*    Toernooiveld 1                                                    *
*    6525 ED  Nijmegen                                                 *
*    The Netherlands                                                   *
*    smits@sci.kun.nl   and   rdg@sci.kun.nl                           *
*                                                                      *
*    This program is freeware, which means that the user is invited    *
*    to adapt this program to his/her situation. However, some         *
*    subroutines are independent of any such situation, and should     *
*    be used unaltered. Proper credits would be appreciated, though.   *
*                                                                      *


Program Description
Program Units
Subroutine callcode
Integer function leng
Input / Output files used
The *.crysda file and the CRYSDA program
Compiling and installing SYSTER
Executing SYSTER
Output file definition
Current limitations

Program Description

SYSTER is used to collect data items which are scattered throughout
several data files and program output listing files and to write a
single formatted output file which is input to SYSTERPLOT, the companion
program which can show various plots based on these data.
In this way it is also used to get a uniform input to SYSTERPLOT in a
laboratory setup which is undefined and widely varying. It means that
it is up to the user to adapt this program to his/her local situation.

There is not much to tell about what the program does, it is clear and
straightforward. But because some programming action by the user is
required, the emphasis in this manual is on the structure of the

As it is, the program writes 13 different variables to the output file,
defined in 'Output file definition'. It is possible to replace any
variable by 1.000 as a substitute. It is vital to keep the variables
in their proper place.

Program Units

program syster
subroutine get_scale      gets the scale factor to scale fc to fo
                          from the SHELXL *.res file.
subroutine get_isyst      gets several data from the *.crysda file.
subroutine get_fcf        reads the calculated data from the *.fcf
                          file, packs hkl-values into one word, and
                          sorts the data on these packed hkl-values.
subroutine norm_hkl       converts the hkl-values ihs, iks and ils
                          to 'normalized' values as used by SHELXL.
subroutine find_fc        finds the position of jhkl in an ordered
                          list of integer values ihkl(1..nfcf),
                          using a binary search strategy.
subroutine sorti          sort ix(nx) creating pointers array ip.
subroutine callcode       returns calling sequence argument, see below.
integer function leng     returns character string length, see below.
subroutine oldfile        tests the presence of a file assumed to
                          be present, and opens it.
subroutine newfile        opens a new file.
subroutine files          opens all necessary input/output files.

Subroutine callcode

Subroutine callcode gets the first argument given in the program
calling sequence; if no argument is given it is asked for.
It is assumed that this argument is the compound code, which is
subsequently used to construct several file names.

This subroutine uses two special statements which are / may be
platform dependent:
iargc()      integer function, returns the number of arguments
             given in the calling sequence, excluding the program
             name itself; returns 0 if no arguments are given.
getarg(i,s)  this subroutine gets the i-th argument from the
             calling sequence, excluding the program name, and
             stores the argument value in character string s.

If you cannot adapt these calls to your local platform, it is quite
easy to remove these calls from the program. In that case any
calling sequence parameters will be ignored and the compound code
will always be asked for.

Integer function leng

Integer function leng returns the length in bytes of the
meaningful part of a string, i.e. excluding trailing blanks;
leng = 0 if an empty string is supplied.
To be used if no such intrinsic is supplied by the compiler.
N.B. the standard intrinsic integer function len returns the
defined length of a string in bytes.

Input / Output files used

unit   extension
                   input files containing reflection data
  1    *.hkl       data reduction output, source of Fo and sig(Fo)
  2    *.rf1       measurement output, source of angular info
  3    *.fcf       SHELXL output, source of Fc
  4    *.drift     data reduction output, source of drift info
  5    *.empabs    data reduction output, source of abscor info
                   input files containing crystal data
  8    *.res       SHELXL output, source of scale and weight
  9    *.crysda    local program output, source of symmetry info
                   (see manual for specifics and how to get it)
                   output file
 11    *.syster    current program output, input to SYSTERPLOT

The *.crysda file and the CRYSDA program

CRYSDA is a FORTRAN program that creates a *.crysda file containing
all pertinent crystal data that are needed or usefull for a crystal
structure determination. Based on a minimum of information (cell
dimensions with esd's, space group, molecular formula, Z and radiation
type) a lot of derived data (symmetry, scattering factors, matrices,
etc.) is stored in a *.crysda file. If present, the celldimensions,
esd's, and the radiation type can be found from the Nonius CAD4 output.
Alternatively, CRYSDA can read its input from a separate *.crysin file.
The program is part of the DIRDIF program system, a powerfull direct
methods program system that uses difference structure factors to expand
a partially known structure, e.g. by Patterson search techniques or
vector search methods, both included in the system.
CRYSDA can be run as an option of the DIRDIF program system, for
instance during the data reduction step.
DIRDIF is available from the same site as SYSTER and SYSTERPLOT

The CRYSDA file is organized in records containing a keyword with
associated data. Two of them, with keywords ICENT and ISYST, are used
in SYSTER. ICENT = 1 for noncentrosymmetric and ICENT = 2 for
centrosymmetric space groups. ISYST = 1, 2, 3, 4, 5, 6, 7, or 8 for
triclinic, monoclinic, orthorhombic, tetragonal, trigonal with
rhomboedric axes, trigonal with hexagonal axes, hexagonal and cubic,
A third record with keyword IUNIQ will be used in a future release.
IUNIQ indicates the unique axis with IUNIQ = 0 if there is no unique
axis, or 1, 2, or 3 for a, b or c unique, respectively.

Compiling and installing SYSTER

Before SYSTER can be 'made', it has to be adapted, see Executing SYSTER.
The 'makesyster' file as supplied with the source code has nothing
to do with a Unix-like make procedure. It just contains the necessary
Silicon Graphics IRIX compile statement, and can be executed after the
necessary mode has been set, e.g. 'chmod 7** makesyster'. It only shows
how it is done on our platform.

To install SYSTER, just copy the executable to a suitable place pointed
to in your path, and probably do a rehash.

Executing SYSTER

SYSTER is meant to be executed from the directory containing your data
files. However, the way in which data are organized locally varies
widely. Therefore you have to adapt the program before Compiling and
Installing so that the input files can be found.
In our own local setup we use a directory named after the crystal's
compound code. This directory has several subdirectories, two of them
being 'data' and 'shelxl'. Subdirectory 'data' contains the measured
data files and the result of the data reduction. Subroutine 'shelxl'
contains all files pertaining to the least squares refinement. It also
holds links to necessary input files to SHELXL which are stored in
subdirectory 'data'. The program source text reflects this situation.

Another point is that the program reflects our measuring device: we use
a Nonius CAD4 diffractometer. The setting angles are defined in the
so-called kappa-geometry. If you use an Eulerian diffractometer, just
read 'chi' for 'kappa'.

To run the program just enter 'syster compound-code' (mind the lower
case). If you leave out the compound code, it will be asked for.

Output file definition

For all variables a format of F10.x is used; x depends on the value
range that the variable is expected to cover.

variable  1:  reflection number
variable  2:  observed structure factor Fobs
variable  3:  calculated structure factor, scaled to Fobs
variable  4:  sigma( Fobs )
variable  5:  xraytime
variable  6:  theta
variable  7:  phik  (or phi in Eulerian setup)
variable  8:  omk   (or omega in Eulerian setup)
variable  9:  kappa (or chi in Eulerian setup)
variable 10:  background ratio (always >= 1.0)
variable 11:  absorption correction factor
variable 12:  drift c.q. crystal decay correction factor
variable 13:  weight in least-squares refinement

Current limitations

There are a few limitations to the program. The number of reflections
is limited to the size of various arrays, i.e. 20,000. To prevent
problems with defining dynamic memory allocations on various platforms,
predefined arrays are used. By changing the size of the arrays in
'syster.inc' and parameter 'isize' in main, this number can be changed.
This, of course, should be done in concord with SYSTERPLOT, which uses
the same array sizes.

At present 13 different variables are written to the output file. The
program SYSTERPLOT has a limit of 15 different variables. But also this
limit can be adapted.

The subroutine norm_hkl works for triclinic, monoclinic and orthorhmbic
only, as yet. Future releases will include higher symmetries as well.

In the monoclinic system, b must be the unique axis, as yet.

Back to the SYSTER page


Back to the Crystallography Home Page