DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

58
DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR BISON by Tyler J. Miller A senior thesis submitted to the faculty of Brigham Young University - Idaho in partial fulfillment of the requirements for the degree of Bachelor of Science Department of Physics Brigham Young University - Idaho December 2019

Transcript of DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

Page 1: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR BISON

by

Tyler J. Miller

A senior thesis submitted to the faculty of

Brigham Young University - Idaho

in partial fulfillment of the requirements for the degree of

Bachelor of Science

Department of Physics

Brigham Young University - Idaho

December 2019

Page 2: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …
Page 3: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

Copyright c© 2019 Tyler J. Miller

All Rights Reserved

Page 4: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …
Page 5: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

BRIGHAM YOUNG UNIVERSITY - IDAHO

DEPARTMENT APPROVAL

of a senior thesis submitted by

Tyler J. Miller

This thesis has been reviewed by the research committee, senior thesis coor-dinator, and department chair and has been found to be satisfactory.

Date Kevin Kelley, Advisor

Date David Oliphant, Senior Thesis Coordinator

Date Evan Hansen, Committee Member

Date Todd Lines, Chair

Page 6: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …
Page 7: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

ABSTRACT

DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR BISON

Tyler J. Miller

Department of Physics

Bachelor of Science

Idaho National Laboratory’s BISON team currently models various nuclear

fuels. The interest in metallic fuels for advanced sodium fast reactors (SFR)

has recently increased due to both commercial and research applications. In

preparation for SFR, the BISON team is improving its metallic fuel modeling

and simulations. One improvement to the BISON code was developing a model

for bubble number density as it correlates with metallic fuel swelling. The

process that we used to create such a model was by image analysis of old

Experimental Breeder Reactor II micrographs from various experiments. We

used ImageJ and Python to automate our process to collect the number of

bubble counts in each image. Along with the counts, we used the burnup

values that correlated with the images to create our bubble number density

model. The creation of our model has upgraded the previous metallic fuel

swelling model from a constant value to what researchers expected it to be.

Page 8: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …
Page 9: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

ACKNOWLEDGMENTS

I would like to thank the entire Idaho National Laboratory’s BISON Team;

especially, Albert Casagranda, Dylan McDowell, Stephen Novascone, Adam

Zabriskie, and Russell Gardner who helped me develop the Bubble Number

Density model. I want to thank the Brigham Young University Idaho pro-

fessors Todd Lines, Jon Johnson, and Lance Nelson who wrote me letters of

recommendation. Also, I want to thank Kevin Kelley, Evan Hansen, and David

Oliphant for being a part of my senior thesis committee.

Page 10: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …
Page 11: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

Contents

Table of Contents xi

List of Figures xiii

1 Introduction 11.1 Nuclear Power Plants and Metallic Fuel . . . . . . . . . . . . . . . . . 1

1.1.1 Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.1.2 Coalescing Phenomenon . . . . . . . . . . . . . . . . . . . . . 4

1.2 BISON: Modeling and Simulation . . . . . . . . . . . . . . . . . . . . 51.2.1 Bubble Number Density Modeling Project . . . . . . . . . . . 9

2 Image Analysis Procedure 112.1 EBR-II Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.1.1 Selecting the Images . . . . . . . . . . . . . . . . . . . . . . . 132.2 ImageJ and Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.3 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.3.1 Scaling issues . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.3.2 To be a Bubble or not to be a Bubble . . . . . . . . . . . . . . 172.3.3 Assumptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.3.4 Initial testing . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.3.5 Automated Process . . . . . . . . . . . . . . . . . . . . . . . . 21

2.4 Analyzing the Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3 Results 253.1 Image Analysis Model . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4 Conclusion 29

Bibliography 31

A Bubble Number Density Automated Process 33

B Codes 41

xi

Page 12: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …
Page 13: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

List of Figures

1.1 Gaseous fission products travels through the bubbles to the plenum [2]. 31.2 Cross-sectional metallography of U-22Pu-10Zr fuel [3]. . . . . . . . . . 41.3 Finite element method application for a bridge [6]. . . . . . . . . . . . 7

3.1 Our Bubble Number Density model. . . . . . . . . . . . . . . . . . . 263.2 Our Bubble Number Density model with the y-axis being set to a

logarithmic scale to help show the spread of each burnup. . . . . . . . 26

A.1 Threshold check in comparison to grayscale image . . . . . . . . . . . 35A.2 Adjusting the scale factor . . . . . . . . . . . . . . . . . . . . . . . . 36A.3 Adjusting the threshold method . . . . . . . . . . . . . . . . . . . . . 37A.4 Main function, “run.” . . . . . . . . . . . . . . . . . . . . . . . . . . . 37A.5 ImageJ’s Python editor. . . . . . . . . . . . . . . . . . . . . . . . . . 38

B.1 Python code for processing Futurix images . . . . . . . . . . . . . . . 42B.2 FP2 code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

xiii

Page 14: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …
Page 15: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

Chapter 1

Introduction

Under the sponsorship of the Department of Energy (DOE) and Battelle Energy

Alliance (BEA), I was employed as an intern at Idaho National Laboratory (INL).

During my internship, I worked on developing a temporary model for bubble number

density in metallic fuels to be inserted into INL’s BISON code. This chapter will

introduce fission reactors, BISON, and metallic fuels.

1.1 Nuclear Power Plants and Metallic Fuel

Nuclear power plants generate electricity through the heat released from fission. Since

the 1950s, scientists and engineers have been developing various designs of reactors

to more safely and effectively produce electricity. In these designs, the fuel that the

reactors use fall into several categories (e.g., oxide, metal, and ceramic). For the

project that I worked on, I helped the INL’s BISON team improve their metallic fuel

