Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
Modifying TALYS to Implement Custom Nuclear Level Densities
Malachi Tolman
Department of Physics, Brigham Young University-Idaho
April 3, 2014
BRIGHAM YOUNG UNIVERSITY-IDAHO
DEPARTMENT APPROVAL
of a senior thesis submitted by
Malachi Tolman
Date Kevin Kelley
Date David Oliphant
Date Richard Datwyler
1
Abstract
Many codes exist that model nuclear reactions. Many of them use different models to simulate reactions. We
are working to use a more modern code (TALYS) which incorporates newer models to replicate calculations
made by an older code (STAPRE). This project focused on modifying TALYS to read in nuclear level
densities from a file and implement them correctly. We hoped that if TALYS used the same level densities
as STAPRE, that it would produce results within 5% of what STAPRE made. However, modifying only the
level densities did not produce the desired results. After adjusting several input parameters, we still find
large differences between the two codes.
2
Contents
1 Introduction 5
1.1 Computational Nuclear Physics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 Level Densities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 STAPRE and TALYS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2 Process 9
2.1 Editing TALYS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2 Generating the Level Densities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3 Processing Cross Sections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3 Results 13
3.1 Level Density . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2 S-wave Radiation Widths and gnorm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3 Discrete Levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4 Conclusion and Future Research 23
3
List of Figures
3.1 % difference vs. A for (n, γ) reactions: custom level density . . . . . . . . . . . . . . . . . . . 14
3.2 (n, 2n) cross sections for custom level density . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3 (n, γ) reactions for S-wave radiation modification . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.4 (n, 2n) cross sections for S-wave radiation modification . . . . . . . . . . . . . . . . . . . . . . 16
3.5 (n, γ) reactions for gnorm flagged inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.6 (n, 2n) cross sections for gnorm flagged inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.7 Fe-52 cross sections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.8 % difference vs. STAPRE cross sections for (n, γ) reactions: gnorm . . . . . . . . . . . . . . . 19
3.9 %difference vs. STAPRE cross sections for (n, 2n) reactions: gnorm . . . . . . . . . . . . . . 19
3.10 Cross sections of Ca-42 for (n, γ) reactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.11 Cross sections of (n, 2n) reactions for Ca-42 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.12 % difference for (n, γ) reactions for discrete level modification . . . . . . . . . . . . . . . . . . 22
3.13 % difference for (n, 2n) cross sections for discrete level modification . . . . . . . . . . . . . . . 22
4
Chapter 1
Introduction
1.1 Computational Nuclear Physics
An understanding of nuclear reactions aids in a number of applications. It helps us understand nulear energy,
solar processes, and explosive yield via underground weapons testing. But nuclear reactions are complicated
processes that involve a lot of different parameters. And theory has yet to be able to accurately model
a great number of them. Computational nuclear physics seeks to first determine whether a given theory
matches experimental data, then, if it works, it can be used to predict the behavior of processes that can’t
be measured.
A measurement of prime concern is a quantity called a “cross section”. During a particle-nucleus reaction,
cross sections measure the frequency of a given outcome occurring. For example, when firing neutrons at an
iron nucleus, there is a given chance that the nucleus will absorb the neutron, then launch it out again. How
often this occurrs is related to the cross section of that given reaction. Cross-sections vary according to the
energy of the incident particle, so they are normally plotted as a function of incident energy.
1.2 Level Densities
A number of details about the incoming particle and the target nucleus affects the outcome of a particle-
nuclear reaction. The bulk of this research project focused on the level density of different nuclei and their
5
effect on cross sections. To understand level densities, it must first be understood that protons and neutrons
in the nucleus exist in discrete energy levels just like the electrons that surround the nucleus. Due to being
in a bound quantum state, the nucleons can only exist at certain energy levels that have a given spacing
(similar to, n=1 electrons versus n=2). But at high excitation energies, the spacing between each energy level
becomes small enough that the discrete spectrum of energy levels can be modeled continously. From here
it is natural to not talk of individual levels, but instead in terms of level densities. Level densities measure
how many energy levels per MeV exist in the nucleus at a given excitation energy. Different isotopes have
varying energy levels due to factors such as spin, parity, and binding energy.
Level densities have a large impact on cross sections, as illustrated by the famed Hauser-Fechbach [1]
model
σ(E|E′) = σc(E)E′σc(E
′)DR−1(E − E′)∫ E
0
E′′σc(E′′)DR−1(E − E′)dE′′
. (1.1)
Here σc represents the cross section of forming the compound nucleus (the nucleus with the absorbed neutron
before it ejects it). DR−1 is the level density of the target nucleus, demonstrating the dependence that cross
sections have on this parameter.
How to calculate level densities still undergoes changes, today. One common model, as used by Gilbert
and Cameron [2], is the Fermi-gas model which treats the level density as an exponential of the energy of
the nucleus
ρ(E) =
√π
12
exp(2√aU)
a1/4U5/4
1√2πσ
. (1.2)
This model is not valid for nuclei with energies less than 10 MeV, so another model is used at lower excitation
energies, which has the form
N(E) = exp[(E − E0)/T ],
ρ = N(E)/T.
(1.3)
This is the Constant Temperature Model. The parameters E0 and T in equation (1.3) are determined by
matching this equation to the Fermi-gas model at a given energy by point and slope. This matching has to
be adjusted manually case by case to ensure that the integrated level density matches known spectroscopic
levels.
The parameter a in (1.2) changes depending on which model is used to calculate it. For example, Iljinov
6
and Mebel [3] proposed a model where a is dependent on energy and a shell correction function giving
a(U,Z,N) = a(A)[1 + δWg(Z,N)f(U −∆)/(U −∆)]. (1.4)
Here, a is a function of the nucleus’s surface area, δWg is a nuclear mass formula, and f(U) describes
the energy dependence of the parameter with U being the excitation energy and ∆ being the pairing energy.
This prescription has been used for a global fit of a to all isotopes used in modeling solar reactions [4]. It
can also be fit to smaller regions of the periodic table [5].
Yet another parameter that level densities heavily rely upon is the spin-cutoff parameter, the σ in the
Fermi-gas model (1.2). Gilbert and Cameron first proposed that σ be modeled as
σ2 = g⟨m2⟩t, (1.5)
where g is the sum of the neutron and proton single-particle level spacings, m is the familiar magnetic
quantum number, and t is the temperature of the nucleus given by t =√
(U/a). Other prescriptions suggest
σ2 = 0.01496λA5/3
√U
a. (1.6)
Here, λ is related to the effective moment of inertia of the nucleus.
Each time a prescription for level density parameters is modified, editing a multi-thousand line code to
accomodate such changes can be cumbersome. The ideal solution to such is to have an option where level
densities as a function of energy are tabulated offline and then read in by the reaction code. The program
then interpolates the data between the given points, and the data from such is used for nuclear level densities
in calculating the cross sections.
1.3 STAPRE and TALYS
Many different codes have been written to simulate nuclear reactions. They use models such as the ones
listed above to model the factors that go into formulating a cross section. Lawrence Livermore National
Laboratory worked on a project to produce cross sections of certain isotopes to help with weapon testing [5].
They used a code named STAPRE [6] to predict what the cross sections of certain nuclear decays would be.
7
However, STAPRE is somewhat difficult to use and very difficult to modify. This is due to its lack of
comments and poor documentation for tens of thousands of lines of code. TALYS [7] is a modularized,
well-commented, and well documented code, making it easier to modify. It uses more recent models than
STAPRE, so it would be ideal to switch over to using TALYS. However, it was uncertain as to whether
TALYS could produce the same results that STAPRE did given the same inputs. Our objective is to see
just how close TALYS’s cross sections came to STAPRE’s (and experimental data) using the same inputs
that STAPRE used in previous calculations.
But TALYS treats spin-dependence differently than STAPRE does when it comes to computing level
densities. So instead of reprogramming TALYS to be able to handle this dependence, we decided to simply
add an option to read level densities from a table and interpolate the data. In this regard, level densities
could be calculated in a separate program, then TALYS would simply read them in. This project focused on
creating that switch and testing the results. However, after that alone failed to provide satisfactory results,
other minor switches that were already built into TALYS were explored as well.
8
Chapter 2
Process
2.1 Editing TALYS
My first task was to edit TALYS so that it could read in and utilize level density tables. We already knew that
TALYS had a switch for using different level density models. But upon inspection, I found that out of five
pre-made options, two used different tables of tabulated level densities already available in the source code.
The second of the two, the Hilaire-Goriely tables, were more robust in that they included more energies and
also accounted for positive and negative parities. So I utilized the features that accommodated this option
as much as possible when including the switch to read-in level densities from a file.
After reading over the documentation, I started creating the new option in the file input2.f. TALYS reads
in the user’s command file and parses each line into arrays of characters. The six input files located in the
source code search the beginning of each of these arrays for key words. Each key word should be followed by
any number of other commands that specify what is to be done with said key word. Thus, it is in input2.f
that it checks for the key word “ldmod”, the command used to specify which level density model is to be
used.
I made an extra conditional in the block of code involving ldmod to check for “6” among the options
following “ldmod” in the input file. If it does, then it reads in the next “word” as the file destination name.
Because of the limitations of Fortran’s string concatenation, it needs to know the length of the filename. For
9
this, I used an algorithm that was utilized in machine.f to count the number of characters in the cstring. I
also created a check to see if the file name ends with a slash, since the program would require one later on.
If it did not, I added it on the end. As standard with the other models, a check is made to see if the atomic
number and atomic mass were provided. If they weren’t, then TALYS sets a flag to apply the option to all
isotopes. In order for this block of code to work, I added the variables “ldfilename” and “lenldfn” to the file
talys.cmb. These store the file name and length of the file name.
My next step was to find all the cases where ldmod is used and make sure it functioned as desired. As
mentioned, I planned on having the custom table be read-in and utilized the same way that the Hilaire-
Goriely tables were used. I ran the “grep” command to find all the files where such was used. In a few
cases, such as under the files densityout.f, densitytable.f, and input3.f, I didn’t quite understand the meaning
behind the variables being flagged. But I made them flag everything for ldmod 6 as they would for ldmod 5.
Most other cases, the changes were minor and easily understood. The first happened in checkvalue. I had
to increase the range from five to six to make sure that an error message wasn’t produced. In a former case
of densityout, I edited the conditional to include ldmod 6 and write a string stating that a user- input table
is being used. And in strucinitial, a check for ldmod 5 was changed to happen for ldmod 6 as well. This
file determined how many energies existed for each isotope on the table. Thus while the program read and
skipped over certain isotopes, it knew how many lines to pass over.
The file densitytable.f dealt largely with the level density model. A first modification to this file happened
where parity was flagged. I included ldmod 6 in this check so that way positive and negative parity could be
accounted for in separate tables if the user desired. Next the destination file had to be concatenated from
the inputted filename to point to specific files. TALYS works by having all isotopes organized into separate
files by atomic number. So the destination file points to a directory that contains these files. But next in
densitytable was a check for fission barriers. If fission barriers were being used and ldmod 6 was specified, I
changed the level density model to five and outputted a message saying that ldmod 6 did not support fission
barriers. Finally, as previously mentioned, a final flag involving parity was made. So I made it include ldmod
6.
The last modification that had to be made was in densitypar. Again, the destination directory had to
10
be changed to account for the inputted file name. But also here there resided a curious list of parameters.
Upon inspecting the documentation, we found that they were a set of parameters that would shift the level
densities so that the resulting cross sections would match empirical data. In order to be consistent with the
project of getting TALYS to reproduce results using the same inputs as those from STAPRE, I turned these
off in the case of ldmod 6.
2.2 Generating the Level Densities
Once we knew that TALYS could read in level densities from a file, my next task was to create files that had
tabulated level densities at given energy levels which were consistent with the models used in STAPRE. To
do this, I modified a program named rld9. This program takes Fermi-gas parameters from a file, and fits the
integrated level densities to known spectroscopic (low-lying) levels. It then prints level density parameters
in a format that STAPRE can read.
However, the file format for this program had been changed since it was last used to test level densities
for STAPRE. So I had to take the old prms files and convert them into a format compatible with the newer
version. An odd bug was occurring with reading in the old tables that disallowed the ISYMM parameter to
be read in as an integer. A mismatched data type would occur whenever I attempted to read it in through
either the ifstream or scanf functions. But after using the atoi function in c++, I was able to get the tables
to convert correctly.
Once I accomplished that, I modified rld9 to output level density tables in a format compatible with
TALYS. This happened mostly within the file “fitcts” in the rld9 source code. If the user presses “w” during
the program, instead of only writing the parameters of the currently selected isotope, I changed it to write
level densities for every isotope in the prms file. It organized the isotopes into separate files by atomic
number as per the format that TALYS uses. These separate directories could then be copied and moved to
run with TALYS.
11
2.3 Processing Cross Sections
The final step was to calculate the cross sections for all the reactions included in the sets calculated using
STAPRE. This was done using resources at the Fulton supercomputing lab at Brigham Young University
[8].
I first had to modify a program designed to run TALYS on a parallel architecture. The program, suitably
named “runtalys”, required minimal modifications. I made one change in the file config.c in the source
code to name the variable LEVELDENSITYDIR instead of the previous LEVELDENSITYFILE. The main
change happened in writeinp.c, where I changed the old file read in option to one that suited the directory
destination name. Since this program was modified from one that ran STAPRE, I commented out a great
amount of code that was designed to write out the level density tables from the program.
Once the program was modified, I imported all of the edited TALYS code, the discrete level density
tables, and the new runtalys program into my account with Fulton. I created separate scripts for each batch
of isotopes according to the separate groups of discrete level densities created by rld9. I then submitted the
batches. There were over 600 isotopes (each with 32 reaction channels) that were processed. Each isotope
took about five minutes to calculate the cross sections. Before I copied the results from my account to my
hardrive, I removed a number of files from the output directory that I wouldn’t use in my analysis.
12
Chapter 3
Results
3.1 Level Density
After the cross sections were processed, it was easiest to observe the difference between the TALYS and
STAPRE cross sections by taking a percentage difference between the two at a given energy for each isotope.
To observe the (n, γ) cross sections, I created a script that went through every TALYS and STAPRE cross
section at 30 keV and listed their respective cross sections at that point in a list. A percentage difference
between the two was calculated by taking the TALYS value minus the STAPRE value divided by the STAPRE
value. Then, I used gnuplot to plot the percentage difference against the atomic number. We chose to observe
the difference at this particular energy since it corresponds to the typical temperature in stellar reactions.
The same process was done for (n, 2n) reactions, except the difference was analyzed at 14.1 MeV. The
reason that this energy was used was because it is the temperature of neutrons emitted in deuterium-tritium
fusion, a process that power thermonuclear weapons and fusion reactors.
The first results of this process can be seen below. As mentioned, the first set of cross sections were to
see if TALYS could replicate STAPRE’s results by using the same discrete level densities. The results were
as to be expected for only trying one switch. After seeing that some cross sections were up to 300% different,
we tried some different inputs.
13
Figure 3.1: Percentage difference vs. atomic number of (n, γ) reactions for custom level density. The
percentage difference is represented in decimal form.
Figure 3.2: (n, 2n) cross sections for custom level density
14
3.2 S-wave Radiation Widths and gnorm
The next switch to be analyzed was using the same S-wave radiation widths. This was already built into
TALYS, and the file that STAPRE used was already converted into the appropriate format for TALYS and
ready to be used. Importing the file into runtalys took only one line of declaring which file should be read in
for the S-wave radiation widths. This would only have a profound effect on the (n, γ) cross sections. After
the cross sections were processed, the same means of plotting the results were used. They can be seen in
figures 3.3 and 3.4.
As can be seen, this had no affect on the cross sections. However, we quickly realized that one other
parameter had to be entered for the radiation widths to have any meaning. So the cross sections were repro-
cessed using a flag named “gnorm”. This caused all the radiation width calculations to actually normalize
to the inputted parameters. The results of such were analyzed and can be seen in figures 3.5 and 3.6.
This had a profound affect on the ng cross sections. They still were not brought to be within the 5-10%
range that was hoped for, but at least it came down to 80% from the original 300% difference.
One thing to note was how the percentage difference depended on the cross section itself, since if the
cross sections themselves were small at that given energy, then a small modification to the cross section
would induce a drastic change in the percentage difference. In the case of the (n, 2n) reactions, the threshold
energy sometimes existed above the energy level we were measuring at. This meant that some cross sections
would be zero, although both STAPRE and TALYS printed the smallest number they could to prevent errors
associated with calculating using zeros.
To see how this overall affected the results, I generated plots of the percentage difference against the
STAPRE cross section. Doing such showed that for the (n, 2n) reactions, this affect was taking place, since
the largest percent differences only occurred in regions where the cross section was the smallest. But for
(n, γ) reactions, this wasn’t entirely the case. The most extreme cases occurred where the cross section was
small, but other cases that were outside the desired target range occurred where the cross section was largest.
As a final check, we observed what kind of isotopes were experiencing the largest difference in cross
sections between the two codes. If the isotopes creating the large percentage difference were unstable, then
there would be no way to tell if TALYS was not matching empirical data. As originally noticed, almost all of
15
Figure 3.3: (n, γ) reactions for S-wave radiation modification
Figure 3.4: (n, 2n) cross sections for S-wave radiation modification
16
Figure 3.5: (n, γ) reactions for gnorm flagged inputs
Figure 3.6: (n, 2n) cross sections for gnorm flagged inputs
17
Figure 3.7: Cross-sections generated by TALYS and STAPRE for iron-52. The bar represents the energy at
which the percentage difference was being measured, and the actual cross sections that were measured at
that point can be seen in the key. This was an obvious case of how the shifted peaks in the cross sections
affected the analysis of percentage difference for (n, 2n) reactions.
18
Figure 3.8: Percentage difference vs. STAPRE cross section for ng reactions for gnorm flagged inputs
Figure 3.9: Percentage difference vs. STAPRE cross section for n2n cross sections for gnorm flagged inputs.
This set follows a tight correlation while the previous doesn’t follow a trend as well.
19
the cross sections that lied above 60% difference were unstable isotopes. However, there was a single isotope
within this range that was stable, calcium-42. The plots for such can be seen below. Here, STAPRE does
match current empirical data, while TALYS is consistently lower for both reactions.
3.3 Discrete Levels
The final attempted modification occurred with changing the discrete level files to be the same as the ones
that STAPRE used. These were placed directly into the TALYS structure directory. The analysis of the
resulting cross sections can be seen in figures 3.12 and 3.13.
These adjustments actually had a slight worsening effect. The largest percentage difference was made to
go out to 100% on the (n, γ) cross sections while the (n, 2n) cross sections remained about the same.
20
Figure 3.10: Cross sections of calcium-42 for STAPRE and TALYS. STAPRE matches empirical data on
this isotope, while TALYS is significantly lower, albeit has the same shape. The vertical bar represents the
energy at which the percentage difference was measured for (n, γ) reactions, the the values listed in the key
are the measured cross sections at that value.
Figure 3.11: Cross sections of (n, 2n) reactions for calcium-42 for STAPRE and TALYS. Like the ng plot,
TALYS has the same shape, but is lower than STAPRE.
21
Figure 3.12: % difference for (n, γ) reactions for discrete level modification
Figure 3.13: % difference for (n, 2n) cross sections for discrete level modification
22
Chapter 4
Conclusion and Future Research
As can be seen from the previous chapter, the results weren’t what we had hoped for. Although the results
from TALYS managed to be able to draw closer to those of STAPRE with a few switches, they never did
come within the encompassing 5% range.
Depending on how thorough future researchers want to be, an analysis of the exact implementation of
the level densities would make a difference in seeing exactly where things are going so differently for the
two codes. However, for now, the changes made to TALYS already have been incorporated and are being
submitted to Lawrence Livermore National Laboratory to see if they can utilize them.
Besides just the switches that this project focused on, it was noted that TALYS uses models for direct
reactions that cannot be turned off (direct reactions are a different reaction mechanism not incoporated in
STAPRE that can have a small contribution to cross sections below 20 MeV incident energy). And since
STAPRE does not consider direct reactions at all, that could be one point of discrepancy. But again, it all
depends on how thorough future researchers want to be to figure out how to account for the affect such a
thing is making.
Once the discrepancies are found, one breakthrough in nuclear modeling predicts that K-mixing could
have a larger impact on large mass nuclei cross sections than originally thought. K-mixing is the term used
to denote the selection of the z-component of angular momentum within the nucleons. In all models used so
far, the angular distribution amongst the nucleus is assumed to be spherical. However, accounting for more
23
exact angular distributions could affect cross sections up to 30%, namely among mishapen, massive nuclei
[9].
A project undertaking to include this kind of model into TALYS could be looking at years of research.
Changing the angular distribution in such a way could affect a number of parameters such as transmission
coefficients and level densities. Thus both of these and others would need to be carefully considered to
observe what changes would need to be made.
24
Bibliography
[1] Walter Hauser and Herman Feshbach. The inelastic scattering of neutrons. Physical Review, 87(2), 1952.
[2] A. Gilbert and A. G. W. Cameron. A composite nuclear-level density formula with shell corrections.
Canadian Journal of Physics, 87, 1965.
[3] A.S. Iljinov and M.V. Mebel. Phenomenological statistical analysis of level denities, decay widthsand
lifetime of excited nuclei. Nuclear Physics, A543:517–557, 1992.
[4] Thomas Rauscher, Friedrich-Karl Thielemann, and Karl-Ludwig Kratz. Nuclear level density and the
determination of thermonuclear rates for astrophysics. The American Physical Society, 56(3), November
1997.
[5] R.D. Hoffman, K. Kelley, F.S. Dietrich, R. Bauer, and M.G. Mustafa. Modeled neutron and charged-
particle induced nuclear reaction cross sections for radiochemistry in the region of yttrium, zirconium,
niobium, and molybdenum. Lawrence Livermore National Laboratory, June 2006.
[6] M. Uhl and B. Strohmaier. Stapre a computer code for particle induced activation cross sections and
related quantities. IRK - Vienna Report, IRK 76/01, 1976.
[7] Arjan Koning, Stephane Hilaire, and Stephane Goriely. TALYS-1.4 A nuclear reaction program. Nuclear
Research and Consultancy Group (NRG), December 2011.
[8] Fulton supercomputing lab. http://marylou.byu.edu/documentation/resources.
[9] S.M. Grimes. Physical Review C, 88(2).
25