next up previous
Next: A More Elaborate Example Up: INTRODUCTION TO CCSL Previous: Explanation of the Example


Comments on the example output

The output charts the progress of the program. PREFIN notes one C card and two S cards (without interpreting the data on them yet). SYMOP detects the lack of a centre of symmetry, and counts 12 operators in total in the group. In passing it looks for an I (``Instructions") card which could say, e.g.,

I FRIE  1

and would ask to assume Friedel's Law. It does not find one, and says so.

OPSYM(1) lists the operators (this is separate from SYMOP because once the user is happy with his space group he may well not want to list all operators for every run).

SYMUNI notes that it has not been given a U (``Unit") card with typical $h,k,l$, so it uses (13,11,10), as being a general reflection with $h > k > l$. It finds a suitable asymmetric unit and prints it out.

RECIP determines the relationships imposed on the cell parameters by the symmetry and prints them out. In the example, which has hexagonal symmetry, these relationships imply that only values of cell sides a and c are needed from the C card (the value of b is present on the sample Crystal Data but need not be). It reads and interprets the C card, filling in various useful quantities connected with the cell parameters. Not all these quantities are printed. It is possible to make RECIP print more if more detail is needed.

SETGEN then devises a scheme for traversing the whole of the asymmetric unit. The argument 0.2 is the maximum value of sin $\theta/\lambda$ required. Again, nothing is printed, but it could be if it is needed.

The remaining output is generated by the WRITE statements in the user's main program.

Note that one of the arguments of the CALL of GETGEN is a LOGICAL variable, NOMORE, which is eventually set to be .TRUE. when there are no more $h,k,l$ values. This must be declared LOGICAL at the head of the main program. Similarly, because arrays H and K are used, these must be DIMENSIONed at the start, as H(3), K(3).

In more complicated main programs it may be necessary to have access to variables, such as the cell parameters, used in the Library routines. Such variables are held in labelled COMMON blocks. The cell parameters are in

      COMMON /CELPAR/CELL(3,3,2),V(2),ORTH(3,3,2),CPARS(6,2),KCPARS(6),
     & CELESD(6,6,2),CELLSD(6,6,2),SDCELL,LSQCEL,PRODSD,KOM4
      LOGICAL SDCELL,PRODSD,LSQCEL

where the array CELL holds both real and reciprocal space sides and angles. If the main program wants to refer to CELL, it should declare COMMON /CELPAR/ at its head, copying it from the Library.

The user will see from the discussion above that it will be easier to read this Manual if he has available a printout of the FORTRAN source code of the Library, although this is very bulky and a copy of Appendix A may suffice.

There are, of course, certain typical computations which many users will require often, and these give rise to standard main programs using CCSL. To the user, such a main program is, for his particular computer, made into a complete job which he can regard as a `black box'. He feeds his data into this box as if he were using a more conventional system of programs.

A new user will probably approach CCSL this way. It is quite likely, though, that soon the black box will not do exactly what he wants, and he will move on to using CCSL in the way it is intended, writing his own programs, or modifying existing programs, to fit his problem precisely.


next up previous
Next: A More Elaborate Example Up: INTRODUCTION TO CCSL Previous: Explanation of the Example
P.J. Brown - Institut Laue Langevin, Grenoble, FRANCE. e-mail brown@ill.fr