modeling and simulation.

1

Page 16: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

2 Chapter 1 Introduction

1.1.1 Background

Metallic fuels were some of the first fuels used in nuclear power plants, beginning

around the 1940s. They were favored because they could be used to operate the

power plant while breeding more fuel, simultaneously. A well-known reactor that

used metal fuels is the Experimental Breeder Reactor (EBR-I), as it was the first

nuclear power plant to produce enough electricity to light up four light bulbs, then

later the building itself in 1951. It was thought that metal fuels with their fuel

breeding capabilities would be the nuclear fuel of choice; however, they could not

reach sufficiently high burnup.

Burnup is the amount of heavy metal that has undergone fission. When a per-

centage of the initial amount has been used, the fuel is at that percentage of burnup.

One unit that is used for burnup is %FIMA, which stands for “fissions per initial

metal atom” and noted as ‘at. %.’ Additionally, to help others understand burnup,

the Nuclear Regulatory Commission [1] (NRC) wrote:

[I]t helps to know more about the uranium that fuels a reactor. Before

it is made into fuel, uranium is processed to increase the concentration

of atoms that can split in a controlled chain reaction in the reactor. The

atoms release energy as they split.

The NRC used uranium as an example in this explanation; however, you can replace

uranium with any fissile isotope. The energy released from fission is first converted

into thermal energy then into mechanical energy that produces electricity. To achieve

higher burnups requires a fuel that has higher concentrations of fissile atoms to help

sustain a chain reaction. A stable chain reaction means the fuel can remain in the

reactor for extended periods without being replaced.

Many of the commercial reactors replaced metal fuels with fuels that could obtain

Page 17: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

1.1 Nuclear Power Plants and Metallic Fuel 3

higher burnups to have longer-lasting fuel because it is cost-effective. However, those

reactors that continued with metal fuel discovered that there were bubbles of fission

products forming in the fuel causing it to swell. This swelling was the cause for

lower max burnups and an increase in cladding issues (e.g., cracking in the cladding,

warping of the cladding, changes in the thermal properties in the cladding) due to

the stress it applies to the cladding. To improve the performance of the fuel a void

at the top of the fuel rod, called the plenum, was added to the design and a sodium

bond was inserted between the cladding and the fuel pellets (see Figure 1.1).

Figure 1.1 Gaseous fission products travels through the bubbles to theplenum [2].

This alteration in fuel rod design allowed metallic fuels to reach higher burnups,

longer fuel life, and more energy output. With metal fuels able to compete with

other fuels, interest in further research and usage has grown. One reason interest has

grown is that metal fuel can potentially be a cheaper option for fuel without making

any sacrifices in burnup or energy production.

Page 18: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

4 Chapter 1 Introduction

1.1.2 Coalescing Phenomenon

The bubbles in metallic fuels are formed when U-235 is struck by a neutron causing

the atom to split into fission products. The fission products from U-235 are gaseous

and have an increase in volume that pushes the fuel outwards creating a bubble. When

the fuel swells, it pushes the sodium bond that surrounds the fuel pellets upwards to

moderate the stress and temperature increase being applied to the cladding. These

fission products travel through the bubbles upwards to the plenum to be stored, as in

Figure 1.1; this event gives relief to the cladding by decreasing the amount of swelling.

Eventually, at higher burnups, the bubbles start coalescing together as the con-

stituents in binary and ternary fuels begin to separate. The zirconium moves towards

the cladding and the radial center of the fuel rod, while the uranium and plutonium

are in the area between the zirconium regions (See Figure 1.2).

Figure 1.2 Cross-sectional metallography of U-22Pu-10Zr fuel [3].

This coalescing phenomenon causes alterations in the atomic structure of the fuel

along with its thermal properties. Thus, it is crucial to understand the characteristics

of bubbles and the coalescing in metal fuels.

Page 19: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

1.2 BISON: Modeling and Simulation 5

1.2 BISON: Modeling and Simulation

BISON is a finite-element based nuclear fuel performance code that implements multi-

physics and nuclear thermodynamics [4] to simulate various fuels and cladding. With

nuclear power plants being expensive to build, operate, and maintain, it is important

to make sure they are efficient and productive. To do this, accurate and precise

simulations and modeling provides a reassurance that a reactor, fuel, and/or setup

is worth the money. Programmers go through great lengths to verify, validate, and

document their codes.

“Verification and validation” means that the codes are developed using correct

methods and equations, and the simulations that are produced are comparable to

actual results. Years of research and studies are used to develop models for phenomena

common to nuclear plants, whether they are accidental or part of the operation.

These models are then implemented into BISON and stitched together with multi-

dimensional physics.

Nuclear Power Plants Funding

Modeling and simulations are a crucial part of decreasing the cost of overall con-

struction, operating, and research for new nuclear power plants. The International

Atomic Energy Association has stated that “new nuclear power plants need suffi-

cient funding - usually the responsibility of the government - and financing, which

is the responsibility of the plant’s owner or operator [5].” The funding for these new

plants may be the government’s responsibility; however, it is the state government

who will consider raising state taxes to pay the bill. Thankfully, by modeling and

simulating, cost-effective nuclear power plants can be constructed without hindering

the surrounding population or the government.

Page 20: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

6 Chapter 1 Introduction

Scientists, engineers, and government officials can run thousands of tests to design

the best nuclear reactor and its fuel for specific applications; this makes the plants

more cost-effective. In these tests, they can test how the geographical features will

influence particular reactor designs and choose the optimal reactor. After selecting a

reactor, the plant needs to obtain the cheapest fuel with little to no sacrifice to the

overall performance of the plant.

Even though the reactor and fuel are cost-effective with little to no performance

sacrifices, new nuclear power plants are still expensive to construct. Thankfully, the

