Documentation & Data Formats
Automatic Powder Indexing
9 September 1998
Based on ITO.DOC (9 December 1994),
ITO12DOC.WP1 (19 September 1995) & ITO12MAN.WP1 (21 September 1995)
This combined set of documentation contains three sections:
1) ITO Instruction Manual (Version 12)
2) Additional Notes for Special Fields in PARAMETER Cards
3) Documentation Embedded within FORTRAN Comment Lines
The first two sections contain edited and tidied versions of the "Manual" and "Special Features" output which can be printed on request from version 12 (1986) of Jan Visser's ITO zone-indexing program.
The third section provides a different view, based on the initial block of comment cards within the source code of the program. After a brief summary of the input data formats, which in some cases gives additional detail not contained in the main manual, this proceeds to outline the program's internal structure (of interest mainly to programmers and those needing to adapt the ITO12 program to new compilers and machine environments).
I've taken the liberty of attempting to clarify some of the original text and adding a few comments where they seemed to be helpful (and also added email addresses to the contact information on page 3).
However, in reading the following sections, please be aware that development of this classic program began on mainframe computers using punched card input in the late 1960s, and that the compilation of a PC version came rather late in its career. Thus the documentation has accreted over nearly three decades and remains to some extent a palimpsest of old and new terminology.
In particular, be aware that although for clarity I have changed some of the original references from A, B,...F to Q(A), Q(B),...Q(F), it will often be the case, both here and in the program's output, that the letters A, B, etc. have been used to refer to quadratic-form powder constants (and so not the direct cell constants a, b, etc.).
Similarly be aware that, as is usual in powder indexing, Q refers to the quadratic form with dimensions 1/(d*d), and is not a reciprocal length q with dimensions 1/d.
Over the years Jan Visser's ITO in its many versions has undoubtedly been the most widely used of the major indexing programs. One of the reasons for ITO's popularity, apart from its speed, good success rate and robustness in the face of (not too many) impurity lines, is the fact that it is designed to be very simple for non-specialists to use, through a very thorough provision of default parameters.
These defaults embody much combined experience from generations of users over more than a quarter of a century, and new users will usually find it best, especially in the first instance, simply to leave both parameter cards blank and allow the program to proceed fully automatically.
(For an even simpler way to launch ITO12 and other major indexing programs, see my CRYS2RUN system, available from the CCP14 Web site at http://www.ccp14.ac.uk).
Robin Shirley, University of Surrey, 1998.
Printing this Documentation
This document has been formatted for printing on a PostScript printer in the New Century font. However, if you can't manage that, Times Roman will probably be reasonably satisfactory. The final section has been left as the original comment-card images, and so needs to be in a monospaced non-proportional font like Courier in order to retain its internal formatting. The size suggested below for section 3 (9.5pt Courier) is probably about optimum if your printer can handle it.
*** ITO Instruction Manual ***
--- Version 12 ---
In case of problems, write or call:
J.W.Visser, Technisch Physische Dienst, P.O.Box 155, Delft, Netherlands
Phone: 015 - 787004, (788020)
[R.Shirley comment: as Jan has now retired, this number may no longer be effective]
G.G.Johnson Jr., Materials Research Lab., Penn. State University, University Park, Penn. 16802
Phone: +1 (814) 865 1637
R.Shirley, Psychology Dept., University of Surrey, Guildford, Surrey GU2 5XH, England.
Phone: +44 (1483) 300800 X2610
This program tries to find the unit cell from the powder pattern. The principles are described in a paper by Visser in the Journal of Applied Crystallography (1969) 2, 89.
Most of the calculations are carried out in terms of Q-values, these are (100/d)**2, where d is the interplanar distance in Angstroms. All values in the program are expressed in these Q-Units (QU.), unless indicated otherwise.
FORTRAN i/o unit numbers: The input to the program is on unit 15, the regular output on unit 16 and the images of the input cards are printed on unit 14. A summary of the results (suitable for Pcs and CRT-terminals with lines shorter than 71 characters) is output to unit 66 (these i/o unit number assignments can be changed within the main program)
The ITO program was designed back in the days when most computer input was in the form of cards. The following description retains the original card-based nomenclature (to avoid possible confusion between powder lines and lines in the input file), but on PCs and other modern systems, references to a 'card' should simply be taken as meaning a line of text in the input file.
If you actually do use cards, the PARAMETER cards referred to below may be left blank. However, some (mainframe or mini) computer systems cannot accept an input file with completely blank lines, since these are filtered out by the input routines and simply disappear without trace. In that case, it is better to enter a zero in the first column of the second and third 'card'.
The usual input to this program consists of:
1. A TITLE card, containing up to 80 characters
2. A first PARAMETER card, which may be completely blank
3. A second PARAMETER card, which can also be blank
4. A number of LINES cards
The optimum number of lines to be entered is somewhere between 30 and 35. The absolute minimum is 20. There is no maximum, but if more than 40 are provided, the program will use only the first 40 lines.
The lines should be entered in ascending order of 2theta (i.e. descending order of d).
They can be entered as 2theta, Q or d- values, in the FORTRAN format 8F10.5 (but the same measure must be used for all lines).
You may leave any number of positions on the card blank. This means that you can also choose to enter only one powder line per card, in any of the positions of 8F10.5.
Only the first six lines need to be in their correct order (since they are used to infer whether the line positions are expressed in 2theta, Q or d. thus, after determining whether these are in ascending (2theta, Q) or descending (d) order, the program will sort all lines.
If you want to drop a questionable input line, change only its sign (i.e. insert a minus). The value will remain readable, both on the card and in the test output, but it will not be used in the indexing calculations.
5. A blank card (or a zero in col. 1 If you wish to be more explicit) to flag the end of the LINES input for this dataset.
Because any number of indexing problems can be submitted in the course of a single run, sections 1-5 can be repeated as many times as there are datasets to be indexed, then the run terminated with ...
6. A card containing the word -- END -- in the first three columns, to finish the input.
The first PARAMETER card contains the parameters listed below with the default values that will be used if the field in question has been left blank (or contains a zero, if a numeric field):
Column Format Name Default Meaning
1 A1 MAN 0 Prints these instructions, unless MAN=9
2 A1 INSTR 0 Prints instructions for special features if INSTR=1
3 A1 INTENS 0 If INTENS=1, reads intensities immediately following each line position (8(F7.3,A2,1X) (used only in the output listings, not for indexing)
4 I1 NSOLMX 4 Number of solutions printed out in detail
5-6 I2 NSYST(1) 0 Orthorhombic? +1=Yes, -1=No, 0=Maybe
7-8 I2 NSYST(2) 0 Monoclinic? +1=Yes, -1=No, 0=Maybe
9-10 I2 NSYST(3) 0 Triclinic? +1=Yes, -1=No, 0=Maybe
11-15 F5.2 TOL2 3.0 Tolerance (QU.) used in 2-dimensional search
16-20 F5.2 TOL3 4.5 Tolerance (QU.) used in 3-dimensional search
21-30 F10.5 WAVEL 1.5406 Wavelength (Angstroms)
31-32 I2 LINCO 0 LINCO>0 flags that user-specified line combinations or zones are present (as 4F10.2, terminated with a blank card or a card with a zero in the first column)
33 I1 LZERCK 0 An additional initial sweep for 2theta zero-errors is made if LZERCK>0
34 I1 K (ENL) 0 Intermediate results are output if K>0
35-36 I2 NQ1 3 NQ1 and NQ2 determine the numbers of lines to be used in combinations for
37-38 I2 NQ2 6 finding zones
39-40 I2 NZ1 6 NZ1 and NZ2 do the same when finding lattices from zones
41-42 I2 NZ2 6
43-44 I2 NR 0 If NR>0, this is a refinement and evaluation run using user-specified trial lattices, not an indexing run. If so, the set of trial lattices to be processed follow the LINES cards (as 6F10.2), terminated by a card with blanks (or zeroes) in cols 1-10
45-46 I2 INDAT 5 Number of the unit on which to read the set of line positions
47-48 I2 LIST 1 Prints a list of all calc and obs lines for the first LIST solutions (suppressed if LIST=-1)
49-50 I2 J (TEST) 0 Bulky test output is printed if J>0
51-60 F10.5 WMOL 0.0 Molecular weight
61-70 F10.5 DOBS 0.0 Observed density
71-78 F8.4 TOLG 6.0 Tolerance used for the match between calculated and observed 2thetas
79-80 I2 NTST 0 Code number indicating where in the main program any test output should start
Second PARAMETER card:
1-10 F10.4 ZERCOR 0.0 Zero correction (degrees 2theta), to be added to all lines
11-20 F10.1 PRNTMR 4.0 The minimum figure of merit for which a possible solution will be printed
21-30 F10.0 PRNTLN 14 The minimum number of indexed lines for a possible solution to be printed
Additional Notes for Special Fields in PARAMETER Cards
--- Version 12 ---
* 1st PARAMETER card *
Col 3 **INTENS**
If you want to enter intensities with your line positions you should set intens(col 3) at 1. The line positions and intensities will then be read using the format 8(F7.3,A2,1X), which means that the Intensities are read as characters. You may enter them either quantitatively as a 2-digit figure or qualitatively as vs, w , vw, etc. This field could also be used to mark only the very weak lines or suspected lines. No calculations are carried out with these intensities.
Col 4 **NSOLMX**
NSOLMX is the maximum number of solutions for which a list of (indexed) reflections is printed. The corresponding Q-scheme is only printed when intermediate results are requested (col. 34) and the figure of merit is larger than 4.0.
Cols 5-6, 7-8, 9-10 **NSYST**
When you are reasonably sure that the solution must belong to a specific crystal system, you can indicate this in cols 5-10 (3I2). The columns serve the orthorhombic, monoclinic and triclinic systems respectively. A zero means that you don't wish to interfere with the automatic processing (default case), +1 indicates that you are pretty sure that the correct solution belongs to this crystal system, and -1 means the opposite. This option works only on the last part of the program and doubles the tolerances there. It is only available for orthorhombic, monoclinic and triclinic lattices.
Cols 11-15 **TOL2**, Cols 16-20 **TOL3**
The tolerance on the value of R - the trial value of F used in the search for zones, see Visser (1969) paper, equation 4) is given by TOL2. With very good data (i.e. to 0.01 Degree 2theta) for a fairly large unit cell, you might lower it to 2.5 or 2.0, and for a small unit cell you might increase it somewhat to say 4.0. TOL3 is a similar kind of tolerance, but now on the trial value of Q(D) during the search for lattices (see paper, page 91). Its value can be changed as for TOL2.
Cols 31-32 **LINCO**
LINCO enables you to enter your own line combinations or zones. When LINCO is not zero, the program expects such cards (after the LINES cards and their terminating blank card) to be read in the format (3F10.2,F10.1). Up to 40 such zones or combinations can be specified, terminated by a blank card.
If 3 values are supplied, the program will treat these as a trial zone (i.e. as values of Q(A), Q(B) and Q(F) expressed in Q-units) and will evaluate it. Where only 2 values are supplied, the program interprets this as a combination of lines to be tried for finding zones. Thus if you want to enter a rectangular zone, its third constant must be set explicitly to a near-zero value (0.08), otherwise the program will treat it as a line combination. To force such a specified zone to get included in the search for complete lattices, also provide a high quality figure (the fourth field on the card) - a single digit in col. 31 will ensure a high quality figure.
If the program does not find the solution automatically in its first run, it can often be helped by adding zones in this way. Zones which are correct, although having a low quality figure, can sometimes be recognised in the list of intermediate results (requested via K, in col.34 of the first PARAMETER card) by their small area (i.e. large Q(A) and Q(B)) and good coverage near the origin (i.e. most of the low angle calculated lines have been matched with observed lines). Zones known to be present from studies of oriented specimens or fibres, or from electron diffraction, can also be inserted. N.B. The program will skip its own automatic zone-finding operations whenever this option is used, so take care to provide enough zones (or line combinations) to feed the next stage of the computations.
Col 33 ***LZERCK***
You can also ask the program to perform a preliminary check on zero errors (col. 33). The comments in the subroutine give more information on this.
Col 43-44 **NR**
To enter a number of trial lattices of your own for refinement and evaluation, make NR positive. The program will then expect cards with trial lattices after the LINES cards (and its terminating blank card). There should be 6 data items per card (format 6F10.2) - the coefficients A,B,C,D,E and F (i.e. Q(A),Q(B),Q(C),Q(D),Q(E) and Q(F)) of the quadratic-form equation:
Q = h*h*A + k*k*B + l*l*C + k*l*D + l*h*E + h*k*F
where Q=10000/(d*d) and d is the interplanar spacing in Angstroms. You may also give the trial lattice as a direct lattice with 6 constants in Angstroms and (decimal) degrees. The set of trial lattices is terminated by a card with zero or blank in cols 1-10.
Cols 47-48 **LIST**
By default for the best solution only, the program will produce a list of all observed and calculated lines, sorted on 2theta, unless it would be too long (more than 100 calculated lines). To obtain such a list for more solutions, enter the desired number in col. 48. You can also suppress this output completely by making LIST negative (default=1).
Cols 71-78 **TOLG**
TOLG is the tolerance on the fit between observed and calculated lines. It is expressed in hundredths of a degree 2theta. Thus the default value of 6.0 means that a difference of 0.060 Degrees 2theta between calculated and observed lines causes that indexing to be just acceptable. TOLG applies to both the zone and lattice searches, and also to the lattice refinement. For very accurate data it can be advantageous to lower TOLG to 4.0 or 3.5. Correspondingly for inaccurate data it can be increased, but be aware that such data is usually not worth processing unless the cell is very small.
Cols 79-80 *NTST**
This parameter is provided for the use of experienced users and implementors only, to be used in conjunction with the TEST parameter to assist with diagnostic work. It is not needed in normal use.
Bulky TEST output can thus be limited to the subroutine where it is really needed it, by specifying a value for *NTST* in column 80 of the first PARAMETER card (see comments in the subroutine for further directions). To have the diagnostic output to continue from the specified point until the end of the program, multiply the desired number by 11 and use columns 79 and 80 of the first parameter card (e.g. type 88 if the last section of the program is to be monitored).
* 2nd PARAMETER card *
Cols 1-10 **ZERCOR**
The program applies this correction to all lines. The specified value is added to the 2theta values of the lines (i.e. without any change of sign). It must be given in degrees 2theta regardless of the format of the LINES cards, so that e.g. a value of -0.052 causes 0.052 Degrees to be subtracted from the 2theta values of all lines, even if you entered them as d-values.
Cols 11-20 **PRNTMR**
The program does not print any lattices that have a figure of merit that is below PRNTMR. The default value is 4.0, which must be considered as an absolute minimum for a lattice that has a chance to improve its performance.
R.Shirley comment: This is indeed very much a minimum, and in practice is way too low, though other limitations on the number of solutions that are printed out prevent it from becoming too much of an embarrassment. However be aware that in practice, for properly measured laboratory data, correct solutions will usually give a figure merit of at least 20, and only rarely less than 10. For synchrotron data, expect figures of merit of 60+ and be suspicious of values that are much lower unless there are specimen problems such as asymmetric line broadening, overlaps due to a very large cell, etc.
COL 21-30 **PRNTLN**
The program does not print out any solutions that have less than PRNTLN indexed lines among the first 20 observed lines (default 14). Trial solutions with such a low number of indexed lines may be a sublattice of the true lattice. However, in general a lattice can only be considered as a satisfactory solution when it explains all observed lines.
R.Shirley comment: Trial solutions with a low number of indexed lines are usually worthless, but it's true that they may sometimes contain a sublattice of the true lattice, and so merit further examination, especially if the fit is very close for that subset of lines that are indexed (and these don't mostly belong to a single zone, in which case only the three parameters that define the zone are correct, and not the whole lattice).
A useful strategy is to improve the observed data by using lines for which 2 or more orders have been observed. The lowest orders can be replaced by a more accurate value calculated from the higher orders, and sometimes unobserved first or second order lines can be inferred and added to the observed pattern. Low order absences in well-established zones can be filled in a similar way. Multiple orders can also be used to check for zero errors in 2theta.
See also subroutine ZERCHK.
R.Shirley comment: Also consider trying the self-calibration procedure implemented in my CRYS program, available in the CRYS2RUN powder indexing suite at the CCP14 web-site (or from me directly). This uses lines with second orders to infer a 2theta zero correction via a fast-converging non-linear iterative formula. The theory is outlined in the review paper: Shirley, R. (1980), Data accuracy for powder indexing, in NBS Spec. Publ. 567, 361-382 (self-calibration is covered in section 4.3, pp.371-372).
Documentation Embedded within FORTRAN Comment Lines
This final section reproduces the block of FORTRAN comment lines at the front of the source code of the ITO12 program. It contains a brief summary of the input data formats, followed by an outline of the program's internal structure (essentially of interest only to programmers and those needing to adapt the ITO12 program to new compilers and machine environments).
C LAST CHANGE 250386 ADDED OUTPUT ON NSUMM (COMPL. LATT.9801)
C----THE FIRST CARD MUST CONTAIN THE NAME OF THE PROBLEM (TITLE).
C THE NEXT CARDS ARE USUALLY COMPLETELY BLANK. THE PROGRAM
C THEN TAKES THE DEFAULT VALUES.. IF YOU WANT TO SPECIFY YOUR
C OWN PARAMETERS, YOU SHOULD DO THIS AS FOLLOWS:
C COLUMN FORMAT NAME DEFAULT MEANING
C 1 A1 MAN 0 PRINTS INSTRUCTIONS,UNLESS MAN=9
C 2 A1 INSTR 0 PRINTS INSTRUCTIONS FOR SPECIAL
C FEATURES IF INSTR=1
C 3 A1 INTENS 0 READS INTENSITIES BESIDES LINE
C POSITIONS IF INTENS=1
C 4 I1 NSOLMX 4 MAXIMUM NR OF SOLUTIONS TO BE PRINTED
C 5- 6 I2 NSYST(1) 0 ORTHORHOMBIC SOLUTION. +1=YES, -1=NO
C 7- 8 I2 NSYST(2) 0 MONOCLINIC SYSTEM. 0 MEANS INDIFF
C 9-10 I2 NSYST(3) 0 TRICLINIC SYSTEM
C 11-15 F5.2 TOL2 3.0 TOLERANCE ON 2-DIMENSIONAL SEARCH
C 16-20 F5.2 TOL3 4.5 TOLERANCE ON 3-DIMENSIONAL SEARCH
C 21-30 F10.5 WAVEL 1.54060 WAVELENGTH
C 31-32 I2 LINCO 0 NUMBER OF GIVEN LINE COMBINATIONS
C FOR THE 2-DIMENSIONAL SEARCH
C IF LINCO>0, THE LINECOMBINATIONS ARE
C READ (4F10.2) AFTER THE LINES DECK.
C TERMINATION BY A BLANK CARD (OR ZERO
C 33 I1 LZERCK 0 CHECK ON ZERO-ERROR IF LZERCK>0
C 34 I1 K (ENL) 0 ENL: OUTPUT OF INTERMEDIATE RESULTS(
C 35-36 I2 NQ1 3 NQ1 AND NQ2 DETERMINE THE NUMBERS OF
C 37-38 I2 NQ2 6 LINES TO BE USED IN COMBINATIONS
C FOR FINDING ZONES .
C 39-40 I2 NZ1 6 NZ1 AND NZ2 DO THE SAME FOR
C 41-42 I2 NZ2 6 FINDING LATTICES FROM ZONES.
C 43-44 I2 NR 0 REFINEMENT AND EVALUATION RUN ONLY
C IF NR>0. THE DECK OF COMPLETE
C LATTICES TO BE REFINED (6F10.2)
C MUST FOLLOW THE LINES DECK, ALSO
C TERMINATED BY A CARD WITH ZERO OR
C BLANKS IN COLS 1-10.
C 45-46 I2 INDAT 5 NUMBER OF THE UNIT ON WHICH TO READ
C THE LINE POSITIONS.
C 47-48 I2 LIST 1 LIST OF CALCULATED LINES FOR THE FIR
C *LIST* LATTICES. SUPPRESS: LIST=-1
C 49-50 I2 J (TEST) 0 TEST OUTPUT IF J .GT. 0
C 51-60 F10.5 WMOL 0.0 MOLECULAR WEIGHT.
C 61-70 F10.5 DOBS 0.0 OBSERVED DENSITY.
C 71-78 F8.5 TOLG 6.0 TOLERANCE ON MATCH BETWEEN CALCULATE
C AND OBSERVED LINES IN HUNDREDTH OF.
C A DEGREE TWOTHETA.
C 79-80 I2 NTST 0 THE NUMBER IN THE MAIN PROGRAM
C WHERE TEST OUTPUT IS GIVEN.
C ON THE NEXT CARD, THE FOLLOWING PARAMETERS SHOULD BE ENTERED
C 1-10 F10.5 ZERCOR 0.0 ZEROSHIFT, TO APPLY TO ALL LINES.
C 11-20 F10.5 PRNTMR 4.0 THE MINIMUM VALUE OF THE FIGURE
C OF MERIT OF A LATTICE TO BE PRINTED.
C 21-30 F10.5 PRNTLN 14. THE MINIMUM NUMBER OF INDEXED LINES
C FOR A LATTICE TO BE PRINTED.
C 31-40 F10.5 RMAX 0. THE NUMBER OF LINES, ENTER AS REAL.
C ONLY NECESSARY WHEN 20.<RMAX<33. --
CDC PROGRAM ITO(INPUT,OUTPUT,WRIT,TAPE5=INPUT,TAPE6=OUTPUT,
CDC 2 TAPE4=WRIT)
C THIS PROGRAM WAS WRITTEN BY
C J.W. VISSER
C OF THE TECHNISCH PHYSISCHE DIENST TNO-TH
C P.O.BOX 155 DELFT NETHERLANDS.
C IT CONTAINS MANY IDEAS AND SUGGESTIONS FROM
C PROF.DR. P.M. DE WOLFF
C OF THE TECHNICAL UNIVERSITY (T.H) DELFT.
C A DESCRIPTION OF THE PROGRAM WAS PUBLISHED IN
C JOURNAL OF APPLIED CRYSTALLOGRAPHY.(1969) 2,89.
C THIS WORK WAS LARGELY SPONSORED BY THE
C JOINT COMMITTEE ON POWDER DIFFRACTION STANDARDS
C NOW AT 1601 PARK LANE, SWARTHMORE, PA. 19081
C AND THE CENTRAL ORGANIZATION FOR TNO, THE HAGUE,
C THE PURPOSE OF THE PROGRAM IS TO FIND THE UNIT CELL FROM
C THE POWDER PATTERN OF COMPOUNDS OF LOW SYMMETRY.
C ONE- AND TWO- PARAMETER PROBLEMS CAN BE SOLVED BY SIMPLER
C THANKS ARE DUE TO ROBIN SHIRLEY OF THE UNIVERSITY OF SURREY
C WHO CONTRIBUTED MANY EXCELLENT IDEAS AND ALSO MADE THE OUTPUT
C MUCH BETTER UNDERSTANDABLE,
C DR. GERALD G. JOHNSON JR. OF THE PENNSYLVANIA STATE UNIVERSITY
C FOR MANY EXCELLENT IDEAS, SOME AS A RESULT FROM FEEDBACK BY USERS
C IN THE U.S.A. TO WHOM HE DISTRIBUTED THIS PROGRAM, AND FOR
C FORCING ME TO WRITE THIS PROGRAM IN A STANDARD (ANSI) LANGUAGE.
C THIS PROGRAM HAS PASSED THROUGH SEVERAL VERSIONS AND HAS
C FOUND THE CORRECT UNIT CELL IN A LARGE NUMBER OF CASES. IT IS
C POSSIBLE, HOWEVER, THAT UNDER SOME CIRCUMSTANCES, WITH A PARTICULAR
C SET OF DATA, OR WHEN USED WITH A PARTICULAR COMPUTER SYSTEM,
C ERRONEOUS RESULTS WILL BE OBTAINED.
C THE AUTHOR, THE TECHNISCH PHYSISCHE DIENST TNO-TH, OR THE
C JOINT COMMITTEE ON POWDER DIFFRACTION STANDARDS, THEREFORE, TAKE
C NO RESPONSIBILITIES WHATSOEVER FOR THE CORRECTNESS OF THE
C PROGRAM OR THE RESULTS.
C IT WOULD BE APPRECIATED IF ANY DISCREPANCIES IN THE PROGRAM
C ARE BROUGHT TO THE ATTENTION OF THE AUTHOR, FOR IMPROVEMENTS IN
C LATER VERSIONS.
C VERSION 12 APRIL 1986
C VERSION 1
C TRIALS TO MAKE THE FORTRAN PROGRAM EQUIVALENT TO
C THE PL/I PROGRAM.
C VERSION 2
C PROVISIONS FOR MOLECULAR WEIGHT AND DENSITY.
C PRINT-OUT OF INPUT CARDS.
C VERSION 3
C ADDITION OF THE PROCEDURE SYMTST (TESTING ON
C HIGHER SYMMETRIES) AND LESSER IMPROVEMENTS.
C VERSION 4.
C ADAPTATIONS TO AVOID DIFFICULTIES ENCOUNTERED ON
C OTHER MACHINES (INCLUDING OTHER IBM-MACHINES).
C INTRODUCTION OF SUBROUTINE ECHO IN CONNECTION
C WITH BACKSPACE DIFFICULTIES.
C MINOR CHANGES IN THE OUTPUT.
C SUBROUTINES IN ALPHABETICAL ORDER.
C VERSION 5
C INSTRUCTION MANUAL
C IMPROVED OUTPUT TEXT.
C MORE TESTS ON INPUT.
C TESTING ON HIGHER SYMMETRIES IMPROVED.
C AN EFFORT HAS BEEN MADE TO COMPLY WITH THE REQUIREMENTS
C OF *ANSI* FORTRAN. THIS WAS NOT EVERYWHERE POSSIBLE.
C VERSION 6
C MANY WISHES FROM USERS FULFILLED.
C DISCLAIMERS, BOTH IN COMMENT ON MAIN AND IN OUTPUT.
C MIXED-MODE ARITHMETIC REMOVED.
C SUBROUTINE WRISP REWRITTEN FOR FASTER PRINTING.
C POSSIBILITY TO PRINT AN INSTRUCTION MANUAL ON THE
C SPECIAL FEATURES OF THE PROGRAM.
C POSSIBILITY TO ENTER INTENSITIES WITH THE LINES.
C POSSIBILITY TO PRODUCE A LIST OF ALL CALCULATED AND
C OBSERVED LINES.
C POSSIBILITY TO ENHANCE CERTAIN CRYSTAL SYSTEMS. DUE TO
C THE GENERAL CONSTRUCTION OF THE PROGRAM, THIS IS ONLY
C POSSIBLE FOR ORTHORHOMBIC,MONOCLINIC OR TRICLINIC
C PROBABILITY TO *HIT* A LINE IS SUBDIVIDED OVER THE
C Q RANGE. CHANGES IN CRITER.
C ERROR LIMITS ON OBSERVED Q'S CALCULATED ONCE. DISPLAYED
C WHEN TEST=.TRUE.
C OVERLAYS TESTED.
C VERSION 7
C ALL A-FORMATS REDUCED TO A1, EXCEPT THOSE THAT PRINT
C INTENSITIES IN CHARACTER FORM (A3)- THESE OCCUR ONLY
C IN *READER*, *LISTM* AND *REFINE* .
C TRIES TO INDEX ALL LINES WITH THE UNIT CELL OF
C THE BEST SOLUTION.
C INSTRUCTIONS REWRITTEN, OTHER EXPLANATIONS EXTENDED.
C THE USE OF ONE SET OF HKL'S TO EXPLAIN MORE THAN
C ONE OBSERVED LINE IS FLAGGED.
C NUMBER OF SOLUTIONS THAT ARE PRINTED OUT EXTENSIVELY
C CAN BE CHANGED.
C VERSION 8
C INPUT FORMAT CHANGED-- ADDITIONAL PARAMETER CARD.
C ZERO SHIFT (SPECIMEN DISPLACEMENT+TRANSPARENCY
C CORRECTION ON DIFFRACTOMETER)--THE NEW PARAMETER CARD
C STARTS WITH THE ZERO CORRECTION (ZERCOR), TO BE
C APPLIED TO ALL ANGLES.
C ZERCHK-- THE PROGRAM APPLIES 20 DIFFERENT ZERO SHIFTS
C AND GIVES FOR EACH SHIFT THE NUMBER OF HIGHER ORDER
C LINES THAT FIT-- IN THIS WAY IT SHOULD BE POSSIBLE
C TO DECIDE WHETHER A ZERO SHIFT IS NECESSARY.
C ONLY SOLUTIONS WITH A FIGURE OF MERIT THAT IS BETTER
C THAN 4.0 ARE PRINTED--YOU MAY SET YOUR OWN MINIMUM
C WITH PRNTMR.
C WITH PRNTLN YOU CAN SET YOUR OWN MINIMUM OF INDEXED
C LINES THAT IS NEEDED IN ORDER THAT THE LATTICE
C WILL BE PRINTED.
C FOR TRIAL, IT IS NOW POSSIBLE TO ENTER A DIRECT CELL.
C COMBINATIONS OF ZONES WITH ITSELF NOW TRIES BOTH AXES
C AS 'COMMON' AXES.
C THE NUMBER OF CYCLES OF LATTICE REFINEMENT IS INCREASED.
C *REFPAR* IS SPLIT INTO TWO SUBROUTINES,ONE OF WHICH
C (REFPAR) SETS THE PARAMETERS FOR THE OTHER (REFINE)--
C THE LATTER SUBROUTINE DOES THE ACTUAL CALCULATIONS.
C TOLERANCES ON FITTING LINES NOW EXPRESSED IN TWO THETA.
C A(3) FORMATS CHANGED INTO A(2),1X.
C VERSION 8.5
C THE MAIN PROGRAM IS NOW SPLIT INTO 3 PARTS,AABITO,
C AAITO1 AND ANITO2-- THE NEW MAIN PROGRAM (AABITO)
C COMMENTS, INITIALISES SOME VALUES AND CALLS READER, AAITO1
C AND ANITO2.
C ZERCHK IS NOW OPTIONAL (COL. 33 IN PARAMETER CARD).
C THE SUBROUTINE *NTEST* LIMITS THE TEST OUTPUT TO
C A SMALL PART OF THE PROGRAM, OR PRINTS ALL TEST OUTPUT
C AFTER A CERTAIN POINT-- THE COMMENT IN THE SUBROUTINE
C GUIDES YOU TO THE ACTUAL CALLS-- THE SUBROUTINE IS ONLY
C USEFUL WHEN YOU ARE CHANGING PARTS OF THE PROGRAM.
C LATTICES THAT ARE DISCARDED IN *NORM3* ARE NOW
C EXPLICITLY NAMED-- ALSO NAMED ARE THE LATTICES THAT ARE
C DISCARDED BECAUSE THEY ARE *EQUAL* TO OTHERS.
C VERSION 9
C SUBROUTINE READER WAS SPLIT IN TWO PARTS, READER AND
C REDLIN. THIS LAST SUBROUTINE READS THE INPUT LINES. IT
C ALSO CALCULATES THE MAXIMUM ERROR (IN TWO THETA) THAT
C YOUR INPUT DATA COULD HAVE IN ORDER TO BE ABLE TO PASS
C THE TESTS (FIGURE OF MERIT .GT. 10)--
C TWICE THIS MAXIMUM ERROR IS USED AS THE DEFAULT TOLG,
C BUT ONLY IF TOLG REMAINS LESS THAN 0.060 DEGREES. --
C ENTERING YOUR OWN TOLG OVERRIDES THE DEFAULTS.--
C IN THE LIST OF ALL CALCULATED AND OBSERVED LINES,
C THE UNINDEXED LINES ARE NOW MARKED CONSPICUOUSLY (IDEA
C FROM CAM HUBBARD)--
C THE FATE OF THE POSSIBLE LATTICES IS PRINTED IN FULL,
C BUT ONLY IF YOU PRINT INTERMEDIATE RESULTS (ENL=TRUE)--
C THE MINIMUM VALUES OF THE RECIPROCAL LATTICE CONSTANTS
C NOW ALLOWS THE FIRST LINE TO BE A FOURTH ORDER. IN AN
C EXPERIMENTAL PATTERN, WHICH WAS ORTHORHOMBIC WITH
C SPACEGROUP FDD2, THIS SITUATION ACTUALLY OCCURRED ---
C VERSION 10 (A)
C FORTRAN 77
C MODIFIED TO CONCUR WITH FULL FORTRAN 77.THIS ALLOWED A
C SIMPLER VERSION OF SUBROUTINE ECHO.--
C EXPLANATION OF THE VARIABLES IN COMMON BLOCKS IS
C GIVEN IN THIS PROGRAM (BELOW). --
C INDIVIDUAL PROBABILITIES FOR EACH LINE (FOR FINZON).--
C CRITER CHANGED TO CONCUR WITH EARLIER IDEAS.--
C SORTING OF ZONES IN THE NEW SUBROUTINE *SRTZON* --
C THE OUTPUT OF EVALUATE IS SORTED ON THE CRITERION
C CRIT, BUT IF NO CORRECT LATTICE IS OBTAINED, IT IS USED
C AGAIN BUT SORTED ON THE NUMBER OF OBSERVED LINES (NO)
C THAT MATCH THE ZONE. A SUBSORT IS MADE ON THE NUMBER OF
C CALCULATED LINES (NC). THIS SOMETIMES LEADS TO SUCCESS.--
C THE PAPER BY MIGHELL AND STALICK IN 'ACCURACY IN POWDER
C DIFFRACTION' HAS CONVINCED ME THAT IT IS NECESSARY TO
C ENSURE THAT ALL AVAILABLE DATA (UP TO 40 LINES) IS
C ENTERED INTO THE PROGRAM.
C IF YOU NOW WANT TO ENTER LESS THAN 32 LINES, YOU GET A
C WARNING AND YOU HAVE TO ENTER THE CORRECT NUMBER OF LINES
C ON THE SECOND PARAMETER CARD.--
C A TRIAL WAS MADE IN REFINING THE ZONES ON THETA
C INSTEAD OF Q. THIS DID NOT WORK AS WELL AS REFINING ON Q.
C THEREFORE, ONLY THE BEST ZONES ARE (AT THE END OF THE
C EVALUATION PROCESS) REFINED ON THETA IN ORDER TO
C ESTABLISH A ZERO-SHIFT FOR EACH ZONE.
C SINCE I DO NOT KNOW YET HOW USEFUL THIS CAN BE, NOTHING
C MUCH IS BEING DONE WITH IT. IF YOU WANT TO, YOU CAN
C USE THE INFORMATION BY ENTERING A CONVINCING
C TWOTHETA-SHIFT INTO THE PROGRAM (REVERSE THE SIGN STATED
C AND ENTER ON SECOND PARAMETER CARD IN COL 1-9). --
C LATTICES ARE ALSO REFINED ON TWOTHETA, TOGETHER
C WITH A ZERO SHIFT. THE ZERO SHIFT IS STORED IN
C ROSTER(I,11) AND PRINTED.
C VERSION 11
C ECHO CHANGED FOR THE USE OF *IOSTAT*. --
C PRINTING OF Q-SCHEMES FOR THE LATTICES ONLY
C WHEN TEST=TRUE. --
C INSTRUCTIONS CLARIFIED. --
C INPUT OF 32 LINES AND LESS WITHOUT DIFFICULTY AGAIN,
C BUT WITH AMPLE WARNING. --
C FINAL SORTING OF LATTICES ON: M20/(21-LINES INDEXED).--
C A BIBLIOGRAPHY WAS ADDED IN THE TEXT OF THE NEW ROUTINE
C BIBLIO. IT IS ANNOUNCED IN THE PROGRAM OUTPUT. --
C THE NAME OF SUBROUTINE SRTRON WAS CHANGED INTO SRTLIN. --
C CARDS (RECORDS) NO LONGER NUMBERED. --
C FOR *EXPORT* PURPOSES THE PROGRAM PLUS SUBROUTINES WAS
C DIVIDED INTO 6 FILES OF ABT. 820 RECORDS EACH. --
C VERSION 12
C OUTPUT OF A SUMMARY OF THE DATA OF THE BEST SOLUTION ON
C UNIT NSUMM (66). THE LENGTH OF THE LINES IN THIS OUTPUT
C IS RESTRICTED TO 70 CHARACTERS. --
C SOMETIMES A MONOCLINIC LATTICE IS FOUND TO BE A
C RHOMBOHEDRAL LATTICE IN DISGUISE. A REFINEMENT OF THE
C HEXAGONAL LATTICE CONSTANTS IS NOW CARRIED OUT IN THE
C NEW SUBROUTINE *REFSYM* , FOLLOWED BY A PRINT-OUT OF
C THE PATTERN AS INDEXED ON HEXAGONAL AXIS. --
C TETRAGONAL,HEXAGONAL AND CUBIC LATTICES ARE ALSO
C RECOGNISED AND REFINED AS SUCH. THEY ARE PRINTED BY
C THE NEW SUBROUTINE *SYMPRT*. --
C INPUT AND OUTPUT
C THE INPUT OF THE PROGRAM IS ON UNIT *INP*,
C THE OUTPUT IS ON UNIT *IOUT*.
C THE SUBROUTINE *ECHO* WRITES THE CARD IMAGES OF THE INPUT ON
C AN EXTRA OUTPUT FILE, *IDOC* (IDOC=14).
C THIS EXTRA FILE IS ONLY USED IN *ECHO*
C OUTPUT OF A SUMMARY ON UNIT 66.
C IDOC, INP,IOUT AND NSUMM ARE SET TO RESP. 14,15,16,66 IN THIS MAIN
C IF OTHER NUMBERS OF UNITS ARE WANTED, THESE CAN BE ENTERED THERE.
C THE INPUT OF THIS PROGRAM SHOULD CONSIST OF:
C 1. A TITLE CARD,CONTAINING UP TO 80 CHARACTERS
C 2. TWO PARAMETER CARDS,THAT CAN BE COMPLETELY BLANK
C 3. A NUMBER OF LINES CARDS, CONTAINING THE POSITIONS OF THE LINES
C THESE CAN BE ENTERED AS D-,Q- OR TWOTHETA VALUES. ( 8 F10.5 )
C YOU MAY LEAVE ANY NUMBER OF POSITIONS PER CARD BLANK.
C THIS MEANS THAT YOU CAN ALSO ENTER ONLY ONE LINE PER CARD,
C IN ANY ONE OF THE POSITIONS OF 8F10.5
C 4. A BLANK CARD, TO FINISH THE INPUT OF ONE PROBLEM.
C REPEAT THE ABOVE AS MANY TIMES AS PROBLEMS, -- THEN --
C 5. A CARD CONTAINING THE WORD -- END -- IN THE THREE FIRST
C COLUMNS, TO FINISH THE INPUT.
C THE PROGRAM WILL TAKE ITS OWN (DEFAULT) PARAMETERS.
C FOR THE INITIATED THE SUBROUTINE READER GIVES FULL DETAILS ABOUT
C ALL THE POSSIBILITIES OF THE PROGRAM.
C THE SUBROUTINES ARE LISTED IN ALPHABETICAL ORDER.
C GENERAL FLOW OF SUBROUTINES
C (THE ACTUAL FLOW OF SUBROUTINES IS SLIGHTLY MORE COMPLICATED)
C SUBROUTINES TIMER AND NTEST ARE FREQUENTLY CALLED BY THE
C MAIN PROGRAM. NTEST CALLS ARE MARKED BY 1+ , 2+ , ETC.
C ******* ******* **********
C * * * * <-------> * ECHO * ********
C * M * * R * ********** |--> *SRTLIN*
C * * * * <-------> * REDLIN * <-| ********
C 1+* A * <--------> * E * ********** |--> *TETCAL*
C * * * * <-------> * RECCEL * ********
C * I * * A * **********
C * * * * <-------> * MANUAL *
C * N * * D * **********
C |--->* * * * <-------> * INSTRS *
C | ******* * E * **********
C | | * * <-------> * ZERCHK *
C | | * R * **********
C | | * * <-------> * BIBLIO *
C | | ******* **********
C | |
C | 2+******* **********
C | * * <-------> * FINZON *
C | * * **********
C | * A *
C | * * ******* ****** *********
C | * * * * <------> * LS * <----> * WRISP *
C | * * * E * ****** *********
C | * A * * V * ********
C | * * * A * <------> * NORM *
C | * * <-------> * L * ********
C | * * * U * **********
C | 3+* I * * 8 * <------> * CRITER *
C | * * * * **********
C | * * * * *********
C | * * ******* <------> * TEXT1 *
C | * * *********
C | * T * **********
C | * * <-------> * SRTZON *
C | * * **********
C | 4+* *
C | * O * **********
C | * * <-------> * ONEZON *
C | * * **********
C | * *
C | * 1 *
C | * * ********
C | 5+* * <-------> * REAR *
C | ******* ********
C | ******* **********
C |--->* * <-------> * THREED *
C * * **********
C 6+* *
C * * ********* **********
C * * <-------> * NORM3 * <------> * WISSEL *
C * A * ********* **********
C * *
C 7+* *
C * *
C 8+* * ******* ******* **********
C * N * * * * * <------> * *
C * * * R * * R * **********
C * * * * * * *********
C * * * E * * E * <------> * WRISP *
C * * * * * * *********
C * I * <----> * F * <----> * F * *********
C * * * * * * <------> * ARRAY *
C * * * P * * I * *********
C * * * * * * ********
C * * * A * * N * <------> * MINV *
C * T * * * * * ********
C * * * R * * E * *********
C * * * * * * <------> * LISTM *
C * * ******* ******* *********
C 9+* *
C * O * **********
C * * <-------> * UNTCEL *
C * * **********
C * *
C * 2 * ********** **********
C * * <-------> * SYMTST * <-----> * REFSYM *
C * * ********** **********
C * *
C * * **********
C * * <-------> * SRTSYM *
C * * **********
C * * **********
C * * ********** <-----> * LISTM *
C * * <-------> * SYMPRT * **********
C * * ********** <-----> * REFSYM *
C * * **********
C MINIMISING STORAGE REQUIREMENTS.
C ONLY VALID FOR VERSION 6.
C FOR NEWER VERSIONS IT CAN SERVE AS A GUIDE.
C 1. OVERLAY.
C THE SUGGESTED OVERLAY STRUCTURE NEEDS ONLY ABOUT 60%
C OF THE STORAGE NEEDED FOR THE FULL PROGRAM,
C WITHOUT IMPAIRING ITS EFFICIENCY.
C THE SUBROUTINES *FINZON* AND *THREED* HAVE THE
C LARGEST REQUIREMENTS FOR MAIN STORAGE. THEREFORE, IT IS
C NOT NECESSARY TO GO BEYOND ONE LEVEL OF OVERLAY.
C I SUGGEST THE FOLLOWING SCHEME
C ENTRY MAIN COMMENT* ROOT SEGMENT, SEGMENT 1
C OVERLAY ONE
C INCLUDE SUB(READEM) COMMENT* SEGMENT 2
C OVERLAY ONE
C INCLUDE SUB(FINZON) COMMENT* SEGMENT 3
C OVERLAY ONE
C ETC. ETC. ETC.
C SEGMENT CONTENTS
C 1 MAIN + COMMONS, EXCEPT *COUNTM*
C 2 READER+ECHO+MANUAL+INSTRS+SRTLIN
C 3 FINZON
C 4 EVALU8+LS+WRISP+NORM+CRITER+TEXT1
C 5 ONEZON+REAR
C 6 THREED
C 7 NORM3
C 8 REFPAR+WISSEL+ARRAY+MINV+LISTM+ *PRINS*
C 9 UNTCEL+SYMTST
C THE FOLLOWING CHANGES ARE NECESSARY
C A.DELETE THE COMMON *COUNTM* THROUGHOUT THE PROGRAM,
C USE AN ARRAY *ITL(5000)* INSTEAD OF THIS COMMON
C IN THE SUBROUTINES *FINZON* AND *THREED*
C B.DELETE THE SUBROUTINE CALL FOR *NORM3* FROM *REFPAR*
C INSERT A CARD 95 CONTINUE
C C.CHANGE THE NAME OF THE SUBROUTINE *WRISP* IN *REFPAR*
C INTO SOMETHING DIFFERENT, LIKE *PRINS* AND CHANGE THE
C FOUR SUBROUTINE CALLS FOR *WRISP* IN *REFPAR*
C THE CALL FOR *NORM3* IN *REFPAR* IS ONLY SELDOM
C REALLY NECESSARY, HOWEVER,
C IF THE RESULTS OF A PARTICULAR POWDER PATTERN SEEM STRANGE
C TO YOU, YOU CAN ALWAYS FORCE ANOTHER APPLICATION OF *NORM3
C BY RE-ENTERING YOUR DATA AND THE STRANGE LATTICES,
C SEE MANUAL AND INSTRUCTIONS, USE COL 44 OF PARAMETER CARD
C 1B OVERLAY 2.
C ON AN IBM 370/158 THE PROGRAM RAN IN 84K INSTEAD OF 140
C AND WITHOUT MEASURABLE LOSS OF SPEED WITH THE FOLLOWING
C A. COMPILE THE PROGRAM AS GIVEN WITH PARM.LKED=OVLY
C B.GIVE LKED.SYSIN DD *
C ENTRY MAIN
C INSERT MAIN
C OVERLAY ALPHA
C INSERT READER,MANUAL,ECHO,INSTRS,SRTLIN,IHCSSCN
C OVERLAY ALPHA
C INSERT FINZON,THREED,COUNTM
C OVERLAY ALPHA
C INSERT EVALU8,LS,NORM,CRITER,TEXT1,EVALN,LINSTR,IHCSE
C INSERT REFPAR,WISSEL,WRISP,ARRAY,MINV,NORM3,LISTM
C OVERLAY ALPHA
C INSERT ONEZON,REAR,UNTCEL,SYMTST
C 2. CHOPPING UP THE PROGRAM.
C IF YOU HAVE A REALLY SMALL COMPUTER, IT IS STILL
C POSSIBLE TO RUN THIS PROGRAM.
C AS THE PROGRAM USES ITS MAIN SUBROUTINES SEQUENTIALLY,
C IT IS POSSIBLE TO IMITATE AN OVERLAY AND DIVIDE THE MAIN
C PROGRAM IN A NUMBER OF PIECES THAT WILL WORK AS
C SEPARATE UNITS. AFTER EVERY PART IT WILL BE NECESSARY
C TO SAVE THE VALUES OF MOST COMMON AREAS AND OF THE
C ARRAY *STORE*. THE DIVISION OF THE PROGRAM SHOULD
C FOLLOW THE SAME MAIN LINE AS THE OVERLAY STRUCTURE.
C I HAVE NOT TRIED THIS MYSELF, AS I HAVE A VERY LARGE
C COMPUTER AVAILABLE. I AM QUITE WILLING TO HELP ANYBODY
C WHO TRIES THE ABOVE IDEA. PLEASE CONTACT ME .
C EXPLANATION OF VARIABLES IN COMMON.
C IDOC OUTPUT FILE FOR DOCUMENTATION PURPOSES. LISTS INPUT
C AS GIVEN
C INP INPUT UNIT,FROM WHICH ALL INPUT IS READ.
C IOUT STANDARD OUTPUT UNIT (LINE PRINTER)
C (NSUMM OUTPUT UNIT FOR CRT-TERMINAL IS IN COMMON CONSTS)
C MAX THE NUMBER OF OBSERVED LINES THAT ARE USED (.LE. 40)
C OBS(40) CONTAINS THE Q-VALUES OF THE OBSERVED LINES.
C CEL(10) USED FOR SEVERAL PURPOSES, CAN CONTAIN UNIT CELLS
C OR LINE COMBINATIONS OR ZONES.
C 2. CHARCM
C NAME NAME OF PROBLEM.
C CARD CONTAINS THE IMAGE OF THE 'CARD' THAT WAS LAST READ.
C INTSY(50) CONTAINS THE INTENSITIES (GIVEN AS VS , S , ETC.)
C OF THE OBSERVED LINES.
C 3. PARMS
C TOL2 TOLERANCE ON 2-DIMENSIONAL SEARCH FOR THE ANGLE BETWEEN
C THE DIRECTIONS OF THE POINTS REPRESENTED BY Q-VALUES.
C TOL3 SAME FOR THREE-DIMENSIONAL SEARCH (FOR D)
C WAVEL WAVELENGTH (1.5406 BY DEFAULT)(1.5405891)
C FMINEQ MAXIMUM VALUE FOR THE DIFFERENCE BETWEEN 'EQUAL' VALUES.
C FMINIM MINIMUM VALUE FOR THE FIRST THREE LATTICE CONSTANTS.
C SELF LOGICAL
C ENL LOGICAL FOR PRINTING INTERMEDIATE RESULTS.
C TEST LOGICAL FOR PRINTING ALL TEST RESULTS.
C LIST THE NUMBER OF LATTICES THAT ARE TO BE PRINTED OUT
C NSYST(3) SEE INSTRUCTIONS. POSSIBILITY TO ENHANCE SOME CRYSTAL
C OBSMT(40) Q-VALUES OF THE OBSERVED LINES MINUS TOLERANCE.
C OBSPT(40) Q-VALUES OF THE OBSERVED LINES PLUS THE TOLERANCE.
C TWTHET(40) TWO-THETA'S OF THE OBSERVED LINES.
C TOLG TOLERANCE (IN HUNDREDTH OF A DEGREE TWO THETA)
C 4. EVALN
C NORDER NUMBER OF ORDERS OF AXES' Q-VALUES, USUALLY 4.
C NORDER DETERMINES THE INDEX-FIELD OF THE ZONES AT
C RECTAN LOGICAL THAT IS .TRUE. WHEN THE ZONE IS RECTANGULAR.
C PROB(40) PROBABILITY TO 'HIT' AN OBSERVED LINE BY CHANCE.
C EVAL(-8:8,0:8) ARRAY CONTAINING THE PROBABILITIES OF THE
C CALCULATED LINES THAT ARE ALSO OBSERVED.
C UPBNDR(40) UPPER BOUNDARY OF THE PROBABILITY FIELD OF EACH LINE.
C 5. TEMRES
C LINCO THE NUMBER OF LINE COMBINATIONS
C NQ2 THE NUMBER OF THE LAST LINE TO BE COMBINED WITH OTHERS.
C NINDEX THE NUMBER OF LINES INDEXED AMONG THE FIRST NQ2 LINES
C INDEX(40) ARRAY TO COUNT WHETHER A LINE WAS INDEXED BY A
C PARTICULAR ZONE.
C ROSTER(150,12) ARRAY IN WHICH THE USEFUL LATTICES ARE STORED.
C 6. CONSTS
C NSUMM NUMBER OF UNIT ONTO WHICH A SUMMARY IS WRITTEN.
C THE LENGTH OF THE LINES IS LESS THAN 71 CHARACTERS.
C RAD,TWORAD FACTORS FOR CALCULATING DEGREES FROM RADIANS.
C RRAD FACTOR TO CALCULATE RADIANS FROM DEGREES (RECIPROCAL)
C HLFLAM WAVELENGTH/(2*100). FACTOR 100 STEMS FROM THE FACT
C THAT Q HAS BEEN MULTIPLIED BY 100**2
C WAVSQR CONSTANT NEEDED FOR CALCULATING DERIVATIVES.
C STORE(200,9) ARRAY TO STORE THE ZONES.
C 7. THETAS --- ALL IN RADIANS ---
C ZERTOT TOTAL ZERO SHIFT OF THE DATA (RADIANS).
C OBSTET OBSERVED THETA.
C SHFTET OBSERVED THETAS, SHIFTED BY THE CALCULATED ZEROSHIFT.
C TETPT OBSERVED THETA PLUS TOLERANCE
C TETMT OBSERVED THETA MINUS TOLERANCE.
C 8. HISYM DATA FOR HIGH-SYMMETRY LATTICES
C ISOL THE NUMBER OF THE SOLUTION
C SYMCON(12,6) ARRAY TO STORE THE CELL CONSTANTS OF THE HIGHLY
C SYMMETRIC LATTICES. 1,2 CELL CONSTANTS,3=CRYSTAL SYSTEM,
C 4=NUMBER OF LINES INDEXED,5=ZEROSHIFT, 6=VOLUME.
C NMATCH(45) ARRAY TO STORE THE NUMBER OF CALCULATED LINES THAT
C MATCH EACH OBSERVED LINE.
C 9. COUNTM
C ITL(0:5000) ARRAY TO FIND THE VALUES OF *F* AND *D* .
C IT IS NOT NECESSARY TO PUT THE ARRAY(S) IN A COMMON,
C BUT IT SAVES SPACE.