|
Performing Diffusion Theory Reactor Calculations
In this lesson, we will put together the assembly cross sections -- parameterized
by assembly exposure -- into full reactor calculations. At this point,
we leave the SCALE system and run CARTER, a simple two dimensional Cartesian
geometry diffusion theory burnup code I wrote several years ago.
(I picked it for this exercise because I could easily modify it to accept
the parameterized cross sections from the previous exercises).
Setting up the CARTER run
The CARTER code executable is located in the root directory of all of the
UTNE 3rd floor computers that run SCALE.
The input file to CARTER uses the KOFFI system, which stands for keywork-ordered
free-form
input.
(The similarly to the name "Java" is coincidental; KOFFI predates Java
by several years.) All of the user-supplied input is provided from
a text file in which the input data appears in "keyword = data"
syntax.
Learning the keywords that must be input is best done by an example.
The following is a file that runs a quarter-core calculation of a reactor
composed of a single assembly type surrounded by water assemblies:
assembly_width = 21.42
nx = 9
ny = 9
map =
4 4 4 4 0 0 0
0 0
1 1 1 4 4 4 0
0 0
1 1 1 1 1 4 4
0 0
1 1 1 1 1 1 4
4 0
1 1 1 1 1 1 1
4 0
1 1 1 1 1 1 1
4 4
1 1 1 1 1 1 1
1 4
1 1 1 1 1 1 1
1 4
1 1 1 1 1 1 1
1 4
left = 1
right = 0
top = 0
bottom = 1
burnup = 1000 15000
max_assembly_power = 20
max_reactor_power = 3400
groups = 3
! Include material cross sections
include region1.mxs
include region2.mxs
include region3.mxs
include water.mxs
We shall now go through this input line-by-line and explain the input.
(Note however, that the ORDER that the keywords appear make no difference
to the KOFFI system. The "groups" keyword, for example, could have
been first instead of last.)
Line-by-Line Commentary of the Sample Input File
assembly_width = 21.42
nx = 9
ny = 9
-
These lines indicate that the reactor assemblies are 21.42 cm square
and that the reactor model includes a 9x9 array of assemblies. As
we will see below, this models the "upper-right-hand quadrant" of the reactor.
map =
4 4 4 4 0 0 0
0 0
1 1 1 4 4 4 0
0 0
1 1 1 1 1 4 4
0 0
1 1 1 1 1 1 4
4 0
1 1 1 1 1 1 1
4 0
1 1 1 1 1 1 1
4 4
1 1 1 1 1 1 1
1 4
1 1 1 1 1 1 1
1 4
1 1 1 1 1 1 1
1 4
-
The "map" keyword precedes an actual layout of the assemblies
in the model, looking DOWN on the reactor. The numbers in the 9x9
array indicated the assembly type by position. The "1" values
indicate the position of the first type of fuel assembly; the "4"
values indicate the positions of water assemblies; and the "0" values
indicate positions that are outside the core, which are treated as extrapolated
void boundaries by the diffusion theory calculation.
-
Since there are 52 "1" entries in this model, the full reactor
is one with 4x52 = 208 fuel assemblies.
left = 1
right = 0
top = 0
bottom = 1
-
These lines establish the quarter-core symmetry by putting reflected
boundary conditions (denoted by "1") on the left and bottom of the
model and void boundary conditions (denoted by "0")on the top and
right.
burnup = 1000 15000
-
This entry lays out the burnup calculation to be performed. The
"burnup" entries are, respectively, the burnup increment and the
total (upper limit) burnup. The units of burnup are "average MWt-days/assembly".
-
For example, after computing the reactor power (including indiidual
assembly powers)at the beginning of life, CARTER will determine how many
days of operation would add an average of increment MWt-days per
assembly. Then, the power distribution is used to determine the exact
amount of burnup to add to each assembly. Finally, the total cummulative
exposure (burn-up) of each exposure is used in determining the group cross
sections for each of the assemblies. (Remember, previous exercises
resulted in burn-up dependent cross sections fits.)
max_assembly_power = 20
max_reactor_power = 3400
-
These two lines specify the criteria by which the reactor power will
be determined at any time. To simulate (simplified) real-world conditions,
CARTER assumes that there are two power limits: a limiting assembly power
(based on preventing fuel pin/cladding melting)and a maximum power for
the reactor as a whole (based on preventing pump cavitation or some other
reactor-wide accident scenario). These entries set these two limits
in MWt ("megawatts thermal").
-
In practice, CARTER would raise the power (i.e., from 0) until one
of the two limits is met. If the assembly power limit is reached
first, we say we are "assembly limited"; this will occur if the highest
power assembly is significantly above the average. If the reactor
power limit is reached first, we say that we are "reactor limited".
-
Our goal is to design our reactor loadings so that we are always reactor
limited. (Whenever we are assembly limited, we are -- by definition
-- operating at a lower reactor power than we could be. Therefore
, we want our assembly power profile to be as uniform ("flat") as possible
so that we can output the maximum reactor power all the time.
-
groups = 3
! Include material cross sections
include region1.mxs
include region2.mxs
include region3.mxs
include water.mxs
-
The first entry states that the cross sections for this calculation involve
three energy groups. After a text comment (denoted to KOFFI
by the "!" in the first column, each of the assembly type cross sections
are included. The ".mxs" files, you will recall, are produced
by the READ2H code operating on the SAS2H assembly calculation output.
-
Note that (for the first time) ORDER MATTERS. The first set included
will be assembly type #1, the second is type #2, etc. I have generated
the water cross sections for you; they are in the SCALE43 subdirectory
of the 3rd floor computers that run SCALE. (As part of the class
project, you will have to generate the other assembly cross sections through
dedicated SAS2H runs.
1998 Note: The ".mxs" files from previous exercises WILL NOT
WORK with CARTER due to recent changes to the READ2H code. You have
to rerun READ2H on your old SAS2H output files -- if you still have them
;)
Running CARTER
To run CARTER you need to::
-
Copy the "r1.inp" file and all ".mxs" files from the SCALE43 directory
to your operating directory
-
Enter "carter"
-
In response to the prompt, enter "r1.inp".
-
In response to the prompt, enter "r1.out".
While the code is running, the screen will show the progress through the
burnup. Notice that the calculation may not go to the full burnup
requested in the "burnup" keyword entry -- the calculation will
stop if the system goes subcritical.
As you might suspect, the code output is in the file "r1.out".
Let's look at it.
CARTER output
The total output is too long to reproduce here, so I recommended you open
another edit window -- preferably one that shows line numbers -- to follow
this discussion. Here are some interesting data from the output file:
-
Of the 1974 lines of output, the first 470 lines re-describe the problem
description prior to getting started. Notice that each of our precomputed
cross sections -- shown beginning in line 130 --, which are in reality
MACROSCOPIC cross sections, are interpreted by CARTER as MICROSCOPIC, so
we have to specify an atom density of 1 atom/barn/cm to "officially" convert
them to macroscopic.
-
The actual listing of the cross sections is underlabeled. Beginning
in line 191, for example, the total cross section of the "fake" isotope
that comprises region 1 is listed as:
Group Total
Transport nu*Fission Scatter
Chi
1 2.19300E-01 1.36900E-01
8.45700E-03 2.15570E-01 7.35300E-01
2 6.65100E-01 3.22000E-01
6.00300E-03 6.53800E-01 2.64700E-01
3 1.38500E+00 1.10400E+00
1.27000E-01 1.30467E+00 1.07200E-10
1 -2.38000E-07 -2.00900E-07 -5.26100E-09
-2.32400E-07 2.60600E-08
2 5.88200E-08 3.30800E-07
-2.18000E-07 -1.78100E-07 -2.72800E-08
3 4.71100E-06 -5.63300E-06
2.64400E-06 2.46858E-06 3.27400E-16
1 5.96800E-12 6.25400E-12
-9.00900E-13 6.17800E-12 -1.59300E-12
2 -7.64000E-12 -1.71700E-11
1.75600E-12 6.11700E-12 1.76000E-12
3 -3.93100E-10 2.09800E-10
-4.16600E-10 -1.40335E-10 1.39400E-20
1 -1.21100E-16 -1.26600E-16
2.47300E-17 -1.28610E-16 3.56600E-17
2 1.16400E-16 2.69200E-16
6.04700E-17 -1.79000E-16 -3.47300E-17
3 9.03700E-15 -3.91000E-15
1.06800E-14 2.84226E-15 -7.46400E-25
which seems to be multiply redundant -- listing group 1, then group
2, then group 3, then group 1 again(?), etc. The explanation for
this weirdness is that these are coefficients of an exposure-dependent
polynomial expansion for each of the cross sections. The group
1 total should be interpreted by picking out the group 1 entries to read:

-
Beginning on line 470, the initial unburned core calculation is shown ("hot,clean").
A series of maps are shown: the assembly exposure (all zeroes), followed
by an numbering of fuel assemblies from 1 to 52 in order of decreasing
exposure ("Wait!", you say. "All I see are zeroes!" That's
because there is nothing to order YET.), followed by the same ordering
in reverse (i.e., in order of increasing exposure. These maps are
useful for core-shuffling, which will be part of the next lesson.
-
On line 519, we have the eigenvalue for the unburned case:
Outer iteration 151, k =
1.262340, Error = .0000970
which is followed by an assembly relative power map:
Relative Fission Power on original grid
.0000 .0000 .0000
.0000 .0000 .0000 .0000
.0000 .0000
.3332 .3001 .2225
.0000 .0000 .0000 .0000
.0000 .0000
.6758 .6261 .5235
.3693 .2253 .0000 .0000
.0000 .0000
1.0156 .9564 .8401
.6746 .4811 .2594 .0000
.0000 .0000
1.3343 1.2680 1.1392 .9565
.7334 .4811 .2253 .0000
.0000
1.6140 1.5420 1.4022 1.2031
.9565 .6746 .3693 .0000
.0000
1.8390 1.7626 1.6141 1.4022 1.1392
.8401 .5235 .2225 .0000
1.9964 1.9170 1.7626 1.5420 1.2680
.9564 .6261 .3001 .0000
2.0774 1.9964 1.8390 1.6140 1.3343
1.0156 .6758 .3332 .0000
These are the ratios of the assembly power to the average assembly power.
Notice that the peak is in the center assembly and that the peak is more
than twice the average. This is not good. If the peak/average
is greater than about 1.25, the reactor is sure to be assembly limited
-- and therefore operating below full power.
-
This is followed by a power ordering map -- numbering the highest power
assembly #1, the next #2, etc., through #52. Again, this will be
useful for core shuffling later.
-
Next (in line 554) we make the first real burnup step -- 103.87 days --
to arrive at an average assembly exposure of 1000 MWDt.
-
In line 563, the calculation of reactor conditions after the burn is begun.
Notice that we now have a non-zero exposure map, with the resulting ordering
and inverse ordering maps. (Notice that the highest exposure is 2077
MWD, which is 2.077 times the average, mirroring the initial peak/average
power.)
-
When we get down to line 616, we see that the power profile has flattened
quite a bit by the preferential burning of the center of the core -- now
the peak/average is only 1.4177. Interestingly, the location of the
maximum power has drifted away from the center, beginning the characteristic
"double-humped" power shape of deep burns (i.e., depressed in the center).
The same output pattern is repeated for all of the burn steps until the
core goes subcritical. A final table at the bottom of the output
deck summarizes the reactor behaviour during the cycle:
============================================================
Power and exposure by burnup
Avg. Max/Ave
Max
Exposure Assembly Rx Assembly
Step Time(d)
per Ass. Power Power Power
K-eff
==== ========= ========
========= ======= ======= ========
0
.00 .00 2.0774
2002. 20.00 1.26234
1
103.87 1000.00 1.4177 2934.
20.00 1.23053
2
174.76 2000.00 1.2907 3223.
20.00 1.20552
3
239.29 3000.00 1.2379 3360.
20.00 1.18327
4
301.19 4000.00 1.2055 3400.
19.71 1.16281
5
362.36 5000.00 1.1808 3400.
19.30 1.14371
6
423.54 6000.00 1.1627 3400.
19.01 1.12571
7
484.72 7000.00 1.1475 3400.
18.76 1.10863
8
545.89 8000.00 1.1362 3400.
18.57 1.09231
9
607.07 9000.00 1.1260 3400.
18.41 1.07667
10
668.25 10000.00 1.1169 3400.
18.26 1.06162
11
729.42 11000.00 1.1091 3400.
18.13 1.04712
12
790.60 12000.00 1.1015 3400.
18.01 1.03314
13
851.78 13000.00 1.0943 3400.
17.89 1.01969
14
912.95 14000.00 1.0873 3400.
17.77 1.00679
EOL
940.35 14447.82 1.0844 3400.
17.73 1.00000
Some interesting features about this table are:
-
In the third column, the average assembly exposure increases uniformly
in steps of 1000. The only row out of sync is the final one, which
gives interpolated properties at the instant the the reactor slips below
critical.
-
K-effective (right-most column) is monotonically decreasing throughout
the charge. This is normal, of course.
-
Examination of the reactor power and assembly power columns (5 and 6) indicates
that we are assembly limited for the first 250 days of the charge, then
become reactor limited (achieving the full power of 3400 MWt).
-
The 4th column, giving the peak/average assembly powers, shows that we
need a peak/average power ratio of about 1.21 or lower to be reactor limited.
Continuing down the column, we see that the reactor "self-flattens" down
to a EOL (i.e., "end-of-life") value of under 1.10. BUT, the
price of a uniform charge is a BOL reactor power of only about 60% of full
power and an 8 month creep up to full power.
-
Time (Column 2) seems non-uniform, but this is only true at the beginning.
After we become reactor limited, the time steps become constant.
The two common design strategies to flatten the assembly powers
at the beginning of life are to:
-
Put less fuel (i.e., lower enriched uranium) uranium in the center assemblies
to depress their BOL power while simultaneously loading more fuel in the
outer assemblies; and/or
-
Add boron to the mid-core assemblies to temporarily depress their power.
Boron is really good for this purpose because it has a "half-exposure"
(I am making this term up) of 600-1000 MWD. By this I mean that for
every 600-1000 MWD of assembly exposure, the boron concentration is cut
in half. In our earlier case, we don't want any power flattening
after about 4000 MWD, so boron is a nicely disappearing poison. (The
catch, of course, is to get just the right amount...)
Complete the assignment:
Try to flatten the "early days" of the reactor loading by both methods
discussed:
Calculation #1
Replace the 11 outer assemblies (the ones that touch the water assemblies
-- diagonal doesn't count) with assembly type #3, which has a 0.5% higher
fuel loading. Keep the total fuel loading constant by replacing 11
inner assemblies (your choice) with assembly type #2, which has a 0.5%
lower fuel loading. Call your deck "r2.inp"
Run the case and compare your results with r1.out as to end-of-life
burnup, length of the charge, and length of time at full power.
Calculation #2
Make a copy of "r1.inp" to "r3.inp". Add "include regbor1.mxs" and
"include regbor2.mxs" to your material list. (These are versions
of "region1" with the same enrichment, but with Zirc-Boron fuel pins
of 1% and 0.5% boron, respectively.)
Play around with replacing the hottest assemblies (see the first
power map in "r1.out") with these boron-loaded assemblies and see if you
can get the inital reactor power up.
Be prepared to share your answers to the above questions in class.
|