initial building cost is the only expense to worry about unless there is an accident.

Accidents are always a possibility; however, modeling and simulations can take into

account the cost of an accident. This expense can be added to the final cost before the

decision to construct a new plant is made. The cost will be distributed throughout

several years, making the construction of new nuclear power plants an appealing

energy option.

BISON and MOOSE

As stated earlier, BISON is a nuclear fuel performance code that implements multi-

physics, multi-time, and multi-space to compute nuclear thermodynamics and me-

chanical properties by parallel, finite element-based software. To understand this

process better, some key concepts need explanation.

Finite element method (FEM) is a numerical method that solves one-, two-, and

three-dimensional partial differential equations (PDE) by breaking the system into

smaller parts. Imagine a bridge (See Figure 1.3) as our system and break it into

smaller geometric shapes with connecting boundaries. Each shape represents a matrix

whose entries are describing a physical property. As one matrix changes its surround-

ing matrices that share boundaries are affected causing a domino effect throughout

Page 21: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

1.2 BISON: Modeling and Simulation 7

all the other matrices in the system.

Figure 1.3 Finite element method application for a bridge [6].

FEM solves one matrix at a time while updating the surrounding matrices and repeats

this process over time intervals until the entire system has been solved. BISON uses

this to solve how physical and chemical properties propagate through the fuel and

rod1. With BISON being fully-coupled, it can simultaneously solve several different

properties that are affecting the fuel through FEM and running in parallel.

To be running in parallel means that the software has the option of using one

or many processors to perform one or many operations. It is left to the user to

decided how many processors will be used for the operation(s). When you need to

simultaneously perform many operations, it is ideal to use more processors as they

will provide quicker run times. This capability is utilized when one unknown variable

depends on the other two variables. For example, the one-dimensional heat equation

depends on position x and time t, as shown below:

∂u

∂t= k

∂2u

∂x2

1Visit https://BISON.inl.gov/SitePages/Home.aspx and watch their video on a fuel pellet missing

a surface. It demonstrates how BISON uses FEM.

Page 22: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

8 Chapter 1 Introduction

By x and t being fully-coupled, these variables will help update each other until a

solution is converged upon. As the software runs in parallel, it can solve both sides of

the equation to converge upon an answer for u. BISON uses this feature, along with

FEM, to solve complex and nonlinear system of equations that represent real world

phenomena occurring in the fuel and rod. BISON can solve these types of problems

along with other kinds because it was built upon MOOSE.

MOOSE stands for “Multiphysics Object-Oriented Simulation Environment.” It

is a base software that many applications at INL are built upon. The advantage to

using MOOSE is that it allows scientists who may not be fluent in computer science

to develop an application that they can “plug and play” into the MOOSE simulation

platform [7]. By using MOOSE, scientists do not need to start from scratch when

developing an application. Your application will only need to be specific to your field

of study and can reference modules in MOOSE when necessary. This functionality

allows for new simulation capabilities. BISON utilizes MOOSE’s capabilities and

adds to them with models pertaining to nuclear fuels. To help make sure that the

BISON code is modeling and simulating correctly, the code is verified and validated.

Verification and validation both play important roles in modeling and simulation.

The BISON team puts both of these process into action when modifying and testing

their code to ensure accurate and precise results. It is crucial to understand the differ-

ence between verification and validation as they help the BISON team develop better

programs for nuclear fuel performance. BISON team member Jason Hales has stated

that “[v]erification is the process of determining whether a software implementation

of a mathematical model accurately represents that model,” and that “[v]alidation is

comparing computed results to experimental data [8].” In other words, verification

is developing the product the correct way while validation is developing the correct

product.

Page 23: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

1.2 BISON: Modeling and Simulation 9

1.2.1 Bubble Number Density Modeling Project

The research that I performed at INL under the direction of the BISON team was

using image analysis software to count bubbles in metal fuel micrographs from old Ex-

perimental Breeder Reactor II (EBR-II) experiments. I used those counts to develop

a density model that has replaced BISON’s previous bubble number density model.

With this replacement, there has been an improvement in the BISON code’s fuel

swelling simulations because previously BISON used a constant value for its model.

(The constant value was intended to be a temporary model.) For our model to work

in the BISON code, it needed to provide the number of bubble counts per cubic meter.

A trend of previous research suggested that the bubble number density follow

y = cx−a, where c and a were empirical constants depending on the blend of the

metal fuel, x was the burnup of the fuel, and y was the bubble number density. We

used this trend as a baseline to verify our model. Along with research expectations,

our model’s bubble counts decreased greatly when the fuel approaches 2% burnup

and began to level out afterward. The reason for the decrease in bubble counts was

because the bubbles start to coalesce at higher burnups and eventually stop coalescing

once the bubbles grow large enough to handle the gaseous fission products. Those

fission products later escaped to the plenum of the fuel rod leaving the bubbles to

continue filling up with newly produced fission products as the fuel was spent. There

is ongoing research, outside of this project, that will describe metal fuel’s properties

even better in preparation for advanced sodium fast reactors (SFR).

Page 24: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

10 Chapter 1 Introduction

Page 25: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

Chapter 2

Image Analysis Procedure

This chapter will discuss the method we used to develop our bubble number density

model. The discussion includes how we selected the images that we collected our

bubble counts from, the assumptions we made, how to determine what a bubble is

in our images, our initial testing of our automated process with ImageJ (an image

analysis software) and Python, and ending with an analysis of the data. Results are

presented in chapter three, and a step-by-step procedure is found in Appendix B.

2.1 EBR-II Images

The model for bubble number density that we are developing is through image anal-

ysis. The images used to develop our model were metal fuel micrographs that were

