-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathccccx.tex
2547 lines (2281 loc) · 131 KB
/
ccccx.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
\section{CCCCR}
\label{sCCCCR}
\hypertarget{sCCCCRhy}{This}
module is used to produce the standard CCCC interface files
ISOTXS, BRKOXS, and DLAYXS from
\hyperlink{sGROUPRhy}{GROUPR} output.
This chapter describes the CCCCR module in NJOY2016.0.
\subsection{Introduction}
\label{ssCCCCR_intro}
The CCCC interface files (commonly pronounced ``four cees'') were
developed by the Committee for Computer Code Coordination for the
US Fast Breeder Reactor Program.\index{CCCC interface files}
\index{Fast Breeder Reactor Program} When
the members of this committee started work in 1970,
they noted that because of the large variety of
computers and computer systems, computer codes developed at one
laboratory were often incompatible with computers at other
laboratories. Major rewrites of codes or wasteful duplicate efforts
were common. They hoped to create a system that would allow different
laboratories to create codes that could be moved to other sites more
easily. Moreover, they hoped that the codes developed at different
laboratories could easily work together, thereby achieving larger and
more capable calculational systems than any one laboratory could hope to
develop by itself.
Much of the following discussion was developed long ago, and so some
of the code examples conform to FORTRAN-77. We assume the reader can
easily convert this into modern Fortran.
They approached this problem in two ways. First, they tried to establish
general programming standards that would make computer codes more
portable. And second, they tried to establish standard interface files
for reactor physics codes that would make it easier for computer codes to
communicate with each other. The results of this work appeared in fullest
form as the CCCC-III and CCCC-IV standards\cite{CCCC3,CCCC4}.
\index{CCCC format!CCCC-III}
\index{CCCC format!CCCC-IV}
The MINX\index{MINX} code\cite{MINX}, which was the predecessor of NJOY,
was able to produce libraries \cite{LIBIV}\index{LIB-IV} that used
the CCCC-III interface formats. The LINX\index{LINX} and
BINX\index{BINX} library management codes\cite{LINXBINX} and the
CINX\index{CINX} group collapse code\cite{CINX} were also released
during this period. Major codes that used data in CCCC-format
included SPHINX\cite{SPHINX}\index{SPHINX} from
Westinghouse\index{Westinghouse}, TDOWN\cite{TDOWN}\index{TDOWN}
from General Electric\index{General Electric},
DIF3D\cite{DIF3D}\index{DIF3D} from Argonne National Laboratory,
\index{Argonne National Laboratory!ANL} and ONEDANT\cite{ONEDANT}\index{ONEDANT}
from LANL\index{Los Alamos National Laboratory!LANL}. It was indeed found that
codes could be moved more easily than before. Analysts could use
ONEDANT and DIF3D on similar problems; they could even use one code to
generate utility files (for example, mixture and geometry files) that
would work with the other code! When NJOY was developed, it first
produced version III formats and was later upgraded to the CCCC-IV
standard.
With the demise of the breeder reactor program, development of the CCCC
system has stopped. However, many good programs are still available
that make use of CCCC files and programming standards. The LANL
DANDE system\cite{DANDE} was an example of how the use of standard
interface files can be used to couple several reactor physics programs
together into an easy-to-use and powerful product. In areas where the
CCCC standards were not very successful, such as gamma ray cross
sections and cross sections for the fusion energy range,
the MATXS format is available as an alternative. This generalized
material cross section library format uses CCCC-type techniques.
The modern S$_{\rm N}$ code PARTISN\cite{PARTISN} makes very heavy
use of both standard and non-standard CCCC files Thus, the CCCC
spirit is not dead.
\index{DANDE}
\index{MATXS format}
\subsection{CCCC Procedures and Programming Standards}
\label{ssCCCCR_Proc}
Although the CCCC programming standards went so far as to give advice on
program structure, documentation, and good coding practice, their main
purpose was to make it easier to move computer codes from one machine
to another. The main problems in those days were the slightly different
implementations of input/output on CDC and IBM machines, the different
word size on CDC and IBM machines, and the relatively small size of the
main memory on the CDC 7600. The last of these problems was attacked by
limiting the maximum memory requirements for CCCC-compliant codes. This
problem has disappeared for modern computers.
The word-size problem has three components. First, it is often
necessary to change the statements that allocate space for variables
and arrays [for example, ``\cword{DIMENSION A(10)}'' might have to be
changed to ``\cword{REAL*8 A(10)}'' when moving from a long-word
machine (CDC, Cray) to a short-word machine (IBM, VAX, Sun)]. Second,
the names of functions that work with double-precision variables
normally must be changed (for example, \cword{ALOG10} to \cword{DLOG10}).
And third, the word boundaries of double-precision variables must be
properly aligned in common blocks and equivalenced arrays. The standard
CCCC method for handling name changes has been based on using standard
control cards. As an example, a code for a long-word machine might
contain the following code fragment:
\newpage
\small
\begin{ccode}
CSW
C REAL*8 HA(10)
CSW
CLW
INTEGER HA(10)
CLW
\end{ccode}
\normalsize
The variable \cword{HA} is intended to hold 10 words of Hollerith
information using the standard CCCC 6-character word length. Such a
variable must be declared as double precision on short-word machines,
which typically allow four Hollerith characters per word. To change
this code to its short-word version, a special utility code reads
through each line removing the comment ``C'' from lines bracketed by
the ``SW'' comments and inserting a ``C'' in column 1 for all lines
bracketed by ``LW'' comments. Early versions of NJOY used this
scheme; later versions used UPD\cite{UPD} conditional
\index{UPD}
statements instead. For example, the source file contained
\small
\begin{ccode}
*IF SW
REAL*8 HA(10)
*ELSE
INTEGER HA(10)
*ENDIF
\end{ccode}
\normalsize
\noindent
and the compile file produced by UPD had only one of the two
alternatives activated, depending on whether \cword{SW} has been
set or not. NJOY2016 uses built-in features of Fortran-90 to
handle this problem. The \cword{locale} module defines a
special "kind" for the Hollerith data that is packed into
CCCC records.
The word-alignment problem requires that some care be used in
allocating arrays and common blocks. For example,
\small
\begin{ccode}
REAL*8 HA
COMMON/BAD/IA(3),HA(10)
\end{ccode}
\normalsize
\noindent
should be avoided; it would be OK with \cword{IA(4)}. Most CCCC records
contain mixtures of Hollerith, floating-point, and integer variables.
The desired data is normally extracted by making use of equivalenced
arrays. For example, a code could contain the following declarations:
\small
\begin{ccode}
REAL*8 HA(10)
DIMENSION A(20),IA(20)
EQUIVALENCE (HA(1),A(1)),(IA(1),A(1))
\end{ccode}
\normalsize
\noindent
Assume that a record containing 2 Hollerith variables (which require
two single-precision variables each), 2 floating-point numbers (at
single precision), and 2 integers has been read into array \cword{A}.
How do you extract the first of the integers? The solution depends on
defining a CCCC-standard quantity called \cword{mult},
\index{mult@{\ty mult}}
which is 1 for long-word machines and 2 for short-word machines. Now,
the desired value can be obtained with an expression of the form
\small
\begin{ccode}
I1=IA(2*MULT+3)
\end{ccode}
\normalsize
\noindent
The second Hollerith variable would be extracted using the simple
expression
\small
\begin{ccode}
H2=HA(2)
\end{ccode}
\normalsize
\noindent
Changing the value of \cword{mult} when transporting a code to a
different machine is easily handled using control-card brackets or UPD
conditionals as described above.
In NJOY2012 and later, common blocks are no longer used, but equivalencing
is still used to pack Hollerith (or character), integer, and real data
into the CCCC records. While such coding techniques may bring tears to
the eyes of modern programmers, it remains a valid coding mechanism and
we continue to exploit this capability.
The remaining feature of the CCCC programming standards that is used
in codes like PARTISN is the concept of standardized input/output subroutines.
The CCCC interface files are sequential binary files (binary for
efficiency and sequential for simplicity). The interface formats are
arranged so that the length of any record can be calculated using
parameters already read from previous records. It is convenient to
insulate CCCC input/output from system variations by defining two
standard routines:
\index{REED@{\ty REED}}
\index{RITE@{\ty RITE}}
\begin{description}
\begin{singlespace}
\item[\cword{REED(NREF,IREC,ARRAY,NWDS,MODE)}] ~\par
Read record \cword{IREC} from unit \cword{NREF} into
\cword{ARRAY}. The record has length \cword{NWDS}
in single-precision words. The \cword{MODE} parameter
is used to control I/O buffering, and it is not used
in NJOY. Records can be read out of sequence; the
routine does any record skipping (forward or backward)
needed to arrive at record number \cword{IREC}.
\item[\cword{RITE(NREF,IREC,ARRAY,NWDS,MODE)}] ~\par
Write record \cword{IREC} onto unit \cword{NREF} using
the data in \cword{ARRAY}. The first \cword{NWDS}
single-precision words will be written. The \cword{MODE}
parameter is ignored. The records \cword{NREF} must be
written in sequence. The unit will be rewound if
\cword{IREC=1}.
\end{singlespace}
\end{description}
\noindent
When transporting a code between different computer systems,
it is only necessary to have (or prepare) operational versions
of \cword{REED} and \cword{RITE} for the target machine.
In the conversion to Fortran-90 style, we tried to avoid all these
tricks. The reading and writing of CCCC records was coded in
directly to avoid word-length problems (no more REED or RITE). All
internal variable and data read from the GENDF file use 8-byte words.
It is only at the last stage when the data are stored into the CCCC
records that the 8-byte data are converted to 4-byte words. Thus,
\cword{mult} is always equal to 2. In general, the accuracy
obtained with 4-byte words is sufficient for multigroup data.
\subsection{The Standard Interface Files}
\label{ssCCCCR_Interface}
The CCCCR module produces data libraries that use three of the CCCC-IV
standard interface files, namely:
\index{ISOTXS}
\index{BRKOXS}
\index{DLAYXS}
\begin{description}
\begin{singlespace}
\item[ISOTXS] for nuclide (isotope)-ordered multigroup neutron
cross sections including cross section versus energy functions
for the principal cross sections, group-to-group scattering
matrices, and fission neutron production and spectra tables;
\item[BRKOXS] for Bondarenko-type self-shielding factors versus
energy group, temperature, and background cross section for
the reactions with major resonance contributions; and
\item[DLAYXS] for delayed-neutron precursor yields, emission
spectra, and decay constants for the major fissionable
isotopes.
\end{singlespace}
\end{description}
\noindent
The format of each of these files, the definition of the types of data
included, and the uses and weaknesses of these three standard file
formats are discussed in the following three sections.
As mentioned in the preceding section, the normal form of the CCCC files
is binary and sequential. CCCCR writes its output in this binary mode.
Of course, coded versions (ASCII for modern systems) are needed to move
library files between different machines, and the formats used for the
coded versions are given in the file descriptions below. A separate
program, BINX\cite{LINXBINX}, is used to convert back and forth between
coded and binary modes. BINX can also be used to prepare an
interpreted listing of a library. CCCCR can prepare an entire
multimaterial library in one run if a multimaterial GENDF file is
available. It can also be used to prepare an interface file containing
only one material. These one-material files can be merged into
multimaterial libraries using the LINX code\cite{LINXBINX}.
\subsection{ISOTXS}
\label{ssCCCCR_ISOTXS}
The format for the ISOTXS\index{ISOTXS} material (isotope)-ordered
cross section file is given below. This computer-text format is
standard for the CCCC interface files. Of course, if these lines
were to be inserted into a modern Fortran (say .f90 or later)
code, the initial "C" will have to be changed to ``!".
\small
\begin{ccode}
C***********************************************************************
C REVISED 11/30/76 -
C -
CF ISOTXS-IV -
CE MICROSCOPIC GROUP NEUTRON CROSS SECTIONS -
C -
CN THIS FILE PROVIDES A BASIC BROAD GROUP -
CN LIBRARY, ORDERED BY ISOTOPE -
CN FORMATS GIVEN ARE FOR FILE EXCHANGE PURPOSES -
CN ONLY. -
C -
C***********************************************************************
C-----------------------------------------------------------------------
CS FILE STRUCTURE -
CS -
CS RECORD TYPE PRESENT IF -
CS =============================== =============== -
CS FILE IDENTIFICATION ALWAYS -
CS FILE CONTROL ALWAYS -
CS FILE DATA ALWAYS -
CS FILE-WIDE CHI DATA ICHIST.GT.1 -
CS **************(REPEAT FOR ALL ISOTOPES) -
CS * ISOTOPE CONTROL AND GROUP -
CS * INDEPENDENT DATA ALWAYS -
CS * PRINCIPAL CROSS SECTIONS ALWAYS -
CS * ISOTOPE CHI DATA ICHI.GT.1 -
CS * **********(REPEAT TO NSCMAX SCATTERING BLOCKS) -
CS * * *******(REPEAT FROM 1 TO NSBLOK) -
CS * * * SCATTERING SUB-BLOCK LORD(N).GT.0 -
CS ************* -
C -
C-----------------------------------------------------------------------
C-----------------------------------------------------------------------
CR FILE IDENTIFICATION -
C -
CL HNAME,(HUSE(I),I=1,2),IVERS -
C -
CW 1+3*MULT=NUMBER OF WORDS -
C -
CB FORMAT(11H 0V ISOTXS ,1H*,2A6,1H*,I6) -
C -
CD HNAME HOLLERITH FILE NAME - ISOTXS - -
CD HUSE(I) HOLLERITH USER IDENTIFICATION (A6) -
CD IVERS FILE VERSION NUMBER -
CD MULT DOUBLE PRECISION PARAMETER -
CD 1- A6 WORD IS SINGLE WORD -
CD 2- A6 WORD IS DOUBLE PRECISION WORD -
C -
C-----------------------------------------------------------------------
C-----------------------------------------------------------------------
CR FILE CONTROL (1D RECORD) -
C -
CL NGROUP,NISO,MAXUP,MAXDN,MAXORD,ICHIST,NSCMAX,NSBLOK -
C -
CW 8=NUMBER OF WORDS -
C -
CB FORMAT(4H 1D ,8I6) -
C -
CD NGROUP NUMBER OF ENERGY GROUPS IN FILE -
CD NISO NUMBER OF ISOTOPES IN FILE -
CD MAXUP MAXIMUM NUMBER OF UPSCATTER GROUPS -
CD MAXDN MAXIMUM NUMBER OF DOWNSCATTER GROUPS -
CD MAXORD MAXIMUM SCATTERING ORDER (MAXIMUM VALUE OF -
CD LEGENDRE EXPANSION INDEX USED IN FILE). -
CD ICHIST FILE-WIDE FISSION SPECTRUM FLAG -
CD ICHIST.EQ.0, NO FILE-WIDE SPECTRUM -
CD ICHIST.EQ.1, FILE-WIDE CHI VECTOR -
CD ICHIST.GT.1, FILE-WIDE CHI MATRIX -
CD NSCMAX MAXIMUM NUMBER OF BLOCKS OF SCATTERING DATA -
CD NSBLOK SUBBLOCKING CONTROL FOR SCATTER MATRICES. THE -
CD SCATTERING DATA ARE SUBBLOCKED INTO NSBLOK -
CD RECORDS (SUBBLOCKS) PER SCATTERING BLOCK. -
C -
C-----------------------------------------------------------------------
C-----------------------------------------------------------------------
CR FILE DATA (2D RECORD) -
C -
CL (HSETID(I),I=1,12),(HISONM(I),I=1,NISO), -
CL 1(CHI(J),J=1,NGROUP),(VEL(J),J=1,NGROUP), -
CL 2(EMAX(J),J=1,NGROUP),EMIN,(LOCA(I),I=1,NISO) -
C -
CW (NISO+12)*MULT+1+NISO -
CW +NGROUP*(2+ICHIST*(2/ICHIST+1)))=NUMBER OF WORDS -
C -
CB FORMAT(4H 2D ,1H*,11A6,1H*/ HSETID,HISONM -
CB 11H*,A6,1H*,9(1X,A6)/(10(1X,A6))) -
CB FORMAT(6E12.5) CHI (PRESENT IF ICHIST.EQ.1) -
CD FORMAT(6E12.5) VEL,EMAX,EMIN -
CD FORMAT(12I6) LOCA -
C -
CD HSETID(I) HOLLERITH IDENTIFICATION OF FILE (A6) -
CD HISONM(I) HOLLERITH ISOTOPE LABEL FOR ISOTOPE I (A6) -
CD CHI(J) FILE-WIDE FISSION SPECTRUM(PRESENT IF ICHIST.EQ.1) -
CD VEL(J) MEAN NEUTRON VELOCITY IN GROUP J (CM/SEC) -
CD EMAX(J) MAXIMUM ENERGY BOUND OF GROUP J (EV) -
CD EMIN MINIMUM ENERGY BOUND OF SET (EV) -
CD LOCA(I) NUMBER OF RECORDS TO BE SKIPPED TO READ DATA FOR -
CD ISOTOPE I. LOCA(1)=0 -
C -
C-----------------------------------------------------------------------
C-----------------------------------------------------------------------
CR FILE-WIDE CHI DATA (3D RECORD) -
C -
CC PRESENT IF ICHIST.GT.1 -
C -
CL ((CHI(K,J),K=1,ICHIST),J=1,NGROUP),(ISSPEC(I),I=1,NGROUP) -
C -
CW NGROUP*(ICHIST+1)=NUMBER OF WORDS -
C -
CB FORMAT(4H 3D ,5E12.5/(6E12.5)) CHI -
CB FORMAT(12I6) ISSPEC -
C -
CD CHI(K,J) FRACTION OF NEUTRONS EMITTED INTO GROUP J AS A -
CD RESULT OF FISSION IN ANY GROUP,USING SPECTRUM K -
CD ISSPEC(I) ISSPEC(I)=K IMPLIES THAT SPECTRUM K IS USED -
CD TO CALCULATE EMISSION SPECTRUM FROM FISSION -
CD IN GROUP I -
C -
C-----------------------------------------------------------------------
C-----------------------------------------------------------------------
CR ISOTOPE CONTROL AND GROUP INDEPENDENT DATA (4D RECORD) -
C -
CL HABSID,HIDENT,HMAT,AMASS,EFISS,ECAPT,TEMP,SIGPOT,ADENS,KBR,ICHI, -
CL 1IFIS,IALF,INP,IN2N,IND,INT,LTOT,LTRN,ISTRPD, -
CL 2(IDSCT(N),N=1,NSCMAX),(LORD(N),N=1,NSCMAX), -
CL 3((JBAND(J,N),J=1,NGROUP),N=1,NSCMAX), -
CL 4((IJJ(J,N),J=1,NGROUP),N=1,NSCMAX) -
C -
CW 3*MULT+17+NSCMAX*(2*NGROUP+2)=NUMBER OF WORDS -
C -
CB FORMAT(4H 4D ,3(1X,A6)/6E12.5/ -
CB 1(12I6)) -
C -
CD HABSID HOLLERITH ABSOLUTE ISOTOPE LABEL - SAME FOR ALL -
CD VERSIONS OF THE SAME ISOTOPE IN FILE (A6)-
CD HIDENT IDENTIFIER OF LIBRARY FROM WHICH BASIC DATA -
CD CAME (E.G. ENDF/B) (A6) -
CD HMAT ISOTOPE IDENTIFICATION (E.G. ENDF/B MAT NO.) (A6) -
CD AMASS GRAM ATOMIC WEIGHT -
CD EFISS TOTAL THERMAL ENERGY YIELD/FISSION (W.SEC/FISS) -
CD ECAPT TOTAL THERMAL ENERGY YIELD/CAPTURE (W.SEC/CAPT) -
CD TEMP ISOTOPE TEMPERATURE (DEGREES KELVIN) -
CD SIGPOT AVERAGE EFFECTIVE POTENTIAL SCATTERING IN -
CD RESONANCE RANGE (BARNS/ATOM) -
CD ADENS DENSITY OF ISOTOPE IN MIXTURE IN WHICH ISOTOPE -
CD CROSS SECTIONS WERE GENERATED (A/BARN-CM)-
CD KBR ISOTOPE CLASSIFICATION -
CD 0=UNDEFINED -
CD 1=FISSILE -
CD 2=FERTILE -
CD 3=OTHER ACTINIDE -
CD 4=FISSION PRODUCT -
CD 5=STRUCTURE -
CD 6=COOLANT -
CD 7=CONTROL -
CD ICHI ISOTOPE FISSION SPECTRUM FLAG -
CD ICHI.EQ.0, USE FILE-WIDE CHI -
CD ICHI.EQ.1, ISOTOPE CHI VECTOR -
CD ICHI.GT.1, ISOTOPE CHI MATRIX -
CD IFIS (N,F) CROSS SECTION FLAG -
CD IFIS=0, NO FISSION DATA IN PRINCIPAL CROSS -
CD SECTION RECORD -
CD =1, FISSION DATA PRESENT IN PRINCIPAL -
CD CROSS SECTION RECORD -
CD IALF (N,ALPHA) CROSS SECTION FLAG -
CD SAME OPTIONS AS IFIS -
CD INP (N,P) CROSS SECTION FLAG -
CD SAME OPTIONS AS IFIS -
CD IN2N (N,2N) CROSS SECTION FLAG -
CD SAME OPTIONS AS IFIS -
CD IND (N,D) CROSS SECTION FLAG -
CD SAME OPTIONS AS IFIS -
CD INT (N,T) CROSS SECTION FLAG -
CD SAME OPTIONS AS IFIS -
CD LTOT NUMBER OF MOMENTS OF TOTAL CROSS SECTION PROVIDED -
CD IN PRINCIPAL CROSS SECTIONS RECORD -
CD LTRN NUMBER OF MOMENTS OF TRANSPORT CROSS SECTION -
CD PROVIDED IN PRINCIPAL CROSS SECTION RECORD -
CD ISTRPD NUMBER OF COORDINATE DIRECTIONS FOR WHICH -
CD COORDINATE DEPENDENT TRANSPORT CROSS SECTIONS -
CD ARE GIVEN, IS ISTRPD=0, NO COORDINATE DEPENDENT -
CD TRANSPORT CROSS SECTIONS ARE GIVEN. -
CD IDSCT(N) SCATTERING MATRIX TYPE IDENTIFICATION FOR -
CD SCATTERING BLOCK N, SIGNIFICANT ONLY IF -
CD LORD(N).GT.0 -
CD IDSCT(N)=000 + NN, TOTAL SCATTERING, (SUM OF -
CD ELASTIC, INELASTIC, AND N2N SCATTERING -
CD MATRIX TERMS), -
CD =100 + NN, ELASTIC SCATTERING -
CD =200 + NN, INELASTIC SCATTERING -
CD =300 + NN, (N,2N) SCATTERING,----SEE -
CD NOTE BELOW---- -
CD WHERE NN IS THE LEGENDRE EXPANSION INDEX OF THE -
CD FIRST MATRIX IN BLOCK N -
CD LORD(N) NUMBER OF SCATTERING ORDERS IN BLOCK N. IF -
CD LORD(N)=0, THIS BLOCK IS NOT PRESENT FOR THIS -
CD ISOTOPE. IF NN IS THE VALUE TAKEN FROM -
CD IDSCT(N), THEN THE MATRICES IN THIS BLOCK -
CD HAVE LEGENDRE EXPANSION INDICES OF NN,NN+1, -
CD NN+2,...,NN+LORD(N)-1 -
CD JBAND(J,N) NUMBER OF GROUPS THAT SCATTER INTO GROUP J, -
CD INCLUDING SELF-SCATTER, IN SCATTERING BLOCK N. -
CD IF JBAND(J,N)=0, NO SCATTER DATA IS PRESENT IN -
CD BLOCK N -
CD IJJ(J,N) POSITION OF IN-GROUP SCATTERING CROSS SECTION IN -
CD SCATTERING DATA FOR GROUP J, SCATTERING BLOCK -
CD N, COUNTED FROM THE FIRST WORD OF GROUP J DATA. -
CD IF JBAND(J,N).NE.0 THEN IJJ(J,N) MUST SATISFY -
CD THE RELATION 1.LE.IJJ(J,N).LE.JBAND(J,N) -
C -
CD NOTE- FOR N,2N SCATTER, THE MATRIX CONTAINS TERMS -
CD SCAT(J TO G), WHICH ARE EMISSION (PRODUCTION)- -
CD BASED, I.E., ARE DEFINED SUCH THAT MACROSCOPIC -
CD SCAT(J TO G) TIMES THE FLUX IN GROUP J GIVES -
CD THE RATE OF EMISSION (PRODUCTION) OF NEUTRONS -
CD INTO GROUP G. -
C -
C-----------------------------------------------------------------------
C-----------------------------------------------------------------------
CR PRINCIPAL CROSS SECTIONS (5D RECORD) -
C -
CL ((STRPL(J,L),J=1,NGROUP),L=1,LTRN), -
CL 1((STOTPL(J,L),J=1,NGROUP),L=1,LTOT),(SNGAM(J),J=1,NGROUP). -
CL 2(SFIS(J),J=1,NGROUP),(SNUTOT(J),J=1,NGROUP), -
CL 3(CHISO(J),J=1,NGROUP),(SNALF(J),J=1,NGROUP), -
CL 4(SNP(J),J=1,NGROUP),(SN2N(J),J=1,NGROUP), -
CL 5(SND(J),J=1,NGROUP),(SNT(J),J=1,NGROUP), -
CL 6((STRPD(J,I),J=1,NGROUP),I=1,ISTRPD) -
C -
CW (1+LTRN+LTOT+IALF+INP+IN2N+IND+ISTRPD+2*IFIS+ -
CW ICHI*(2/(ICHI+1)))*NGROUP=NUMBER OF WORDS -
C -
CB FORMAT(4H 5D ,5E12.5/(6E12.5)) LENGTH OF LIST AS ABOVE -
C -
CD STRPL(J,L) PL WEIGHTED TRANSPORT CROSS SECTION -
CD THE FIRST ELEMENT OF ARRAY STRPL IS THE -
CD CURRENT (P1) WEIGHTED TRANSPORT CROSS SECTION -
CD THE LEGENDRE EXPANSION COEFFICIENT FACTOR (2L+1) -
CD IS NOT INCLUDED IN STRPL(J,L). -
CD STOTPL(J,L) PL WEIGHTED TOTAL CROSS SECTION -
CD THE FIRST ELEMENT OF ARRAY STOTPL IS THE -
CD FLUX (P0) WEIGHTED TOTAL CROSS SECTION -
CD THE LEGENDRE EXPANSION COEFFICIENT FACTOR (2L+1) -
CD IS NOT INCLUDED IN STOTPL(J,L). -
CD SNGAM(J) (N,GAMMA) -
CD SFIS(J) (N,F) (PRESENT IF IFIS.GT.0) -
CD SNUTOT(J) TOTAL NEUTRON YIELD/FISSION (PRESENT IF IFIS.GT.0) -
CD CHISO(J)I ISOTOPE CHI (PRESENT IF ICHI.EQ.1) -
CD SNALF(J) (N,ALPHA) (PRESENT IF IALF.GT.0) -
CD SNP(J) (N,P) (PRESENT IF INP.GT.0) -
CD SN2N(J) (N,2N) (PRESENT IF IN2N.GT.0) ----SEE -
CD NOTE---- -
CD SND(J) (N,D) (PRESENT IF IND.GT.0) -
CD SNT(J) (N,T) (PRESENT IF INT.GT.0) -
CD STRPD(J,I) COORDINATE DIRECTION I TRANSPORT CROSS SECTION -
CD (PRESENT IF ISTRPD.GT.0) -
C -
CN NOTE - THE PRINCIPAL N,2N CROSS SECTION SN2N(J) -
CN IS DEFINED AS THE N,2N REACTION CROSS SECTION, -
CN I.E., SUCH THAT MACROSCOPIC SN2N(J) TIMES THE -
CN FLUX IN GROUP J GIVES THE RATE AT WHICH N,2N -
CN REACTIONS OCCUR IN GROUP J. THUS, FOR N,2N -
CN SCATTERING, SN2N(J) = 0.5*(SUM OF SCAT(J TO G) -
CN SUMMED OVER ALL G). -
C -
C-----------------------------------------------------------------------
C-----------------------------------------------------------------------
CR ISOTOPE CHI DATA (6D RECORD) -
C -
CC PRESENT IF ICHI.GT.1 -
C -
CL ((CHIISO(K,J),K=1,ICHI),J=1,NGROUP),(ISOPEC(I),I=1,NGROUP) -
C -
CW NGROUP*(ICHI+1)=NUMBER OF WORDS -
C -
CB FORMAT(4H 6D ,5E12.5/(6E12.5)) CHIISO -
CB FORMAT(12I6) ISOPEC -
C -
CD CHIISO(K,J) FRACTION OF NEUTRONS EMITTED INTO GROUP J AS -
CD RESULT OF FISSION IN ANY GROUP,USING SPECTRUM K -
CD ISOPEC(I) ISOPEC(I)=K IMPLIES THAT SPECTRUM K IS USED -
CD TO CALCULATE EMISSION SPECTRUM FROM FISSION -
CD IN GROUP I -
C -
C-----------------------------------------------------------------------
C-----------------------------------------------------------------------
CR SCATTERING SUB-BLOCK (7D RECORD) -
C -
CC PRESENT IF LORD(N).GT.0 -
C -
CL ((SCAT(K,L),K=1,KMAX),L=1,LORDN) -
C -
CC KMAX=SUM OVER J OF JBAND(J,N) WITHIN THE J-GROUP RANGE OF THIS -
CC SUB-BLOCK. IF M IS THE INDEX OF THE SUB-BLOCK, THE J-GROUP -
CC RANGE CONTAINED WITHIN THIS SUB-BLOCK IS -
CC JL=(M-1)*((NGROUP-1)/NSBLOK+1 TO JU=MIN0(NGROUP,JUP), -
CC WHERE JUP=M*((NGROUP-1)/NSBLOK+1). -
C -
CC LORDN=LORD(N) -
CC N IS THE INDEX FOR THE LOOP OVER NSCMAX (SEE FILE STRUCTURE) -
C -
CW KMAX*LORDN=NUMBER OF WORDS -
C -
CB FORMAT(4H 7D ,5E12.5/(6E12.5)) -
C -
CD SCAT(K,L) SCATTERING MATRIX OF SCATTERING ORDER L, FOR -
CD REACTION TYPE IDENTIFIED BY IDSCT(N) FOR THIS -
CD BLOCK, JBAND(J,N) VALUES FOR SCATTERING INTO -
CD GROUP J ARE STORED AT LOCATIONS K=SUM FROM 1 -
CD TO (J-1) OF JBAND(J,N) PLUS 1 TO K-1+JBAND(J,N).-
CD THE SUM IS ZERO WHEN J=1, J-TO-J SCATTER IS -
CD THE IJJ(J,N)-TH ENTRY IN THE RANGE JBAND(J,N), -
CD VALUES ARE STORED IN THE ORDER (J+JUP), -
CD (J+JUP-1),...,(J+1),J,(J-1),...,(J-JDN), -
CD WHERE JUP=IJJ(J,N)-1 AND JDN=JBAND(J,N)-IJJ(J,N)-
C -
C-----------------------------------------------------------------------
\end{ccode}
\normalsize
\vspace{1 pt}
Most of the variables in the ``File Identification and File Control''
record are taken from the user's input. Note that \cword{MAXUP}
is always set to zero. CCCCR does not process the NJOY thermal data
at the present time. The \cword{ICHIST} parameter will always be
zero. CCCCR does not produce a file-wide fission spectrum or matrix.
The old practice of using a single fission spectrum for all calculations
is inaccurate and obsolete. Actually, the effective fission spectrum
depends on the mixture of isotopes and the flux. Any file-wide spectrum
would have to be at least problem dependent, and it should also be
region dependent. The parameters \cword{NSCMAX} and \cword{NSBLOK}
in the ``File Control'' record will be discussed in connection with
the scattering matrix format.
In the ``File Data'' record, the Hollerith set identification and the
isotope names are taken from the user's input. As mentioned above,
the file-wide fission spectrum \cword{CHI} never appears. The mean
neutron velocities by group (\cword{VEL}) are obtained from the inverse
velocities computed by \hyperlink{sGROUPRhy}{GROUPR}:
\begin{equation}
\Big<\frac{1}{v}\Big>_g=\frac{\displaystyle\int_g \,\frac{1}{v}\,\phi(E)\,dE}
{\displaystyle\int_g \phi(E)\,dE} \,\,,
\end{equation}
\vspace{1 pt}
\noindent
where $g$ is the group index, $\phi(E)$ is the
\hyperlink{sGROUPRhy}{GROUPR} weighting spectrum,
and $v$ is the neutron velocity, which is computed from the neutron mass
and energy using $v{=}\sqrt{2E/m}$. The units of these quantities are s/m;
they are converted to cm/s for ISOTXS by inverting and multiplying by 100.
The group structure [see \cword{EMAX(J)} and \cword{EMIN}] is obtained
directly from \cword{mf}=1, \cword{mt}=451 on the GENDF tape. Note
that \hyperlink{sGROUPRhy}{GROUPR} energy groups
are given in order of increasing energy and ISOTXS energy groups are given
in order of decreasing energy. CCCCR handles the conversion.
The ``File-Wide Chi Data'' record never appears; see the discussion
above for the reasons.
In the ``Isotope Control and Group Independent Data'' record, the first
ten parameters are taken from the user's input. The gram atomic weight
for the material (\cword{AMASS}) can be computed from the ENDF AWR
parameter available on the GENDF file using the gram atomic weight of
the neutron as a multiplier. The energy-release parameters \cword{EFISS}
and \cword{ECAPT} must also be computed by the user. The \cword{ECAPT}
values are normally based on the ENDF Q values given in File 3, but,
in some cases, it is also necessary to add additional decay energy
coming from short-lived activation steps. For example, the \cword{ECAPT}
value for $^{238}$U should include the energy for the $^{239}$U
$\beta$-decay step, and perhaps even the energy from the $^{239}$Np
$\beta$ decay. The values for \cword{EFISS} should be based on the total
non-neutrino energy release, which can be obtained from
\cword{mf}=3, \cword{mt}=18 or
\cword{mf}=1, \cword{mt}=458 on the ENDF tape. The \cword{TEMP}
parameter is normally set
to 300K. The value of \cword{SIGPOT} can be computed from the
scattering-radius parameter AP in File 2 of the ENDF tape using
$\sigma_p{=}4\pi a^2$. The parameter \cword{ADENS} is usually set
to zero to imply infinite dilution. \cword{KBR} can be chosen based
on the normal use of the material by the community for which the library
is being produced.
The \cword{ICHI} parameter is related to the \cword{ichix} parameter in
the user's input. As discussed above, the option \cword{ICHI=0} is
never used by CCCCR. Beyond that, the NJOY user has the option of producing
a fission $\chi$ vector using the default GROUPR flux (which is available
on the GENDF tape) or a user-supplied weighting flux \cword{SPEC}. This
enables the user to produce an ISOTXS library appropriate to a class of
problems with a flux similar to \cword{SPEC}. In general, the
incident-energy dependence of the fission spectrum is weak, so the
choice of this weighting spectrum is not critical. Noticeable differences
might be expected between a thermal spectrum on the one hand and a
fast-reactor or fusion-blanket spectrum on the other. The $\chi$ vector
is defined as follows:
\begin{equation}
\chi_{g'}=\frac{\displaystyle\sum_g \sigma_{f g\rightarrow g'}\,\phi_g}
{\displaystyle\sum_{g'} \sum_g \sigma_{f g\rightarrow g'}\,\phi_g}\,\, ,
\end{equation}
\noindent
where $\sigma_f$ is the fission group-to-group matrix from
\hyperlink{sGROUPRhy}{GROUPR},
$\phi_g$ is either the model flux or \cword{SPEC}, and the denominator
assures that $\chi_{g'}$ will be normalized. Actually, the calculation
is more complicated than that because of the necessity to include
delayed-neutron production. A ``steady-state'' value for the fission
spectrum can be obtained as follows:
\begin{equation}
\chi^{SS}_{g'}=\frac{\displaystyle\sum_g\sigma_{f g\rightarrow g'}
\,\phi_g + \chi^D_{g'}\sum_g\bar{\nu}^D_g\sigma_{fg}\,\phi_g}
{\displaystyle\sum_{g'}\sum_g\sigma_{f g\rightarrow g'}\,\phi_g
+\sum_g\bar{\nu}^D_g\sigma_{fg}\,\phi_g} \,\,,
\end{equation}
\noindent
where $\bar{\nu}^D_g$ is the delayed-neutron yield obtained from
\cword{mf}=3, \cword{mt}=455 on the GENDF tape, $\chi^D_g$ is the
total delayed-neutron
spectrum obtained by summing over the time groups in
\cword{mf}=5, \cword{mt}=455,
and $\sigma_{fg}$ is the fission cross section for group $g$ obtained
from \cword{mf}=3, \cword{mt}=18.
This is still not the end of the complications of fission. If the
partial fission reactions MT=19, 20, 21, and 38 are present, the fission
matrix term in the above equations is obtained by adding the contributions
from all the partial reactions found. In these cases, a matrix for
MT=18 will normally not be present on the GENDF tape. If it is, it will
be ignored. Beginning with NJOY 91.0, a new and more efficient
representation is used for the fission matrix computed in
\hyperlink{sGROUPRhy}{GROUPR}. It is well known that the shape
of the fission spectrum is independent of energy up to energies of
several hundred keV. \hyperlink{sGROUPRhy}{GROUPR} takes advantage
of this by computing this low-energy spectrum only once. It then
computes a fission neutron production cross section for all the groups
up to the energy at which significant energy dependence starts. At
higher energies, the full group-to-group fission matrix is computed as
in earlier versions of NJOY. Therefore, it is now necessary to compute
the values of $\sigma_{fg\rightarrow g'}$ as used in the above equations
using
\begin{equation}
\sigma_{fg\rightarrow g'}=\chi^{LE}_{g'}(\bar{\nu}\sigma_f)^{LE}_g
+\sigma^{HE}_{fg\rightarrow g'} \,\,,
\end{equation}
\noindent
where LE stands for low energy, HE stands for high energy; the
low-energy production cross sections written as $\nu\sigma_f$ will be
found on the GENDF tape using the special flag \cword{IG2LO=0}, and the
low-energy $\chi$ will be found on the GENDF tape with \cword{IG=0}.
In order to obtain still better accuracy, CCCCR can produce
a fission $\chi$ matrix instead of the vector. Using the above
notation, the full $\chi$ matrix becomes
\begin{equation}
\chi^{SS}_{g\rightarrow g'}=\frac{\chi^{LE}_{g'}(\bar{\nu}\sigma_f)^{LE}_g
+\sigma^{HE}_{fg\rightarrow g'}+\chi^D_{g'}\bar{\nu}^D_g\sigma_{fg}}
{{\rm NORM}} \,\,,
\end{equation}
\noindent
where NORM is just the value that normalizes the $\chi$ matrix; that is,
the sum of the numerator over all $g'$. Note that the ``Isotope Chi
Data'' record allows for a rectangular fission matrix similar to the
one produced by \hyperlink{sGROUPRhy}{GROUPR}. It is obtained
by using the input \cword{SPEC} array to define the range of groups
that will be averaged into each
of the final \cword{ICHIX} spectra. For example, to collapse a
ten-group $\chi$ matrix into a five-group matrix, \cword{SPEC} might
contain the ten values 1, 2, 3, 4, 5, 5, 5, 5, 5, 5. More formally,
\begin{equation}
\chi^{SS}_{k\rightarrow g'}=\frac{\displaystyle\sum_{s(g)=k}\big(
\chi^{LE}_{g'}(\bar{\nu}\sigma_f)^{LE}_g
+\sigma^{HE}_{fg\rightarrow g'}+\chi^D_{g'}\bar{\nu}^D_g
\sigma_{fg}\big)\,\phi_g}
{{\rm NORM}} \,\,,
\end{equation}
\noindent
where $\phi_g$ is the default weighting function from the GENDF tape,
$s(g)$ is the \cword{SPEC} array provided by the user, and the summation
is over all groups $g$ satisfying the condition that $s(g){=}k$. Future
versions of CCCCR could construct the \cword{SPEC} array automatically
using the information in the new GENDF format.
Continuing with the description of the ``Isotope Control and Group
Independent Data'' record, the next 9 parameters are flags that tell
what reactions will be described in the ``Principal Cross Sections''
record. They will be described below. Similarly, the parameters
\cword{IDSCT}, \cword{LORDN}, \cword{JBAND}, and \cword{IJJ}
will be described later in connection with the ``Scattering Sub-Block''
records.
The ISOTXS format allows for a fixed set of principal cross sections that
was chosen based on the needs of fission reactor calculations. This
is one of its main defects; the list does not allow for other reactions
that become important above 6--10 MeV, and it does not allow for other
quantities of interest, such as gas production, KERMA factors, and
radiation damage production cross sections. Most of the reactions are
simply copied from \cword{mf}=3 on the GENDF tape with the group order
inverted --- this is true for \cword{SNGAM}, the (n,$\gamma$) cross
section, which is taken from \cword{mt}=102; for \cword{SFIS}, the (n,f) cross
section, which is taken from \cword{mt}=18; for \cword{SNALF}, the (n,$\alpha$)
cross section, which is taken from \cword{mt}=107; for \cword{SNP}, the (n,p)
cross section, which is taken from \cword{mt}=103; for \cword{SND}, the (n,d)
cross section, which is taken from \cword{mt}=104; and for \cword{SNT}, the
(n,t) cross section, which is taken from \cword{mt}=105. The (n,2n) cross
section, \cword{SN2N}, is normally taken from \cword{mt}=16. However, earlier
versions of ENDF represented the sequential (n,2n) reaction in $^9$Be
using \cword{mt}=6, 7, 8, and 9. If present, these partial (n,2n) reactions
are added into \cword{SN2N}. The flags \cword{IFIS}, \cword{IALF},
\cword{INP}, \cword{IN2N}, \cword{IND}, and \cword{INT} in the
``Isotope Control and Group Independent Data'' record are set to
indicate which of these reactions have been found for this material.
In going from version III of the CCCC specifications to version IV,
there was some controversy over the appropriate definition for the
(n,2n) cross section and matrix. It was decided that the quantity
in \cword{SN2N} would be the (n,2n) reaction cross section; that
is, it would define the probability that an (n,2n) reaction takes
place. The (n,2n) matrix would be defined such that the sum over
all secondary groups would produce the (n,2n) production cross section,
which is two times larger than the reaction cross section.
The \cword{CHISO} vector, which contains the fission spectrum vector
(if any), was discussed above. A complete calculation of the fission
source also requires the fission yield, \cword{SNUTOT}, which can be used
together with the fission cross section to calculated the fission neutron
production cross section, $\bar{\nu}\sigma_f$. The fission yield can be
calculated from the \hyperlink{sGROUPRhy}{GROUPR} fission matrix using
\begin{equation}
\bar{\nu}_g=\frac{\displaystyle\sum_{g'}\sigma_{fg\rightarrow g'}}
{\sigma_{fg}} \,\,.
\end{equation}
\vspace{0.5 pt}
\noindent
Adding delayed neutron contributions and accounting for the partition of
the fission matrix into low-energy and high-energy parts (see the
discussion of $\chi$ above) gives the equation actually used by CCCCR:
\begin{equation}
\bar{\nu}^{SS}_g=\frac{\displaystyle\sum_{g'}\sigma^{HE}_{fg\rightarrow g'}
+(\bar{\nu}\sigma_f)^{LE}_g + \bar{\nu}^D_g\sigma_{fg}}
{\sigma_{fg}} \,\,.
\end{equation}
\vspace{0.5 pt}
The total cross section produced by \hyperlink{sGROUPRhy}{GROUPR}
contains two components:
the flux-weighted or P$_0$ total cross section, and the current-weighted
or P$_1$ total cross section. The P$_0$ part is stored into
\cword{STOTPL}, and the \cword{LTOT} flag is set to 1. \cword{STRPL}
contains the transport cross section used by diffusion codes; this is,
\begin{equation}
\sigma_{tr,g}= \sigma_{t1,g}-\sum_{g'}\sigma_{e1,g\rightarrow g'} \,\,,
\end{equation}
\vspace{0.5 pt}
\noindent
where $\sigma_{t1,g}$ is the P$_1$ total cross section and
$\sigma_{e1,g\rightarrow g'}$ is the P$_1$ component of the elastic
scattering matrix, which is obtained from \cword{mf}=6,
\cword{mt}=2 on the GENDF tape from
\hyperlink{sGROUPRhy}{GROUPR}. The flag \cword{LTRN} is set to
1; that is, no higher-order transport corrections are
provided. Direction-dependent transport cross sections are not
computed by CCCCR; therefore, \cword{ISTRPD} is always zero, and
the \cword{STRPD} vectors are missing.
As discussed above, the ``Isotope Chi Data'' record may be present
if the user set \cword{ICHIX>1} and supplied a \cword{SPEC} vector to
define how the full $\chi$ matrix is to be collapsed into a
rectangular $\chi$ matrix.
The treatment of scattering matrices in the ISOTXS format is complex
and has lots of possible variations. Only the variations supported
by CCCCR will be described here. First of all, the scattering data are
divided into blocks and subblocks. A block is either one of the
designated scattering reactions [that is, total, elastic, inelastic,
or (n,2n)] and contains all the group-to-group elements and Legendre
orders for that reaction (\cword{IFOPT=1}), or it is one particular
Legendre order for one of the designated reactions and contains all
the group-to-group elements for that order and reaction (\cword{IFOPT=2}).
Its actual content is determined by \cword{IDSCT} and \cword{LORDN}.
If \cword{IFOPT=1} has been selected, \cword{IDSCT(1)=100} and
\cword{LORDN(1)=4} would designate a block for the elastic scattering
matrix of order P$_3$ that contains all 4 Legendre orders and all
group-to-group elements. If \cword{IFOPT=2} has been selected,
\cword{IDSCT(1)=100} with \cword{LORDN(1)=1} would designate a block
containing all group-to-group elements for the P$_0$ elastic matrix,
\cword{IDSCT(2)=101} with \cword{LORDN(2)=1} would designate
a block containing the P$_1$ elastic matrix, and so on. In CCCCR,
\cword{LORDN} is always equal to 1 for \cword{IFOPT=2}.
The ISOTXS format attempts to pack scattering matrices efficiently.
First, all the scattering matrices treated here are triangular
because only downscatter is present. And second, because of the
limited range of elastic downscatter, only a limited range of groups
above the inscatter group will contribute to the scattering into
a given secondary-energy group. Therefore, ISOTXS removes zero
cross sections by defining bands of incident energy groups that
contribute to each final energy group. The bands are defined by
\cword{JBAND}, the number of initial energy groups in the band,
and \cword{IJJ}, an index to identify the position of the ingroup
element in the band. The following table illustrates banding for
a hypothetical elastic scattering reaction:
\begin{center}
\begin{tabular}{cccc}
Band & Element & JBAND & IJJ \\ \hline
1 & 1$\rightarrow$1 & 1 & 1 \\
2 & 2$\rightarrow$2 & 2 & 1 \\
& 1$\rightarrow$2 & & \\
3 & 3$\rightarrow$3 & 2 & 1 \\
& 2$\rightarrow$3 & & \\
4 & 4$\rightarrow$4 & 2 & 1 \\
& 3$\rightarrow$4 & & \\ \hline
\end{tabular}
\end{center}
Note that \cword{IJJ} is always 1 in the absence of upscatter. This
scheme is efficient for elastic scattering, but it is not efficient
for threshold reactions because the ingroup element must always be
included in the band. This means that lots of zeros must be given
for final energy groups below the threshold group. An improved
and simplified scheme is used in the MATXS format.
For \cword{IFOPT=2}, the elements in the table above would be stored
in the sequence shown, top to bottom. Each Legendre order would
have its own block arranged in the same order. For \cword{IFOPT=1},
the Legendre order data are intermixed with the group-to-group
data. In each band, the elements for all initial groups for
P$_0$ are given, then all initial groups for P$_1$, and so on
through \cword{LORDN} Legendre orders.
Scattering matrices can be very large. For example, an 80-group
elastic matrix can have as many as $80\times 79/2=3160$ elements
per Legendre order. That would be 12 640 words for a P$_3$ block
using \cword{IFOPT=1}, or four blocks of 3160 words each for
\cword{IFOPT=2}. The latter is practical; the former is not
\footnote{At least it was not practical many years ago. However
we see no benefit in revising the existing algorithm, and so
keep this description}. The
corresponding numbers for 200 groups would be 79 600 and 19 900.
Both of these numbers are clearly impractical as record sizes. This
is where subblocking comes in. If each block is divided up so that
there is one subblock for each energy group, the maximum record size
is reduced substantially. For \cword{IFOPT=1}, the maximum record
size is equal to the number of groups times the number of Legendre
orders, or 800 for the 200-group P$_3$ case. For \cword{IFOPT=2},
the maximum record size is just equal to the number of groups.
Although the ISOTXS formats allows subblocks to contain several
groups, CCCCR does not. The possible values of \cword{NSBLOK} are
limited to 1 and \cword{NGROUP}. In summary, the CCCCR user has
four matrix blocking options:
\begin{enumerate}
\begin{singlespace}
\item {\it IFOPT=1 and NSBLOK=1}. This produces a single block and a
single subblock for each reaction. It is probably the best