ITO Documentation (from source code)
THIS PROGRAM WAS WRITTEN BY
J.W. VISSER
OF THE TECHNISCH PHYSISCHE DIENST TNO-TH
P.O.BOX 155 DELFT NETHERLANDS.
IT CONTAINS MANY IDEAS AND SUGGESTIONS FROM
PROF.DR. P.M. DE WOLFF
OF THE TECHNICAL UNIVERSITY (T.H) DELFT.
A DESCRIPTION OF THE PROGRAM WAS PUBLISHED IN
JOURNAL OF APPLIED CRYSTALLOGRAPHY.(1969) 2,89.
THIS WORK WAS LARGELY SPONSORED BY THE THEN NAMED
'JOINT COMMITTEE ON POWDER DIFFRACTION STANDARDS '
now 'The International Centre for Diffraction Data'
at the Newtown Square Corporate Campus
12 Campus Boulevard, Newtown Square, PA 19073 - 3273
AND THE CENTRAL ORGANIZATION FOR TNO, THE HAGUE,
NETHERLANDS.
THE PURPOSE OF THE PROGRAM IS TO FIND THE UNIT CELL FROM
THE POWDER PATTERN OF COMPOUNDS OF LOW SYMMETRY.
ONE- AND TWO- PARAMETER PROBLEMS CAN BE SOLVED BY SIMPLER
METHODS, BUT WILL BE SOLVED TOO.
THANKS ARE DUE TO ROBIN SHIRLEY OF THE UNIVERSITEY OF SURREY
WHO CONTRIBUTED MANY EXCELLENT IDEAS AND ALSO MADE THE OUTPUT
MUCH BETTER UNDERSTANDABLE,
AND
DR. GERALD G. JOHNSON JR. OF THE PENNSYLVANIA STATE UNIVERSITY
FOR MANY EXCELLENT IDEAS, SOME AS A RESULT FROM FEEDBACK BY USERS
IN THE U.S.A. TO WHOM HE DISTRIBUTED THIS PROGRAM, AND FOR
FORCING ME TO WRITE THIS PROGRAM IN A STANDARD (ANSI) LANGUAGE.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
THIS PROGRAM HAS PASSED THROUGH SEVERAL VERSIONS AND HAS
FOUND THE CORRECT UNIT CELL IN A LARGE NUMBER OF CASES. IT IS
POSSIBLE, HOWEVER, THAT UNDER SOME CIRCUMSTANCES, WITH A PARTICULA
SET OF DATA, OR WHEN USED WITH A PARTICULAR COMPUTER SYSTEM,
ERRONEOUS RESULTS WILL BE OBTAINED.
THE AUTHOR, THE TECHNISCH PHYSISCHE DIENST TNO-TH, OR THE
JOINT COMMITTEE ON POWDER DIFFRACTION STANDARDS, THEREFORE, TAKE
NO RESPONSIBILITIES WHATSOEVER FOR THE CORRECTNESS OF THE
PROGRAM OR THE RESULTS.
IT WOULD BE APPRECIATED IF ANY DISCREPANCIES IN THE PROGRAM
ARE BROUGHT TO THE ATTENTION OF THE AUTHOR, FOR IMPROVEMENTS IN
LATER VERSIONS.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-----------------------------------------------------------------------
-----------------------------------------------------------------------
VERSION 15 NOVEMBER 1993
-----------------------------------------------------------------------
-----------------------------------------------------------------------
VERSION 0
VERSION 1 WAS PRECEDED BY SEVERAL VERSIONS OF AN
ALGOL PROGRAM, WHICH WAS SEMI-AUTOMATICALLY TRANSLATED
INTO A PL/1 PROGRAM, WHICH WAS THEN TRANSLATED INTO
A FORTRAN PROGRAM. THE CHANGE FROM ALGOL TO PL/1
BECAME NEARLY A NECESSITY BY SWITCHING FROM A TELEFUNKEN
TR4 TO AN IBM-MACHINE. PL/1 WAS ABANDONED BECAUSE IT WAS
NOT SO UNIVERSALLY KNOWN AS WE WERE LED TO BELIEVE.
VERSION 1
TRIALS TO MAKE THE FORTRAN PROGRAM EQUIVALENT TO
THE PL/I PROGRAM.
VERSION 2
= PROVISIONS FOR MOLECULAR WEIGHT AND DENSITY.
= PRINT-OUT OF INPUT CARDS.
VERSION 3
= ADDITION OF THE PROCEDURE SYMTST (TESTING ON
HIGHER SYMMETRIES) AND LESSER IMPROVEMENTS.
VERSION 4.
= ADAPTATIONS TO AVOID DIFFICULTIES ENCOUNTERED ON
OTHER MACHINES (INCLUDING OTHER IBM-MACHINES).
= INTRODUCTION OF SUBROUTINE ECHO IN CONNECTION
WITH BACKSPACE DIFFICULTIES.
= MINOR CHANGES IN THE OUTPUT.
= SUBROUTINES IN ALFABETICAL ORDER.
VERSION 5
= INSTRUCTION MANUAL
= IMPROVED OUTPUT TEXT.
= MORE TESTS ON INPUT.
= TESTING ON HIGHER SYMMETRIES IMPROVED.
= AN EFFORT HAS BEEN MADE TO COMPLY WITH THE REQUIREMENTS
OF *ANS* FORTRAN. THIS WAS NOT EVERYWHERE POSSIBLE.
VERSION 6
= MANY WISHES FROM USERS FULFILLED.
= DISCLAIMERS, BOTH IN COMMENT ON MAIN AND IN OUTPUT.
= MIXED-MODE ARITHMETIC REMOVED.
= SUBROUTINE WRISP REWRITTEN FOR FASTER PRINTING.
= POSSIBILITY TO PRINT AN INSTRUCTION MANUAL ON THE
SPECIAL FEATURES OF THE PROGRAM.
= POSSIBILITY TO ENTER INTENSITIES WITH THE LINES.
= POSSIBILITY TO PRODUCE A LIST OF ALL CALCULATED AND
OBSERVED LINES.
= POSSIBILITY TO ENHANCE CERTAIN CRYSTAL SYSTEMS. DUE TO
THE GENERAL CONSTRUCTION OF THE PROGRAM, THIS IS ONLY
POSSIBLE FOR ORTHORHOMBIC,MONOCLINIC OR TRICLINIC
LATTICES.
= PROBABILITY TO *HIT* A LINE IS SUBDIVIDED OVER THE
Q RANGE. CHANGES IN CRITER.
= ERROR LIMITS ON OBSERVED Q'S CALCULATED ONCE. DISPLAYED
WHEN TEST=.TRUE.
= OVERLAYS TESTED.
VERSION 7
= ALL A-FORMATS REDUCED TO A1, EXCEPT THOSE THAT PRINT
INTENSITIES IN CHARACTER FORM (A3)- THESE OCCUR ONLY
IN *READER*, *LISTM* AND *REFINE* .
= TRIES TO INDEX ALL LINES WITH THE UNIT CELL OF
THE BEST SOLUTION.
= INSTRUCTIONS REWRITTEN, OTHER EXPLANATIONS EXTENDED.
= THE USE OF ONE SET OF HKL'S TO EXPLAIN MORE THAN
ONE OBSERVED LINE IS FLAGGED.
= NUMBER OF SOLUTIONS THAT ARE PRINTED OUT EXTENSIVELY
CAN BE CHANGED.
VERSION 8
= INPUT FORMAT CHANGED-- ADDITIONAL PARAMETER CARD.
= ZERO SHIFT (SPECIMEN DISPLACEMENT+TRANSPARENCY
CORRECTION ON DIFFRACTOMETER)--THE NEW PARAMETER CARD
STARTS WITH THE ZERO CORRECTION (ZERCOR), TO BE
APPLIED TO ALL ANGLES.
= ZERCHK-- THE PROGRAM APPLIES 20 DIFFERENT ZERO SHIFTS
AND GIVES FOR EACH SHIFT THE NUMBER OF HIGHER ORDER
LINES THAT FIT-- IN THIS WAY IT SHOULD BE POSSIBLE
TO DECIDE WHETHER A ZERO SHIFT IS NECESSARY.
= ONLY SOLUTIONS WITH A FIGURE OF MERIT THAT IS BETTER
THAN 4.0 ARE PRINTED--YOU MAY SET YOUR OWN MINIMUM
WITH PRNTMR.
= WITH PRNTLN YOU CAN SET YOUR OWN MINIMUM OF INDEXED
LINES THAT IS NEEDED IN ORDER THAT THE LATTICE
WILL BE PRINTED.
= FOR TRIAL, IT IS NOW POSSIBLE TO ENTER A DIRECT CELL.
= COMBINATIONS OF ZONES WITH ITSELF NOW TRIES BOTH AXES
AS 'COMMON' AXES.
= THE NUMBER OF CYCLES OF LATTICE REFINEMENT IS INCREASED.
= *REFPAR* IS SPLIT INTO TWO SUBROUTINES,ONE OF WHICH
(REFPAR) SETS THE PARAMETERS FOR THE OTHER (REFINE)--
THE LATTER SUBROUTINE DOES THE ACTUAL CALCULATIONS.
= TOLERANCES ON FITTING LINES NOW EXPRESSED IN TWO THETA.
= A(3) FORMATS CHANGED INTO A(2),1X.
VERSION 8.5
= THE MAIN PROGRAM IS NOW SPLIT INTO 3 PARTS,AABITO,
AAITO1 AND ANITO2-- THE NEW MAIN PROGRAM (AABITO)
COMMENTS, INITIALISES SOME VALUES AND CALLS READER, AAITO1
AND ANITO2.
= ZERCHK IS NOW OPTIONAL (COL. 33 IN PARAMETER CARD).
= THE SUBROUTINE *NTEST* LIMITS THE TEST OUTPUT TO
A SMALL PART OF THE PROGRAM, OR PRINTS ALL TEST OUTPUT
AFTER A CERTAIN POINT-- THE COMMENT IN THE SUBROUTINE
GUIDES YOU TO THE ACTUAL CALLS-- THE SUBROUTINE IS ONLY
USEFUL WHEN YOU ARE CHANGING PARTS OF THE PROGRAM.
= LATTICES THAT ARE DISCARDED IN *NORM3* ARE NOW
EXPLICITLY NAMED-- ALSO NAMED ARE THE LATTICES THAT ARE
DISCARDED BECAUSE THEY ARE *EQUAL* TO OTHERS.
VERSION 9
= SUBROUTINE READER WAS SPLIT IN TWO PARTS, READER AND
REDLIN. THIS LAST SUBROUTINE READS THE INPUT LINES. IT
ALSO CALCULATES THE MAXIMUM ERROR (IN TWO THETA) THAT
YOUR INPUT DATA COULD HAVE IN ORDER TO BE ABLE TO PASS
THE TESTS (FIGURE OF MERIT .GT. 10)--
= TWICE THIS MAXIMUM ERROR IS USED AS THE DEFAULT TOLG,
BUT ONLY IF TOLG REMAINS LESS THAN 0.060 DEGREES. --
ENTERING YOUR OWN TOLG OVERRIDES THE DEFAULTS.--
= IN THE LIST OF ALL CALCULATED AND OBSERVED LINES,
THE UNINDEXED LINES ARE NOW MARKED CONSPICUOUSLY (IDEA
FROM CAM HUBBARD)--
= THE FATE OF THE POSSIBLE LATTICES IS PRINTED IN FULL,
BUT ONLY IF YOU PRINT INTERMEDIATE RESULTS (ENL=TRUE)--
= THE MINIMUM VALUES OF THE RECIPROCAL LATTICE CONSTANTS
NOW ALLOWS THE FIRST LINE TO BE A FOURTH ORDER. IN AN
EXPERIMENTAL PATTERN, WHICH WAS ORTHORHOMBIC WITH
SPACEGROUP FDD2, THIS SITUATION ACTUALLY OCCURRED ---
VERSION 10 (A)
FORTRAN 77
= MODIFIED TO CONCUR WITH FULL FORTRAN 77.THIS ALLOWED A
SIMPLER VERSION OF SUBROUTINE ECHO.--
= EXPLANATION OF THE VARIABLES IN COMMON BLOCKS IS
GIVEN IN THIS PROGRAM (BELOW). --
= INDIVIDUAL PROBABILITIES FOR EACH LINE (FOR FINZON).--
= CRITER CHANGED TO CONCUR WITH EARLIER IDEAS.--
= SORTING OF ZONES IN THE NEW SUBROUTINE *SRTZON* --
= THE OUTPUT OF EVALUATE IS SORTED ON THE CRITERION
CRIT, BUT IF NO CORRECT LATTICE IS OBTAINED, IT IS USED
AGAIN BUT SORTED ON THE NUMBER OF OBSERVED LINES (NO)
THAT MATCH THE ZONE. A SUBSORT IS MADE ON THE NUMBER OF
CALCULATED LINES (NC). THIS SOMETIMES LEADS TO SUCCES.--
= THE PAPER BY MIGHELL AND STALICK IN 'ACCURACY IN POWDER
DIFFRACTION' HAS CONVINCED ME THAT IT IS NECESSARY TO
ENSURE THAT ALL AVAILABLE DATA (UP TO 40 LINES) IS
ENTERED INTO THE PROGRAM.
= IF YOU NOW WANT TO ENTER LESS THAN 32 LINES, YOU GET A
WARNING AND YOU HAVE TO ENTER THE CORRECT NUMBER OF LINES
ON THE SECOND PARAMETER CARD.--
= A TRIAL WAS MADE IN REFINING THE ZONES ON THETA
INSTEAD OF Q. THIS DID NOT WORK AS WELL AS REFINING ON Q.
THEREFORE, ONLY THE BEST ZONES ARE (AT THE END OF THE
EVALUATION PROCESS) REFINED ON THETA IN ORDER TO
ESTABLISH A ZERO-SHIFT FOR EACH ZONE.
= SINCE I DO NOT KNOW YET HOW USEFUL THIS CAN BE, NOTHING
MUCH IS BEING DONE WITH IT. IF YOU WANT TO, YOU CAN
USE THE INFORMATION BY ENTERING A CONVINCING
TWOTHETA-SHIFT INTO THE PROGRAM (REVERSE THE SIGN STATED
AND ENTER ON SECOND PARAMETER CARD IN COL 1-9). --
= LATTICES ARE ALSO REFINED ON TWOTHETA, TOGETHER
WITH A ZERO SHIFT. THE ZERO SHIFT IS STORED IN
ROSTER(I,11) AND PRINTED.
VERSION 11
= ECHO CHANGED FOR THE USE OF *IOSTAT*. --
= PRINTING OF Q-SCHEMES FOR THE LATTICES ONLY
WHEN TEST=TRUE. --
= INSTRUCTIONS CLARIFIED. --
= INPUT OF 32 LINES AND LESS WITHOUT DIFFICULTY AGAIN,
BUT WITH AMPLE WARNING. --
= FINAL SORTING OF LATTICES ON: M20/(21-LINES INDEXED).--
= A BIBLIOGRAPHY WAS ADDED IN THE TEXT OF THE NEW ROUTINE
BIBLIO. IT IS ANNOUNCED IN THE PROGRAM OUTPUT. --
= THE NAME OF SUBROUTINE SRTRON WAS CHANGED INTO SRTLIN. --
= CARDS (RECORDS) NO LONGER NUMBERED. --
= FOR *EXPORT* PURPOSES THE PROGRAM PLUS SUBROUTINES WAS
DIVIDED INTO 6 FILES OF ABT. 820 RECORDS EACH. --
VERSION 12
= OUTPUT OF A SUMMARY OF THE DATA OF THE BEST SOLUTION ON
UNIT NSUMM (66). THE LENGTH OF THE LINES IN THIS OUTPUT
IS RESTRICTED TO 70 CHARACTERS. --
= SOMETIMES A MONOCLINIC LATTICE IS FOUND TO BE A
RHOMBOHEDRAL LATTICE IN DISGUISE. A REFINEMENT OF THE
HEXAGONAL LATTICE CONSTANTS IS NOW CARRIED OUT IN THE
NEW SUBROUTINE *REFSYM* , FOLLOWED BY A PRINT-OUT OF
THE PATTERN AS INDEXED ON HEXAGONAL AXIS. --
= TETRAGONAL,HEXAGONAL AND CUBIC LATTICES ARE ALSO
RECOGNISED AND REFINED AS SUCH. THEY ARE PRINTED BY
THE NEW SUBROUTINE *SYMPRT*. --
VERSION 13 JUNE 1987
= THE CALCULATED ZERO-SHIFT (WHICH ALSO ACCOUNTS FOR
THE SPECIMEN DISPLACEMENT ERROR AT SMALL TWOTHETAS)
IS NOW APPLIED TO THE CALCULATED TWOTHETAS, IN ORDER
NOT TO CHANGE THE *OBSERVED* VALUES. THIS IS WRONG
IN PRINCIPLE, BUT SAVES MISUNDERSTANDINGS.
VERSION 14 November 1993
= This version is specially adapted to a PC.
For AT's and '286-ers it gives intermediate output
on the screen. A '486 goes too fast for the intermediate
output to be useful.
It is a continuation of version 12.
= The program asks for the names of the input and
output files.
= The calculated zeroshift is applied again to the
*observed* values (return to version 12).
= Twothetas are now given in three decimals.
= The summary is again in a separate file, which can
be printed separately.
= The program continuously writes output onto the screen.
= Possibility to suppress the zeroshift.
= New division of the source code (3 'main' pgms).
VERSION 15 December 1993
= Output of intermediate results on the monitor is suppressed.
= Possibility to enter the number of reflections that is
actually to be used. Too few lines may not give enough
information, too many lines may give too many false clues.
-----------------------------------------------------------------------
-----------------------------------------------------------------------
INPUT AND OUTPUT
-----------------------------------------------------------------------
The program asks for the names of the input file and of the file for
the summary of the output.
Moreover, a copy of the input file is made on ITODOC.LST (for
checking and testing purposes), and a more elaborate output is
written onto ITOUT.LST.
THE INPUT OF THIS PROGRAM SHOULD CONSIST OF:
1. A TITLE RECORD,CONTAINING UP TO 80 CHARACTERS
2. TWO PARAMETER RECORDS,THAT CAN BE COMPLETELY BLANK
3. A NUMBER OF LINES RECORDS, CONTAINING THE POSITIONS OF THE LINES
THESE CAN BE ENTERED AS D-,Q- OR TWOTHETA VALUES. ( 8 F10.5 )
YOU MAY LEAVE ANY NUMBER OF POSITIONS PER RECORD BLANK.
THIS MEANS THAT YOU CAN ALSO ENTER ONLY ONE LINE PER RECORD,
IN ANY ONE OF THE POSITIONS OF 8F10.5
4. A BLANK RECORD, TO FINISH THE INPUT OF ONE PROBLEM.
REPEAT THE ABOVE AS MANY TIMES AS PROBLEMS, -- THEN --
5. A RECORD CONTAINING THE WORD -- END -- IN THE THREE FIRST
COLUMNS, TO FINISH THE INPUT.
Note: Instead of records that are completely blank, it is often
wise to enter 0.0 .
THE PROGRAM WILL TAKE ITS OWN (DEFAULT) PARAMETERS.
FOR THE INITIATED THE SUBROUTINE READER GIVES FULL DETAILS ABOUT
ALL THE POSIBILITIES OF THE PROGRAM.
-----------------------------------------------------------------------
THE SUBROUTINES ARE LISTED IN ALFABETICAL ORDER.
-----------------------------------------------------------------------
GENERAL FLOW OF SUBROUTINES
(THE ACTUAL FLOW OF SUBROUTINES IS SLIGHTLY MORE COMPLICATED)
-----------------------------------------------------------------------
SUBROUTINES TIMER AND NTEST ARE FREQUENTLY CALLED BY THE
MAIN PROGRAM. NTEST CALLS ARE MARKED BY 1+ , 2+ , ETC.
.......................................................................
******* ******* **********
* * * * <-------> * ECHO * ********
* M * * R * ********** |--> *SRTLIN*
* * * * <-------> * REDLIN * <-| ********
1+* A * <--------> * E * ********** |--> *TETCAL*
* * * * <-------> * RECCEL * ********
* I * * A * **********
* * * * <-------> * MANUAL *
* N * * D * **********
|--->* * * * <-------> * INSTRS *
| ******* * E * **********
| | * * <-------> * ZERCHK *
| | * R * **********
| | * * <-------> * BIBLIO *
| | ******* **********
| |
| 2+******* **********
| * * <-------> * FINZON *
| * * **********
| * A *
| * * ******* ****** *********
| * * * * <------> * LS * <----> * WRISP *
| * * * E * ****** *********
| * A * * V * ********
| * * * A * <------> * NORM *
| * * <-------> * L * ********
| * * * U * **********
| 3+* I * * 8 * <------> * CRITER *
| * * * * **********
| * * * * *********
| * * ******* <------> * TEXT1 *
| * * *********
| * T * **********
| * * <-------> * SRTZON *
| * * **********
| 4+* *
| * O * **********
| * * <-------> * ONEZON *
| * * **********
| * *
| * 1 *
| * * ********
| 5+* * <-------> * REAR *
| ******* ********
|
|
|
| ******* **********
|--->* * <-------> * THREED *
* * **********
6+* *
* * ********* **********
* * <-------> * NORM3 * <------> * WISSEL *
* A * ********* **********
* *
7+* *
* *
8+* * ******* ******* **********
* N * * * * * <------> * *
* * * R * * R * **********
* * * * * * *********
* * * E * * E * <------> * WRISP *
* * * * * * *********
* I * <----> * F * <----> * F * *********
* * * * * * <------> * ARRAY *
* * * P * * I * *********
* * * * * * ********
* * * A * * N * <------> * MINV *
* T * * * * * ********
* * * R * * E * *********
* * * * * * <------> * LISTM *
* * ******* ******* *********
9+* *
* O * **********
* * <-------> * UNTCEL *
* * **********
* *
* 2 * ********** **********
* * <-------> * SYMTST * <-----> * REFSYM *
* * ********** **********
* *
* * **********
* * <-------> * SRTSYM *
* * **********
* * **********
* * ********** <-----> * LISTM *
* * <-------> * SYMPRT * **********
* * ********** <-----> * REFSYM *
* * **********
*******
-----------------------------------------------------------------------
MINIMISING STORAGE REQUIREMENTS.
-----------------------------------------------------------------------
ONLY VALID FOR VERSION 6.
FOR NEWER VERSIONS IT CAN SERVE AS A GUIDE.
.......................................................................
1. OVERLAY.
THE SUGGESTED OVERLAY STRUCTURE NEEDS ONLY ABOUT 60%
OF THE STORAGE NEEDED FOR THE FULL PROGRAM,
WITHOUT IMPAIRING ITS EFFICIENCY.
THE SUBROUTINES *FINZON* AND *THREED* HAVE THE
LARGEST REQUIREMENTS FOR MAIN STORAGE. THEREFORE, IT IS
NOT NECESSARY TO GO BEYOND ONE LEVEL OF OVERLAY.
I SUGGEST THE FOLLOWING SCHEME
ENTRY MAIN COMMENT* ROOT SEGMENT, SEGMENT 1
OVERLAY ONE
INCLUDE SUB(READEM) COMMENT* SEGMENT 2
OVERLAY ONE
INCLUDE SUB(FINZON) COMMENT* SEGMENT 3
OVERLAY ONE
ETC. ETC. ETC.
SEGMENT CONTENTS
1 MAIN + COMMONS, EXCEPT *COUNTM*
2 READER+ECHO+MANUAL+INSTRS+SRTLIN
3 FINZON
4 EVALU8+LS+WRISP+NORM+CRITER+TEXT1
5 ONEZON+REAR
6 THREED
7 NORM3
8 REFPAR+WISSEL+ARRAY+MINV+LISTM+ *PRINS*
9 UNTCEL+SYMTST
THE FOLLOWING CHANGES ARE NECESSARY
A.DELETE THE COMMON *COUNTM* THROUGHOUT THE PROGRAM,
USE AN ARRAY *ITL(5000)* INSTEAD OF THIS COMMON
IN THE SUBROUTINES *FINZON* AND *THREED*
B.DELETE THE SUBROUTINE CALL FOR *NORM3* FROM *REFPAR*
INSERT A CARD 95 CONTINUE
C.CHANGE THE NAME OF THE SUBROUTINE *WRISP* IN *REFPAR*
INTO SOMETHING DIFFERENT, LIKE *PRINS* AND CHANGE THE
FOUR SUBROUTINE CALLS FOR *WRISP* IN *REFPAR*
ACCORDINGLY
THE CALL FOR *NORM3* IN *REFPAR* IS ONLY SELDOM
REALLY NECESSARY, HOWEVER,
IF THE RESULTS OF A PARTICULAR POWDER PATTERN SEEM STRANGE
TO YOU, YOU CAN ALWAYS FORCE ANOTHER APPLICATION OF *NORM3
BY RE-ENTERING YOUR DATA AND THE STRANGE LATTICES,
SEE MANUAL AND INSTRUCTIONS, USE COL 44 OF PARAMETER CARD
1B OVERLAY 2.
ON AN IBM 370/158 THE PROGRAM RAN IN 84K INSTEAD OF 140
AND WITHOUT MEASURABLE LOSS OF SPEED WITH THE FOLLOWING
SCHEME
A. COMPILE THE PROGRAM AS GIVEN WITH PARM.LKED=OVLY
B.GIVE LKED.SYSIN DD *
ENTRY MAIN
INSERT MAIN
OVERLAY ALPHA
INSERT READER,MANUAL,ECHO,INSTRS,SRTLIN,IHCSSCN
OVERLAY ALPHA
INSERT FINZON,THREED,COUNTM
OVERLAY ALPHA
INSERT EVALU8,LS,NORM,CRITER,TEXT1,EVALN,LINSTR,IHCSE
INSERT REFPAR,WISSEL,WRISP,ARRAY,MINV,NORM3,LISTM
OVERLAY ALPHA
INSERT ONEZON,REAR,UNTCEL,SYMTST
/*
2. CHOPPING UP THE PROGRAM.
IF YOU HAVE A REALLY SMALL COMPUTER, IT IS STILL
POSSIBLE TO RUN THIS PROGRAM.
AS THE PROGRAM USES ITS MAIN SUBROUTINES SEQUENTIALLY,
IT IS POSSIBLE TO IMITATE AN OVERLAY AND DIVIDE THE MAIN
PROGRAM IN A NUMBER OF PIECES THAT WILL WORK AS
SEPARATE UNITS. AFTER EVERY PART IT WILL BE NECESSARY
TO SAVE THE VALUES OF MOST COMMON AREAS AND OF THE
ARRAY *STORE*. THE DIVISION OF THE PROGRAM SHOULD
FOLLOW THE SAME MAIN LINE AS THE OVERLAY STRUCTURE.
I HAVE NOT TRIED THIS MYSELF, AS I HAVE A VERY LARGE
COMPUTER AVAILABLE. I AM QUITE WILLING TO HELP ANYBODY
WHO TRIES THE ABOVE IDEA. PLEASE CONTACT ME .
-----------------------------------------------------------------------
-----------------------------------------------------------------------
-----------------------------------------------------------------------
EXPLANATION OF VARIABLES IN COMMON.
1.LINES
IDOC OUTPUT FILE FOR DOCUMENTATION PURPOSES. LISTS INPUT
AS GIVEN
INP INPUT UNIT,FROM WHICH ALL INPUT IS READ.
IOUT STANDARD OUTPUT UNIT (LINE PRINTER)
NCRT Output to monitor
(NSUMM OUTPUT UNIT FOR CRT-TERMINAL IS IN COMMON CONSTS)
MAX THE NUMBER OF OBSERVED LINES THAT ARE USED (.LE. 40)
OBS(40) CONTAINS THE Q-VALUES OF THE OBSERVED LINES.
CEL(10) USED FOR SEVERAL PURPOSES, CAN CONTAIN UNIT CELLS
OR LINE COMBINATIONS OR ZONES.
2. CHARCM
NAME NAME OF PROBLEM.
CARD CONTAINS THE IMAGE OF THE 'CARD' THAT WAS LAST READ.
INTSY(50) CONTAINS THE INTENSITIES (GIVEN AS VS , S , ETC.)
OF THE OBSERVED LINES.
3. PARMS
TOL2 TOLERANCE ON 2-DIMENSIONAL SEARCH FOR THE ANGLE BETWEEN
THE DIRECTIONS OF THE POINTS REPRESENTED BY Q-VALUES.
TOL3 SAME FOR THREE-DIMENSIONAL SEARCH (FOR D)
WAVEL WAVELENGTH (1.5406 BY DEFAULT)(1.5405891)
FMINEQ MAXIMUM VALUE FOR THE DIFFERENCE BETWEEN 'EQUAL' VALUES
FMINIM MINIMUM VALUE FOR THE FIRST THREE LATTICE CONSTANTS.
SELF LOGICAL
ENL LOGICAL FOR PRINTING INTERMEDIATE RESULTS.
TEST LOGICAL FOR PRINTING ALL TEST RESULTS.
LIST THE NUMBER OF LATTICES THAT ARE TO BE PRINTED OUT
NSYST(3) SEE INSTRUCTIONS. POSSIBILITY TO ENHANCE SOME CRYSTAL
SYSTEMS
OBSMT(40) Q-VALUES OF THE OBSERVED LINES MINUS TOLERANCE.
OBSPT(40) Q-VALUES OF THE OBSERVED LINES PLUS THE TOLERANCE.
TWTHET(40) TWO-THETA'S OF THE OBSERVED LINES.
TOLG TOLERANCE (IN HUNDREDTH OF A DEGREE TWO THETA)
4. EVALN
NORDER NUMBER OF ORDERS OF AXES' Q-VALUES, USUALLY 4.
NORDER DETERMINES THE INDEX-FIELD OF THE ZONES AT
EVALUATION.
RECTAN LOGICAL THAT IS .TRUE. WHEN THE ZONE IS RECTANGULAR.
PROB(40) PROBABILITY TO 'HIT' AN OBSERVED LINE BY CHANCE.
EVAL(-8:8,0:8) ARRAY CONTAINING THE PROBABILITIES OF THE
CALCULATED LINES THAT ARE ALSO OBSERVED.
UPBNDR(40) UPPER BOUNDARY OF THE PROBABILITY FIELD OF EACH LINE.
5. TEMRES
LINCO THE NUMBER OF LINE COMBINATIONS
NQ2 THE NUMBER OF THE LAST LINE TO BE COMBINED WITH OTHERS.
NINDEX THE NUMBER OF LINES INDEXED AMONG THE FIRST NQ2 LINES
INDEX(40) ARRAY TO COUNT WHETHER A LINE WAS INDEXED BY A
PARTICULAR ZONE.
ROSTER(150,12) ARRAY IN WHICH THE USEFUL LATTICES ARE STORED.
1...6 CELL CONSTANTS, 7=LINES INDEXED, 8=M20, 9=BRAV.TYP,
10=PEDIGREE, 11=ZEROSHIFT, 12=VALUE FOR RANKING=[8]/(21-[7])
6. CONSTS
NSUMM NUMBER OF UNIT ONTO WHICH A SUMMARY IS WRITTEN.
THE LENGTH OF THE LINES IS LESS THAN 71 CHARACTERS.
RAD,TWORAD FACTORS FOR CALCULATING DEGREES FROM RADIANS.
RRAD FACTOR TO CALCULATE RADIANS FROM DEGREES (RECIPROCAL)
HLFLAM WAVELENGTH/(2*100). FACTOR 100 STEMS FROM THE FACT
THAT Q HAS BEEN MULTIPLIED BY 100**2
WAVSQR CONSTANT NEEDED FOR CALCULATING DERIVATIVES.
STORE(200,9) ARRAY TO STORE THE ZONES.
7. THETAS --- ALL IN RADIANS ---
ZERTOT TOTAL ZERO SHIFT OF THE DATA (RADIANS).
OBSTET OBSERVED THETA.
SHFTET OBSERVED THETAS, SHIFTED BY THE CALCULATED ZEROSHIFT.
TETPT OBSERVED THETA PLUS TOLERANCE
TETMT OBSERVED THETA MINUS TOLERANCE.
8. HISYM DATA FOR HIGH-SYMMETRY LATTICES
ZERREF logical which is .true. when the zero-correction
is to be refined.
ISOL THE NUMBER OF THE SOLUTION
SYMCON(12,6) ARRAY TO STORE THE CELCONSTANTS OF THE HIGHLY
SYMMETRIC LATTICES. 1,2 CELCONSTANTS,3=CRYSTAL SYSTEM,
4=NUMBER OF LINES INDEXED,5=ZEROSHIFT, 6=VOLUME.
NMATCH(45) ARRAY TO STORE THE NUMBER OF CALCULATED LINES THAT
MATCH EACH OBSERVED LINE.
9. COUNTM
ITL(0:5000) ARRAY TO FIND THE VALUES OF *F* AND *D* .
IT IS NOT NECESSARY TO PUT THE ARRAY(S) IN A COMMON,
BUT IT SAVES SPACE.
-----------------------------------------------------------------------
last change 240493 added NCRT+output
last change 061193 deleted MOST NCRT+output
last change 080594 improved NCRT-output