first documented in various EBR-II experiments that took place from the 1960s to

the 1990s. The rationale to use images from these EBR-II experiments is that they

are available for us to use without cost. Since the model we developed was going to

be temporary, it was sufficient to use the old EBR-II images as a base for creating

our model.

11

Page 26: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

12 Chapter 2 Image Analysis Procedure

While searching the EBR-II’s experimental documentation for images, we also

searched for the corresponding burnup values that coincide with them. The burnup

values were occasionally in the caption of the images; however, quite often we had to

search the experimental reports for the burnup values instead. It was important to us

to find these burnup values, as our model was dependent on them. In our model, we

found a general trend for bubble number density as the burnup increases. Therefore,

when we found images without their burnup value, we could not use them.

Many of the experiments’ fuel compositions differed. This change in parameter

causes variations in the bubble count for the images that have the same burnup, yet

come from different experiments (See Table 2.1).

Experiment Element Burnup (FIMA) Fuel Composition

X421 T108 10 U-19Pu-10Zr

X423a T332 1 U-10Zr

X423b T308 2 U-3Pu-10Zr

X423b T345 2 U-19Pu-10Zr

X423c T325 5 U-8Pu-10Zr

X423c T330 5 U-22Pu-10Zr

X428 J475 2.5 U-19Pu-10Zr

X501 MNT49A 5.75 U-20.2Pu-10Zr-1.3Np-1.2Am

X501 MNT52A 6 U-20.2Pu-10Zr-1.3Np-1.2Am

X501 MNT55A 4.25 U-20.2Pu-10Zr-1.3Np-1.2Am

Table 2.1 EBR-II Experiments and their corresponding fuel compositions.

We recognized this issue and assumed that all fuel compositions provided the same

bubble production rate. This assumption lessened the quality of our model, but it is

still an improvement compared to the previous models in the BISON code and will

Page 27: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

2.1 EBR-II Images 13

be temporary until a better model can be developed.

2.1.1 Selecting the Images

In selecting the images, three requirements had to be met. These requirements were

set in place to ensure precise data from each image. So even though there were around

a hundred images to choose from in the EBR-II documentation, we were not able to

collect data from most of them. The reason for not being able to use those images

was due to either an excess of noise, the burnup values were unknown, and/or we did

not know what the cladding thicknesses were. Images that did not have these issues,

were collected into our image bank and used to develop our model.

The first requirement was that the image must have cladding in the image itself

to create a scale factor. In other words, the image must have its cladding thickness

documented either by the image or in the experiment report. The scale factors were

used to ensure that the data collected from the images had the same units for area. An

exception to this requirement is allowed when an image is from the same experiment,

fuel pin, position, and zoom, thus certifying that its scale factor will be the same as

an image with cladding in it. We were able to stitch together those images that did

not have cladding in them with those images that have cladding. This was possible

with the image stitching ability that we added to ImageJ. However, not all images

without cladding in them were able to be stitched together to those with cladding

but were still used to collect data.

The next requirement was that an image must be of decent quality. The amount

of noise found in an image must be minimal or non-existent so that ImageJ’s particle

analysis did not count the noise as a bubble. Since we used images that came from

old micrographs, the quality of the images were not always ideal. However, we used

a bootstrapping-like technique to increase our sample size, which will be explained

Page 28: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

14 Chapter 2 Image Analysis Procedure

in section 2.2.1. By using this technique, we were able to increase the overall quality

and quantity of our data without making any sacrifices.

Finally, the last requirement to ensure quality data was that the burnup for the

fuel pin must be provided somewhere in the EBR-II documentation. Without the

burnup, our model cannot accurately describe how the bubble number density acts

when there is a change in burnup.

2.2 ImageJ and Python

To find a general trend for the bubble number density, we used ImageJ and Python

to process and analyze our images. ImageJ is a Java image processing program that

allows users to add codes and features. This flexibility allowed us to add the BioVexxal

plug-in that provided better thresholding capabilities, which gave us clarity of what

was a bubble and what was not. We used a version of ImageJ called Fiji1, which has

many other packages (e.g., image stitching [9]) pre-installed. This greatly increased

the functionality of ImageJ compared to other versions.

The ImageJ developers have made it possible for everyone to use different com-

puter programming languages to use ImageJ’s functionality. This idea allowed us to

combine our knowledge of Python with the functionality of ImageJ to automate the

image handling process, which will be discussed in section 2.2.2. However, ImageJ

does have its limitations when communicating with other languages, such as not be-

ing able to use Python’s Panda and Numpy libraries. With Python, we used a few

functions to define and set the various thresholds to their corresponding images. We

were also able to apply the correct scaling factor to that image. Finally, the main

function in the Python script can create many samples from just one image. These

1Fiji can be found at https://imagej.net/Fiji

Page 29: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

2.3 Discussion 15

functions helped us automate our data-collecting process.

2.3 Discussion

This section will cover the scaling issues that occurred, how we determined what a

bubble is, and the assumptions that we made. Additionally, I will briefly discuss how

we collaborated with another team who was also approaching bubble number density.

2.3.1 Scaling issues

We knew that determining the correct scaling for each image was going to be difficult

because these images were coming from various experiments that were held between

the 1960s and 1990s. Due to technological limitations, the image quality of the

fuel micrographs was low, the images did not receive scale bars on them, the images

received additional scaling when they were scanned and saved onto the computer, and

the images contained noise that could be misinterpreted as bubbles by ImageJ. There

has been a massive technological growth since the 1960s, meaning those technological

limitations have been resolved. For example, there are higher quality microscopes

that can take a picture of what is being viewed, add a scale bar to it, and directly

save the image to the computer without adding additional scaling.

Another scaling issue that we encountered was the lack of a scale bar on some of

