NJOY 99.0 31 Dec 99 ----------------------------------------------------------------------- This is version 99.0 of the NJOY nuclear data processing system. It is a cleaned up version of NJOY 97 that moves further towards using modern block structures instead of statement numbers for flow control (but some routines still use statement numbers!). Physical constants have been moved into a few global common blocks and standardized to the current NIST CODATA values. The bulk of the changes are in the ACER module, where we support several new features scheduled to appear early in the year 2000 in MCNP4c, and where we provide data for high-energy problems, incident charged particles, and photonuclear reactions for MCNPX. We also fix the NJOY Y2K problem! Note that there are two new test problems: Problem 13 is to demonstrate the new MCNP formats and ACE plotting. Problem 14 is to demonstrate ACE incident proton data and MCNPX format. To help the user, the following sections start with specific key phrases; use your editor to search for the desired topics. << The NJOY Nuclear Data Processing System >> << NJOY documentation >> << distribution files >> << installation on unix machines >> << installation on DOS/Windows machines using Lahey LF95 >> << installation on DOS/Windows machines using Absoft f90 >> << revision control with upd >> << notes on machine dependencies >> << test problems >> This version has been tested on a Sun Ultra using f77, on an SGI Origin 2000 using f90, on X86 machine using Absoft f90 and Lahey LF95, and on a linux machine using g77 and Portland Group f77. Caution: problems were seen for some systems when optimization was used. Supporting files for other systems have to be updated from the NJOY97 versions by analogy with the NJOY99 versions. Users not supported by the files in this distribution are requested to send back the appropriate patches for their machines for further distribution. ----------------------------------------------------------------------- << The NJOY Nuclear Data Processing System >> The NJOY Nuclear Data Processing System is a modular computer code used for converting evaluated nuclear data in the ENDF format into libraries useful for applications calculations. Because the Evaluated Nuclear Data File (ENDF) format is used all around the world (e.g., ENDF/B-VI in the US, JEF-2.2 in Europe, JENDL-3.2 in Japan, BROND-2.2 in Russia), NJOY gives its users access to a wide variety of the most up-to-date nuclear data. NJOY provides comprehensive capabilities for processing evaluated data, and it can serve applications ranging from continuous-energy Monte Carlo (MCNP), through deterministic transport codes (DANT, ANISN, DORT), to reactor lattice codes (WIMS, EPRI). The modular nature of NJOY makes it easier to add output for other kinds of application libraries or to add new computational features. NJOY handles a wide variety of nuclear effects, including resonances, Doppler broadening, heating (KERMA), radiation damage, thermal scattering (even cold moderators), gas production, neutrons and charged particles, photoatomic interactions, photonuclear reactions, self shielding, probability tables, photon production, and high-energy interactions (to 150 MeV). Output can include printed listings, special library files for applications, and Postscript graphics (plus color). ----------------------------------------------------------------------- << NJOY documentation >> New documentation for NJOY99 is not yet available. In the meantime, use the NJOY91 documentation in the report "The NJOY Nuclear Data Processing System, Version 91," LA-12740-M (1994). The differences in user input will be found in the Userinp file that comes with the distribution, or in the comments in the source code. For more information on LEAPR, see "New Thermal Neutron Scattering Files for ENDF/B-VI Release 2," LA-12639-MS (1994). The reports are available by request or in Postscript form in the Publications area of http://t2.lanl.gov/. In addition, there are tutorials on the ENDF system and NJOY97 available in http://t2.lanl.gov/endf and http://t2.lanl.gov/njoy. ----------------------------------------------------------------------- << distribution files >> The distribution files for NJOY 99 are as follows: Readme0 this information file Userinp text file of NJOY input instructions src upd source file (contains *deck cards) up0 upd directives input file for 99.0 upsun specialized updates for Sun workstations upsun8 specialized updates for Sun using -dbl option upcray specialized updates for UNICOS at Los Alamos uprs6k specialized updates for IBM RS/6000 machines updecau specialized updates for DEC Alpha unix uplinux specialized updates for linux using g77 upabs specialized updates for dos Absoft f90 uplf95 specialized updates for dos Lahey LF95 makef.sun Sun make file for maintaining njoy makef.sun8 Sun make file for for -dbl option (see upsun8) makef.cray UNICOS make file for maintaining njoy makef.rs6k IBM RS/6000 make file for maintaining njoy makef.decau DEC Alpha unix make file for f90 makef.linux make file for linux using the g77 compiler makef.abs make file for dos Absoft f90 install.bat install script for Lahey LF95 load.bat load script for Lahey LF95 in01 unix shell script to run test problem 1 run01.bat DOS batch file to run test problem 1 in01.dat input data for DOS run of test problem 1 out01 test problem 1 output from Sun Ultra 60 pend01 test problem 1 PENDF from Sun Ultra 60 in02 . run02.bat . in02.dat . out02 . pend02 . in03 . run03.bat . in03.dat . out03 . plot03.ps . in04 . run04.bat . in04.dat . out04 . in05 . run05.bat . in05.dat . out05 . plot05.ps . in06 . run06.bat . in06.dat . plot06.ps . in07 . run07.bat . in07.dat . out07 . pend07 . ace07 . in08 . run08.bat . in08.dat . out08 . pend08 . ace08 . in09 . run09.bat . in09.dat . out09 . pend09 . in10 . run10.bat . in10.dat . out10 . pend10 . ace10 . in11 . run11.bat . in11.dat . out11 . wims11 . in12 . run12.bat . in12.dat . out12 . pend12 . plot12.ps . in13 . run13.bat . in13.dat . out13 . pend13 . ace13 . plot13.ps . in14 . run14.bat . in14.dat . out14 . ace14 . plot14.ps . gam23 input data for test problem gam27 input data for test problem t322 input data for test problem t404 input data for test problem t511 input data for test problem eni61 input data for test problem epn14 input data for test problem upd.f version-control code for updating njoy (this version writes module.f) ----------------------------------------------------------------------- << installation on unix machines >> For the initial installation... Make sure the following files are in your working directory: makef.xxx for your system upd.f src up0 upxxx for your system and do the following: cp makef.xxx Makefile f90 -o upd upd.f (or cf90, f77, g77, ...) cat up0 upxxx > upn (check upn to make sure that "*set sw" is present, if needed) upd make xnjoy is your executable file module.f is a fortran compiler input file module.o is an object deck To make a change to NJOY 99.0 on unix ... Make sure the following files are available: upd (the executable version) upn (the expanded version) src Makefile module.f files module.o files previous xnjoy Edit upn to add the new upd "ident" and to list which modules need to be updated; for example, *cpl groupr *ident fixbug */ fix a hypothetical bug in groupr *d groupr.444,445 *ident vers ... Then just do the following: upd make Versions of the test problem input files in unix script form are included in the distribution of NJOY 99.0. To run the test problems, move the input scripts to a test directory created in the directory that contains the xnjoy file, and then simple type sh in01 and so on. Compare the resulting files, such as out01 and pend01, to the ones included in the distribution; e.g., diff out01 ../out01 > difs-out1 ----------------------------------------------------------------------- << installation on DOS/Windows machines using Lahey LF95 >> For the initial installation... Open DOS command window and change the active directory to the NJOY99 working directory. Make sure that your working directory for NJOY99 contains the following files: src up0 uplf95 upd.f install.bat load.bat (combine up0 and uplf95 into upn) copy up0+uplf95 upn (make sure that upn contains "*cmp all" and "*set sw") (compile upd) lf95 upd.f -out upd.exe (make the module.f files) upd (compile and load all the modules) install The final executable code will be njoy.exe. To run the test problems ... Create a subdirectory in your NJOY working directory called test. Move the in*.dat and run*.bat files into test. Make sure the following data files are available in your working directory (that is, the directory that contains test): t322 t404 t511 eni61 epn14 gam23 gam27 Using a DOS window, cd into test, and type "run01". Continue for run02, run03, etc. The result files, such as out01, out02, etc., will appear in the test directory. Compare the result files in the test directory with the one from the original distribution. To make changes to NJOY99 in the Lahey LF95 environment ... Edit upn to add the new upd "ident" and to list which modules need to be updated; for example, *cpl groupr *ident fixbug */ fix a hypothetical bug in groupr *d groupr.444,445 *ident vers ... Run upd from a DOS window. Run the compiler on the new deck or decks: lf95 -c deck.f Run the load script to rebuild the binary njoy.exe: load ----------------------------------------------------------------------- << installation on DOS/Windows machines using Absoft f90 >> For the initial installation... Make sure the following files are in your working directory: makef.abs upd.f src up0 upabs and do the following: copy makef.abs Makefile f90 -o upd.exe upd.f copy up0+upabs upn (check upn to make sure that the following lines are present at the start of the upn file: "*cpl all", "*lst all", "*set sw", and "*noid") upd amake njoy.exe is your executable file module.f is a fortran compiler input file module.lst is a listing file module.obj is an object deck Note the Absoft f90 doesn't like to have text beyond column 72. Therefore, we provide the module.lst files to give an easy way to see the upd reference numbers for each line. The module.f files do not have line identifiers. To make a change to NJOY 99.0 ... Make sure the following files are available: upd (the executable version) upn (the expanded version) src Makefile module.f files module.obj files previous njoy.exe Edit upn to add the new upd "ident" and to list which modules need to be updated; for example, *cpl groupr *lst groupr *noid *set sw *ident fixbug */ fix a hypothetical bug in groupr *d groupr.444,445 *ident vers ... Then just do the following: upd amake Versions of the test problem input files in for dos are given in two parts, a runXX.bat file, and an inXX.dat file that is used by the batch file. To run the test problems, move the input scripts to a test directory created in the directory that contains the njoy.exe file, and then simply type run01 and so on. Various output, pendf, ace, and Postscript files will be generated in the test directory. ----------------------------------------------------------------------- << version control with upd >> Early versions of NJOY were maintained with CDC or Cray UPDATE, or with the UPEML update emulator from Sandia National Laboratory. This approach had the problems that not everybody had UPDATE and that UPEML wasn't exactly compatible with UPDATE for changes made upon earlier changes. For these reasons, NJOY was provided with its own version control program called UPD. This program performs the same functions as UPDATE, but it is very simple in order to make it easier to transport the code to a variety of computer systems. UPD has evolved slightly from version to version of NJOY, and the version for NJOY 97 and NJOY99 works a little differently than the preceding version. The original text of NJOY 99 is given in a file called "src", which contains "*deck module" cards at the start of each NJOY module (njoy, reconr, etc.). No binary program library is used. UPD directives are given in the file "upn". Each set of directives starts with the statement "*ident name" and contains additional statements like "*i address" or "*d address" followed by the text to be inserted or deleted. The UPD addresses can have forms like the following: reconr.151 groupr.522,533 matxsr.111,up20.33 The NJOY Quality Assurance program requires that idents be added to the upn file in strict sequence. The first card after each "*ident name" card must be a comment card giving the module, date, and purpose for the change in the form */ groupr -- 30 Mar 95 -- fix problem with c.p. elastic */ reported by NEA-DB An ident should contain changes for only one module. Once an ident has been finished, dated, and released, it should never be changed directly. It should only be changed by some subsequent ident using line numbers like "up20.33". The conventional name for "official" idents are "up1", "up2", "up3", and so on. The corresponding version names would be "99.1", "99.2", "99.3", and so on. The last ident in upn is always "*ident vers", which has the following form: *ident vers */ update the version name and date */ to reflect the date of the latest modifications *d njoy.8,9 c * version 99.0 * c * 31 Dec 99 * *d njoy.279 data vers/'99.0 '/ This ident is changed as each ident is added to reflect the current version number and date. The result of this procedure is that it is always possible to determine what version was used to run a particular problem, and knowing the version, it it possible to determine the exact configuration of the code for any run. Code changes for different computer systems are handled by UPD in two ways. Generic changes are handled by "*if" constructs in the source file. Currently, only one such option is implemented. Add the card "*set sw" at the start of upn for "short-word" machines (32-bit words). More specific system changes are included in a machine ident that must be copied onto the end of the upn file. Examples are given in the distribution (see upsun, upuni-la, upuni-sd, etc.). These updates normally do things like change the names of the local time and date routines and personalize the NJOY "banner" for the specific laboratory. It is usually easy to transport UPD between different computer systems. Unit 6 is intended for writing on the screen or an equivalent log file. This is the default for many systems. UPD can put out two different kinds of files, a conventional compiler input file "module.f", and a special listing file "module.lst". Beginning with UPD for NJOY 97, the code can write out several updated modules during one pass for more efficiency. For example, "*cpl reconr,broadr" would write out compile files for the two modules RECONR and BROADR. Then a simple "make" would recompile these two new decks and relink them into the NJOY executable. Similarly, "*lst groupr" would make a new listing file for GROUPR. For new installations, "*cpl all" and "*lst all" will make all the compile and listing files. Just typing "make" will then finish the entire installation. ---------------------------------------------------------------------- << notes on machine dependencies >> We have tried to keep all routines that depend on the particular machine, operating system, or compiler being used in the NJOY module. We have provided "upxxx" files and special "makef.xxx" files that will incorporate machine dependencies into NJOY for system that we are able to test ourselves. Other files have sometimes been contributed by users with access to other systems. If you have to bring the code up on a new system, these existing files may help to guide you. One of the machine dependencies that has always been around is the differences in time and date calls on different system. With the advent of Fortran-90, this has been partly alleviated. However, Fortran-90 doesn't have an intrinsic routine to return the amount of system time that has been used by a job. Some of our upxxx files just return a run time based on the system clock, which would not be accurate in a multi-processing environment. The LANL Cray system provides the "second" call, which works fine. You'll just have to try to provide the best option available on your own local system. Starting late in the NJOY94 series, we changed over to using the SLATEC libraries for fundamental math routines, because they are very accurate, and they can be used without restrictions. These routines require some basic parameters to describe the real number system used by your computer. The source code gives some options for mostly obsolete systems. Most modern machines use IEEE arithmetic, and one of the sets of constants included in our upxxx file should be OK. However, you would be well advised to check your system's documentation to more specific values for these parameters. Note that different sets of parameters are used on 32-bit (real*8) systems and 64-bit systems (like the Cray). There are still some problems with number systems and word length on the machines in wide use today. Classical 32-bit machines work fairly well in NJOY99 using real*8 variables. As a rule, these machines and compilers do not support integer*8 variables. This can create word-alignment problems, and we have tried to fix them. However, some cases require binary records with mixed real and binary elements (CCCC-type files). In these cases, we have had to limit ourselves to 32-bit accuracy using real*4 and integer*4 values. In some cases, the compilers have "-r8", "-i8", or "-dbl" options that automatically promote code written to 64-bit standards to run on 32-bit machines. This seems to work OK for NJOY on some systems. However, you have to be sure that the set of compiler options that you use promotes both reals and integers to 64-bit size in order to prevent word-alignment problems. Unfortunately, neither linux g77 nor Sun f90 support such an autodoubling option, which is one of the reasons that we provided explicit doubling in NJOY99. The new generation of machines with 64-bit chips, such as the Sun Ultra, promise to eliminate this problem. However, the current compilers are not always completely 64-bit capable, and their abilities to use mixed real*8 and integer*8 data may be limited. Therefore, we are currently treating them just like 32-bit systems. Cray machines have always used 64-bit variables for both reals and integers, and there are no problems with mixed data. However, note that Cray arithmetic uses more bits in the exponents or real numbers and fewer in the fraction part. Therefore, numbers on the Cray have slightly less precision than those on the IEEE-type machines. ---------------------------------------------------------------------- << test problems >> An extensive set of test problems is provided with NJOY99, both to check an installation, and to provide examples of how to use NJOY. In order to provide continuity to earlier versions, we still use fairly old ENDF/B-III, -IV, and -V files for these tests. They also tend to have less detail than the new ENDF/B-VI files, which make the test problems run faster. Simple unix scripts or DOS batch files make it fairly easy to run the test problems. Problem 1: This one runs on carbon to check RECONR for materials with no resonance parameters, to do Doppler broadening to 300K, to calculate heating KERMA and radiation damage, and to calculate the thermal scattering from graphite. The pointwise (PENDF) results are converted into multigroup form. The important things to look at are the various counts in RECONR and the multigroup values from GROUPR on the file "out01". To see even more detail, check the PENDF file "pend01". Problem 2: This is a demonstration of preparing a library for LMFBR applications using methods active in the 80's. It is still useful for check RECONR resonance reconstruction, Doppler broadening to more than one temperature, the generation of unresolved resonance data, and multigroup averaging with self shielding. The CCCC output provides an alternative look at the cross sections and group-to-group matrices. Pay attention to the output from RECONR to see if the same number of resonance points are produced. Note the number of points at each temperature and the thermal quantities printed by BROADR. The unresolved self shielding shows up in the UNRESR output and again in GROUPR and CCCCR. The multigroup constants printed on "out02" provide plenty of opportunities to check your installation. For even more detail, check the PENDF file on "pend02". Problem 3: This one demonstrates processing photoatomic data and the use of MATXS output files. Newer versions of the photoatomic data are all on one file, rather than the two shown here. Note that two materials are processed to show the limiting behaviors. The multigroup constants printed by GAMINR on "out03" can be checked. Two different output formats are generated: the DTF format and the MATXS format. The DTFR numbers are given on the listing, and you can check the details of the MATXS results on "matxs03". DTFR also generates Postscript plots of its results; you can view them from "plot03" using ghostview or any Postscript printer. Problem 4: This test problem computes cross section covariances using the ERRORR module for U-235 from ENDF/B-V. The performance of ERRORR can be tested by looking at the values on "out04". Problem 5: This one demonstrates formatting covariance data using our "boxer" format, and it generates detailed Postscript plots (in color) of the variances and correlations. Look at "plot05" with ghostview or a color Postscript printer. Problem 6: This case demonstrates and tests some of the features of the PLOTR and VIEWR modules. The output file is not very interesting, and we don't provide it. Look at "plot06" using ghostview or a Postscript printer. Problem 7: This example demonstrates the production of a library for the MCNP continuous-energy Monte Carlo code for Pu-238 from ENDF/B-IV. Older versions of MCNP required a set of multigroup photon production tables to construct the 30x20 grid of photon emission bins used in those days. This problem demonstrates how that was done, but the method is rarely needed these days. Still, these results provide another useful set of tests for your installation. The most interesting numbers are those in the ACER output on "out07". It is difficult to use tools like "diff" to compare such outputs unless the energy grids are exactly the same. Some of the changes made to NJOY99 were designed to try to achieve identical energy grids between different machines, and diff may work for you. If not, you can still spot check the results. We provide both the PENDF on "pend07" and the ACE file on "ace07" to allow for very detailed checks. Problem 8: This case was added to check the processing of a typical ENDF/B-VI material using Reich-Moore resonances and File 6 for energy-angle distributions. Pay special attention to the resonance results as shown by the counts on the RECONR listing and the values on the PENDF and ACE files (pend08 and ace08). In addition, check the energy-angle distributions as printed out by ACER on "out08". Problem 9: This one demonstrates the use of LEAPR to generate a scattering kernel for water. We have used the ENDF physics model, but we reduced the alpha and beta ranges to make the case run faster with less output. Note that RECONR and BROADR are run to prepare a base for the thermal data at 296K. THERMR was run with its long printout option to provide plenty of numbers on "out09" for comparisons. For additional details, look at the actual LEAPR output on "pend09". Problem 10: This sample problem demonstrates the production of unresolved resonance probability tables for MCNP. We run both UNRESR and PURR using the same sigma0 grid to allow additional checks of both modules and to allow for comparisons between the deterministic and probabilistic approaches to computing Bondarenko cross sections. We provide the output listing on "out10", the PENDF file on "pend10", and the ACE file on "ace10". Lots of results to check. Problem 11: This one demonstrates the production of a library for the WIMS reactor lattice code using Pu-238 from ENDF/B-IV. Check both GROUPR output and WIMSR output on "out11". The WIMS library file produced is provided on "wims11". Problem 12: This one shows how the new gas production capability works with Ni-61 from ENDF/B-VI. To see the detailed results for gas production, look for MT=203 and 207 in File 3 of the PENDF tape "pend12". Also, check out the color Postscript plots of resonance cross sections and gas production cross sections on "plot12". Problem 13: This case demonstrates the new MCNP formats and ACE plotting. These formats will be needed for MCNP4c and MCNPX. Problem 14: This problem is to demonstrate ACE incident proton data and the MCNPX charged-particle format. For NJOY99, the test problems were run on a number of different machine/compiler combinations, and the differences between the resulting files are tallied. The result are given in the following table: 1 Sun Solaris f77 with -g option running on an Ultra 60 2 SGI Origin 2000 f90 with -g 3 Windows 98 and Lahey LF95 with default optimization 4 Windows 98 and Absoft f90 with -g 5 Linux with g77 and -O optimization 6 Linux with Portland Group pgf77 with -g option Number of different numbers found using diff: file tested 1-2 1-3 1-4 1-5 5-6 -------------------------------------------------- out01 0 0 0 11 0 pend01 0 0 0 0 0 out02 0 0 0 97 23 pend02 0 0 0 0 0 out03 0 0 2 22 9 out04 0 0 0 0 0 out07 0 0 0 6 0 pend07 0 0 0 0 0 ace07 0 0 0 7 0 out08 0 0 0 38 0 pend08 0 0 0 7 0 out09 0 0 0 0 0 pend09 0 0 0 0 0 out11 3 1 1 11 3 wims11 5 6 6 8 0 pend12 0 0 0 2 0 out13 0 0 44 5 56 pend13 0 0 0 7 0 ace13 0 0 0 6 0 out14 6 0 63 0 81 ace14 5 0 0 0 15 -------------------------------------------------- Notes: 1. The large count in "1-5" for out02, out03, and out08 is for small Legendre components smaller than 1e-6 computed from differences. There seems to be a small difference in the arithmetic between the Linux machines and all the others. The "5-6" column demonstrates that both Linux compilers show many of the same differences. 2. The large difference in "1-4" and "5-6" for out13 and out14 seem to result from different behavior in rounding numbers for printing. This is demonstrated by having identical ace files. Some interesting timing numbers for the test problems: test Sun Ultra Pentium III Pentium III no 360 MHz 450 MHz 500 MHz f77 -g lf95 Linux g77 -O ------------------------------------------------- 01 65.6 16.2 20.2 02 45.7 18.6 20.8 03 14.3 6.8 7.3 04 4.4 2.5 3.5 05 39.3 20.8 27.6 07 29.3 12.5 16.4 08 46.8 23.5 23.9 09 36.3 16.1 22.0 10 52.2 15.9 11 104.3 28.3 32.5 12 8.9 6.1 6.5 13 37.0 22.9 31.1 14 27.1 9.9 22.1 ------------------------------------------------