the images. All that was available to us, to figure out a possible scale factor, was

a number provided at the bottom of the page the image was scanned to. Thus, we

took the ratio between the cladding thickness and the number of pixels to span that

length to be our relative scale factor for images. We figured out what the scale factor

was for every image and recorded them into our Python script.

By having the relative scale factors, we attempted to restore the images to their

Page 30: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

16 Chapter 2 Image Analysis Procedure

original dimensions. We are uncertain if we were able to accomplish the restoration;

however, we found the shape that the bubble number density follows. Along with

the attempted restoration, we were able to compare one image’s bubble counts with

another’s bubble counts, and it took care of any additional scaling that could have

gone on during scanning or archiving of the image.

Alternative routes to modeling Bubble Number Density

There is another team at INL, that is developing a bubble number density model.

They have access to images that are more recent and have correct scaling to them.

These images provide them with more information on what a bubble is and how

to scale the images, which enables them to have more accurate and precise bubble

counts. They used a different method in developing their model. A MATLAB code

that they created analyzed the images and computed several nuclear fuel parameters

from which they could find the bubble number density. Also, they were kind enough

to share a few of their images and results from their model with us, which helped us

to validate our results.

When we compared our results, we found that they were proportional, however,

we wanted to know how the scaling factor from our results differed from theirs. Based

on our comparisons, we learned that our scale factors were three orders of magnitude

lower. Their results yielded counts much higher than ours. We decided to use their

scaling factor and the images they provided us with to see if we could get similar

results. After we applied our method to them, our counts were similar to theirs.

With this finding, we believed that their results were more accurate in determining

the bubble number density so we found a common scale factor function and applied

it to our method.

The reason we created our model instead of using theirs was because the BISON

Page 31: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

2.3 Discussion 17

team wanted a temporary model to place into their code while the other team could

take their time developing a better model. Also, having multiple teams working,

separately, on modeling bubble number density enabled both teams to compare their

findings.

2.3.2 To be a Bubble or not to be a Bubble

There were a few complications that arose when deciding what was considered a

bubble in the images, because: (1) The noise in the images can occasionally be large

enough to be mistaken as a bubble, (2) When applying ImageJ’s many thresholding

methods to the images, some methods select pixels that are not a bubble while other

methods do not selects pixels that are indeed bubbles, and (3) As the metal fuel is

coalescing the crystal structure of uranium goes through phases, one being the alpha

phase. This phase can be mistaken for a bubble as it looks very similar to an untrained

human eye. To overcome these complications, I spent hours looking over the images

to train my brain to decipher what was a bubble by comparing the threshold images

with the originals. By comparing the threshold images with their originals, I learned

how the thresholding affected the bubble counts. After I learned this I could find the

threshold methods that best represented the original, thus eliminating most of the

noise. The comparison between images also helped sort out the alpha phases as well.

Many of the alpha phases overlap on some of the bubbles near the center of the fuel.

In the end, we decided that ImageJ was merging them with the bubbles they are on

top of, therefore, ImageJ was not counting the alpha phases and bubbles separately,

but as one count. We have accounted for many of the imperfections in the images but

there are still a few counts that are from noise and alpha phases. Since we trained

a human brain to look for all the imperfections, it was reasonable to assume that

if we trained a different person, we will get slightly different results for our model.

Page 32: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

18 Chapter 2 Image Analysis Procedure

However, any results that would come from training another person should fall in the

same uncertainty range that was in our model.

2.3.3 Assumptions

As with most models, assumptions are made to help the model function properly.

For the bubble number density model we created, some assumptions deal with fuel

composition, burnup, and ImageJ. The assumption made for the fuel composition was

that all fuel compositions form the same amount of bubbles per burnup. Therefore,

we did not need to account for the fuel compositions used. This assumption helped

us since the number of usable images available to us was limited.

Burnup

Burnup in a fuel rod varies as you move away from the spade (bottom of the fuel

rod) and head towards the top. It was around the middle portion of the fuel rod that

received the highest burnup values relative to the rest of the fuel rod. Thankfully,

the documentation that we took our images from included the general area the image

comes from and a burnup value. Since the documentation did not specifically state

which burnup it was and all the people who originally worked on this EBR-II exper-

iment have moved on and are no longer in contact, we do not know if this burnup

value was the max burnup value, an average burnup value, or the burnup when the

rod was taken out of the reactor. We assumed that any value that we use was the

specific burnup for that position.

ImageJ

The assumptions about ImageJ are straight-forward. During the stitching process, we

assumed that there were no additional bubbles or noise created. Furthermore, when

Page 33: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

2.3 Discussion 19

the boundary of two bubbles overlapped, they were considered to be one bubble by

ImageJ instead of the two bubbles. Also, if two bubbles were in a specified radius

of each other, they were considered to be one bubble, as some threshold methods in

ImageJ combined them. To get a more accurate count of bubbles, we used several

thresholding methods and found averages between them for each image.

2.3.4 Initial testing

Initially, we tested ImageJ’s ability to count the bubbles in a sample from one image.

We tried out many methods, ranging from trying thresholding only techniques on the

sample to testing preconditioning techniques along with thresholding. By learning

what ImageJ was doing to count the bubbles in the image under various conditions,

we were able to decipher the best method to use to collect our data.

In our first approach to learn ImageJ, a sample from one image was investigated.

We applied various thresholds, one at a time, along with the image’s corresponding

scale factor to learn their effects on the bubble count. After this application of

thresholds, we ran ImageJ’s particle analyzer to count the bubbles we found which

methods yielded the highest and lowest counts. By knowing which methods produced

the highest and lowest counts, we were able to assess that each image required specific

thresholds. On the occasion that the best threshold for an image could not be decided

on, the image would be used a few times with one image having a low count threshold,

another with a high count threshold, and the last with an average count threshold.

After collecting the counts on such an occasion, we averaged the counts for that

image. Also, we found that the counts could be following the known distribution of

inverse gamma or beta.

To explain what thresholds do to an image, we will use the high count threshold,

as an example. It is called “Phansalkar2” and uses the following equation [10] to

Page 34: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

20 Chapter 2 Image Analysis Procedure

determine the threshold value t:

t = mean× (1 + p× exp(−q ×mean) + k × ((stdev/r)− 1)), (2.1)

where mean and stdev are the local pixel mean and pixel standard deviation, respec-

tively. The values p = 2 and q = 10 are fixed, while k and r are parameters. To

understand how the Phansalkar method affects the rest of the image that the sample

was taken from, we applied a method similar to statistical bootstrapping.

In examining the effects of the Phansalkar threshold, we applied a random sam-

pling with a replacement technique that would allow us to create an estimator distri-

bution. This distribution provided us with the average, median, variance, maximum,

and minimum bubble count in the image using the Phansalkar threshold. We accom-

plished this by setting the image up the same way, where the image had its scale

factor defined and the Phansalkar threshold applied before taking a sample from it.

Once the sample was taken, it would be run through the ImageJ particle analysis

to count the bubbles and store the information in a CSV file. The sample was then

closed by ImageJ, the preset image was re-opened to take another sample, saving that

sample’s bubble count to the same CSV file as the previous sample. Once we found

the distribution for this image, we moved onto another image with a different burnup

and found that the Phansalkar threshold did not work for it.

Preparing for the Automated Process

Since one threshold method did not work for all the images in our collection, we needed

to have a human examine each image to decipher which threshold was the best for

that image. This threshold was noted for the image and then implemented into the

2This thresholding method is named after N. Phansalkar as it uses information based on

Phansalkar’s paper “Adaptive local thresholding for detection of nuclei in diversity stained cytology

images.”

Page 35: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

2.3 Discussion 21

Python code to help automate the process of computing the number of bubbles in

each image. Another preparation needed for the automated process to work was that

the scale factor for each image needed to be inserted into the Python code so that

Python can apply the correct scale factor to its corresponding image.

To determine what the scale factor was for a specific image, normally a scale bar

is utilized. However, because our images did not have those scale bars, we used the

cladding thickness and related it to a specific number of pixels to determine their scale

factors. This relationship allowed us to convert pixels to other SI units; particularly,

we used square meters in the data collecting process. By applying the scale factor,

we knew the data we collected was in counts per square meter.

These counts per square meter were later converted into counts per cubic meter

making the data a volumetric density. Though it would have been ideal to use the

Python code for the conversion, unfortunately, ImageJ limits the mathematical func-

tionality of Python. This issue caused us to use other means to do the calculations

for bubble number density. We used a spreadsheet to do the repetitive math that was

needed with our data and is further discussed in section 2.3. In hindsight, we could

have used another Python script to read the CSV and do the conversion.

2.3.5 Automated Process

There are several Python codes that were used during data collection as we refined the

automated process. Thankfully, they all shared the general form of having a function

for scaling the images, a function for applying the threshold, and the main function

that operated the code. For full access to the codes that we used in our automated

process, please see Appendix B.

The main function called “run” did some operations in the code, such as, (1) set-

ting up the working directories to load images and save data into the appropriate CSV

Page 36: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

22 Chapter 2 Image Analysis Procedure

files, (2) calling functions to perform scaling and threshold, and (3) pre-conditioning

the image. Setting up the file paths allowed us to use a FOR loop to iterate through

the image directory, selecting one image at a time, and saving a bubble count data

in the data directory as a CSV file. With this setup, it allowed us to apply any pre-

conditioning, scaling, and thresholding needed for any image. The pre-conditioning

that was done to each image was converting it to 8-bit then we cropped a sample out

of the image at a randomly chosen position. The pre-conditioning was the scaling and

thresholding applications; which was done to every sample. Each image was sampled

500 times and saved to the same CSV file before moving onto the next image.

The scaling and threshold functions applied the same method to correctly assign

each image to their corresponding scale factor and threshold. These functions read

in the image file name and sent it through a series of conditional statements. When

a condition was met in the functions, the scale factor and threshold was applied to

the image so that the main function can continue. This process continues until all

the images have been ran through the main function. When the process stopped we

applied a mathematical transformation on the data we collected to extract the bubble

number density from each sample. With the bubble number density extracted, we

ran an analysis of the values to test the quality of our data.

2.4 Analyzing the Data

Analyzing the counts from the images to figure out the distribution for each burnup

was vital to creating our model to study how burnup affects the bubble number

density. To do this with the counts that we collected for various burnups, we kept

a record of the area (in square micrometers) for each sample. Thus, we have counts

per squared micrometer that is easily converted into a density using the following

Page 37: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

2.4 Analyzing the Data 23

transformation:

Bubble Number Density for one sample =

(counts

sample area× 1012

)3/2

, (2.2)

where multiplying by 1012 is to convert the sample area from square micrometers to

square meters. To apply the transformation to all samples, we combined all the CSV

files to make one large database. While doing this, we kept note of which samples

were taken from which image along with their burnups and sample area.

After collecting over 40,000 samples, we needed a way to filter the data to in-

crease the model’s accuracy by reducing the uncertainties. We did this by looking at

each burnup’s sample distribution and then color-coordinated the samples with the

images they came from. Images producing a large scatter within the distribution are

either counting noise or not counting the bubbles. By eliminating those images, the

remaining data was ready to be analyzed and formed into a model.

Page 38: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

24 Chapter 2 Image Analysis Procedure

Page 39: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

Chapter 3

Results

3.1 Image Analysis Model

After analyzing the collected data, we were able to compile a plot containing all the

images whose data we decided to use. The reason we decided not to use some images

was because their spread was too large and yielded no definitive information about

the trend that the bubble number density has. After applying a best-fit line to our

plot, it produced our model for bubble number density which was,

ρ = (6 · 1017)x−1.868,

where ρ represents the bubble number density in counts per cubic meter and x rep-

resents the burnup in at. %. Our model was near what research on bubble number

density said it should be. A difference we found between our model and previous

research was that when the fuel approached 2% burnup, the bubbles were expected

to have leveled out. However, our model did not level out until around 4% burnup,

as in Figure 3.1.

25

Page 40: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

26 Chapter 3 Results

Figure 3.1 Our Bubble Number Density model.

We are not certain what caused this difference. However, possible causes could be

the differences in the fuel compositions and the positions in the fuel rods amongst

the images that we took our data from. We noted this possibility and assumed that

fuel composition and position in the fuel rod would not greatly affect our model.

Figure 3.2 demonstrates the spread of the counts from the images that we have

selected to use in our model because Figure 3.1 was not the best representation to

demonstrate our data’s spread.

Figure 3.2 Our Bubble Number Density model with the y-axis being setto a logarithmic scale to help show the spread of each burnup.

As noted, the spreads at 4.5%, 9%, and 10% burnup were large. The cause for the

large spreads was the imperfections in the images used. We would have preferred

Page 41: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

3.1 Image Analysis Model 27

to use other images; however, we did not have any images better than the ones we

used. We needed at least a few images per burnup to learn more about the trend

that bubble number density has as it approached higher burnups.

Our model was sufficient for the improvement of the BISON code because it defines

the bubble number density better than the constant value did. With the trend we

found, the fuel swelling simulations can be more precise because the BISON code will

input a better representation of the bubble number density into its calculations.

Page 42: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

28 Chapter 3 Results

Page 43: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

Chapter 4

Conclusion

In conclusion, our model has provided a starting place for future research on the

bubble number density of metallic fuels. Though our model was temporary, it was

better than using a constant value. We learned from previous research that the

bubble number density was not a constant. The performance of the BISON code was

enhanced when we implemented our temporary model into it.

As the United States tries to regain the lead in advanced test reactors, they are

looking into metal fuels as a possible solution. That was why the BISON team was

eagerly trying to implement metallic fuel models into their program. As the BISON

code improves by adding better metallic fuel models, the accuracy and the precision

of its simulation increases.

29

Page 44: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

30 Chapter 4 Conclusion

Page 45: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

Bibliography

[1] Backgrounder on High Burnup Spent Nuclear Fuel. (n.d.). Retrieved Novem-

ber 6, 2019, from https://www.nrc.gov/reading-rm/doc-collections/fact-sheets/

bg-high-burnup-spent-fuel.html.

[2] Nuclear Metal Fuel: Characteristics, Design, Manufacturing, Testing, and Oper-

ating History. (June 2018). Retrieved December 1, 2019, from https://www.nrc.

gov/docs/ML1816/ML18165A249.pdf. Note: Used their Figures 1 and 3.

[3] Porter, D. L., Lahm, C. E., & Pahl, R. G. (1990). “Fuel constituent redistribution

during the early stages of U-Pu-Zr irradiation.” Metallurgical Transactions A,

21(7), 1871-1876. doi: 10.1007/bf02647234. Note: Used their Figures 1 and 4.

[4] BISON. (n.d.). Retrieved December 2, 2019, from https://BISON.inl.gov/

SitePages/Manuals.aspx.

[5] Funding and finance. (2016, April 13). Retrieved December 1, 2019, from https:

//www.iaea.org/topics/funding-and-finance.

[6] Reconstruction of small stone arch bridges in Dalmatian Hinterland. (July,

2011). Retrieved December 2, 2019, from https://www.researchgate.net/figure/

Numerical-model-of-the-stone-structure-of-the-bridge-over-Zrmanja-River fig7

259609998.

31

Page 46: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

32 BIBLIOGRAPHY

[7] MOOSE. (n.d.). Retrieved December 2, 2019, from https://moose.inl.gov/

SitePages/Home.aspx.

[8] Note: Use of their figure. Hales, J., Novascone, S., Spencer, B., Williamson, R.,

Pastore, G., & Perez, D. (2014). “Verification of the BISON fuel performance

code.” Annals of Nuclear Energy, 71, 81-90. doi: 10.1016/j.anucene.2014.03.027

[9] Preibisch, S., Saalfeld, S., & Tomancak, P. (2009). “Globally optimal stitching

of tiled 3D microscopic image acquistions.” Bioinformatics, 25(11), 1463-1465.

doi: 10.1093/bioinformatics/btp184

[10] Auto Local Threshold. (n.d.). Retrieved December 1, 2019, from https://imagej.

net/Auto Local Threshold.

Page 47: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

Appendix A

Bubble Number Density

Automated Process

Image Analysis with ImageJ/Fiji

You will need to have the BioVoxxel plug-in installed. The download information

can be found at: https://imagej.net/BioVoxxel Toolbox.

Process

ImageJ/Fiji

1. Open ImageJ software.

2. Open micrograph file.

File → Open then navigate to file location.

3. Set measurement scale. Use the line tool, draw a line over the scale on the

image. If scale on image is not provided then draw over the cladding provided

you know what the cladding thickness is.

33

Page 48: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

34 Chapter A Bubble Number Density Automated Process

Analyze → Set Scale.

In the Set Scale window enter the distance of the ruler or known cladding

thickness in the “Known distance” box and change the units in the “Unit of

length” box to be consistent and then check the “global” option and click OK.

4. Crop image to exclude the cladding, ruler and/or any blemishes. Draw rectangle

around the part of the image to be retained.

Image → Crop. (Shortcut: SHIFT + command + x)

5. Convert image to grayscale.

Image → Type → 8-bit

6. Save the image with File → Save As → Tiff.... This way your original image

will be reusable if needed. This is helpful if you need to stitch your original

with something else or crop it into smaller pieces. You might need to crop into

smaller pieces if there are blemishes in the middle of the image or elsewhere.

7. If you do not have BioVoxxel Toolbox installed please visit the URL provided

above. To be able to use BioVoxxel Toolbox after installation click on the dou-

ble arrow of the ImageJ/Fiji toolbar and select BioVoxxel Toolbox. A green

cube will now appear in the toolbar. Click on the green cube and select Thresh-

old check. In the window, unselect “bright objects on dark background” and

select “include local thresholds” and insert your desired radius and parameters.

Normally, do a radius of 2 and again with 10 as the threshold images will differ

greatly. There is a horizontal scroll bar on the threshold check window for you

to look at what each threshold would choose once applied. The blue and light

blue will not be selected while the yellow, orange, and red areas will be selected.

Page 49: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

35

Figure A.1 Threshold check in comparison to grayscale image

Try to select a few threshold methods that would best represent the original

image. There is no best-fit threshold method so select a few; one that captures

the smaller pores well, one that captures the bigger pores well, and one that is

in between the other two methods.

8. (Check) Test the selected threshold methods by applying them to separate im-

ages of the same image and comparing the threshold image with the original.

The threshold images should be what you expected. For example, if you expect

the image to represent the larger pores better then it should otherwise select a

different threshold method.

9. (Check) You will want to get an idea of how many pores will be counted from

the image before you insert the non-threshold image into the directory that will

be further processed by the python script. With the threshold image click:

Page 50: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

36 Chapter A Bubble Number Density Automated Process

Analyze → Analyze Particles...

A window will appear and the only two boxes that should be selected are “Sum-

marize” and “Include holes” then click Ok. Don’t close the summary window

yet. You will repeat this step until all the threshold images that you are check-

ing have been analyzed. Typically, you will see that one image will be a high

count, one low count, and one in the middle. Occasionally, you will find that

they have similar counts and that simply means that you will not have a large

spread when the python code has processed the images.

10. After selecting the thresholds for each image place the images all into the same

directory. Make sure each image’s name ends with “ test.tif”. Next is using the

python script with ImageJ/Fiji.

Python

1. Open your Python script.

2. Check the path notations within the code to match your directories. You should

have a directory that has the images that you will be using and another to store

the summary CSV files in.

3. Change the scale factor for each image. You have these from step #3 under the

ImageJ/Fiji subsection. In the figure below you see “50x” and “100x”, please

change these to part of the name of each image so that the code can differentiate

between the images. If you are using Atom, you can simply replace all of these

with the replace all function.

Figure A.2 Adjusting the scale factor

Page 51: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

37

The scale factors are inserted for the values found after “distance=”. Everything

else can be left the same.

4. You will be inserting the threshold method(s) for each image as well.

Figure A.3 Adjusting the threshold method

The method can be changed by simply typing the method in where it says

“method=”.

5. (Check) You will need to check what the dimensions of each images are. You can

do this by inserting “print imp.title”, “print imp.width”, and “print imp.height”

as shown in the figure below.

Figure A.4 Main function, “run.”

Page 52: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

38 Chapter A Bubble Number Density Automated Process

Be sure that the “SAMPLE SIZE” equals one and the method function is com-

mented out for this check.

6. Open ImageJ/Fiji and push the ‘[’ key to open the window that you will be

running your python code in.

Figure A.5 ImageJ’s Python editor.

7. Navigate through the directory on the left to where your python script is and

load it. Then click the “Run” button. You will learn the dimensions of each

image. Store these values. The order of the images corresponds with the sum-

mary number of the summary CSV files that will be saved to the directory you

specified in the python script.

8. Now that you know the dimensions of each image (in pixels) you may remove

those lines of code and set the “SAMPLE SIZE” to how many samples you

want. 150 samples for each image is sufficient. Also, un-comment the method

function in the code.

Page 53: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

39

9. When the code is running you will see many summary windows opening and

blinking as they are updated. Look at the terminal section of the ImageJ/Fiji

window to know when the code is done. The word “Finished” will be printed

there.

10. Congrats you have finished collecting the data. Now use excel to analyze the

data.

Page 54: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

40 Chapter A Bubble Number Density Automated Process

Page 55: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

Appendix B

Codes

The codes given below are some of the codes we used to figure out a general trend for

bubble number density. Each code follows from a template that I wrote. The basic

template has a method function, scaling function, and a run function.

The Futurix Code (See Figure B.1) was created for the purpose of applying our

team’s image analysis process to the images that the Marmot team provided us with.

With these images we were able to compare our results from our respective processes.

This code helped us realize that there was a scaling difference. The Futurix images

are from recent metal fuel micrographs with the scale factor already determined for

them by the Marmot team.

The Filtered Process 2 (FP2) code (See Figure B.2) was the code that we settled

on when collecting the counts for our model. The code includes the scaling for each

image that were using and the threshold methods that corresponded with them. We

later lowered the sample size to 125 because ImageJ was throwing up warnings and

errors that we could not fix, yet did seized after lowering the sample size.

41

Page 56: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

42 Chapter B Codes

Figure B.1 Python code for processing Futurix images

Page 57: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

43

Figure B.2 FP2 code.

Page 58: DEVELOPING A BUBBLE NUMBER DENSITY TREND FOR …

44 Chapter B Codes