ne.gif (2791 bytes)     NE421 Introduction to Nuclear Criticality Safety

Return to Course Outline


 



HW#2: Oktoc tutorial

Oktoc is a code written to emulate SCALE CSAS5 (it also accepts the older designation CSAS25) for simple problems involving U235/water mixtures, for use in this class assignments and final projects. It has an associated viewer called Metric that allows you to visualize geomtries and execute problems.

In this assignment, we will be going over the Test.in input deck that you downloaded in the Computational Setup exercise, running it, and then setting you loose to complete the assignment. 

Open Test.in

I will assume that you are working from a subdirectory named "NE421" throughout the course.  But that is up to you.

We will be creating input files in this directory and executing them from the Command Prompt or from the Metric utility. You can use any word processor, but if you use a word processor that puts in extra formatting information (like MS Word does), be sure to save the result in ASCII (text) format. 

Here is what the deck looks like now:

=csas25 parm=centrm
NE421 Metric example
44GROUPNDF5
read composition
UO2 1 0.9 293 92235 95 92238 5 end
H2O 1 0.1 293 end
BoratedPolyethylene 2 1 293 end
MGconcrete 3 1 293 end
h2o 4 1 293 end
end composition
read param gen=100000 sig=0.00001 tme=.1 npg=10000 nsk=3 end param
read geometry
 unit 1
  sphere 4 1 2
  cylinder 1 1 7 8 -8 
  cuboid   0 1   9    -9     9     -9    8 -8
 global unit 9
  array  1 -88 -100 50
  cuboid 0 1 150 -150 150 -150 300  0
  cuboid 3 1 165 -165 165 -165 315 -15
end geometry
read array
ara=1 nux=9 nuy=3 nuz=1 fill f1
end array
end data
end

  

After cut-and-pasting to a text file, you could execute this from the Command Prompt by entering 'java -cp NE421.jar Oktoc test.in'. Try it. (Or use Metric and the 'k' key.)
The answer should be a hair over 0.82.

Let's look at this line by line.

The alternative is to slog your way through the SCALE manual.  Although I am going to allow you to short-circuit the manual for now, I still recommend that you get it and learn to use it.

We are going to take a shortcut and I am just going to teach you what each line means, so you can modify this deck to do the assignment. 

Input section 1: Sequence definition, title, cross section library

=csas25 parm=centrm
The first line states the sequence that will be used and specifies the resolved resonance processing tool that will be used (CENTRM). Oktoc does not perform resonance processing, but the most accurate SCALE option is CENTRM, so I am going to keep it in our input files. (In hopes that the files can be run with SCALE with minimum modification--for those who want to.) 
NE421 Metric example

This is the title of the case.  You should change this every time you modify the deck. (Despite the fact that I have not changed 'Metric' to 'Oktoc' like I should have!)

44GROUPNDF5

This gives the name of the cross section library that SCALE will use. (It is quite likely that this one will not actually work. Maybe 'v7-56' would have been a better choice. But, again, Oktoc does not use this library anyway, but has a hard-wired 44-group library built on 44GROUPNDF5 from SCALE 5.1, so I am keeping it here.)

Input section 2: Defining materials

read composition

This tells SCALE that we are going to begin defining the materials that we will use. This 'composition' section follows the pattern we will see several times, where 'READ xxx' begins an input section and 'END xxx' ends the section. (NOTE: In old SCALE versions, the "read composition" line was not used, but material definition was assumed to start right after the cross section library. You may see this in older input decks, but it is poor form to use it today.)

In the composition section, each material is given a number (so we can refer to it later), and it is best to just number them in order from 1 up. (Unless you organize your work some other way.)

UO2 1 0.9 293 92235 95 92238 5 end

This line is the description of material 1: 

  • Entry 1 "UO2" is the Standard composition name for uranium dioxide. In Metric, the 'g' option tells you all the materials available to you.
  • Entry 2 "1" is the mixture ID number
  • Entry 3 "0.9" is the volume fraction of the composition in the mixture (0.9 means 90%.  So this material is 90% UO2 by VOLUME (and the next line fills out the other 10%).)
  • Entry 4 "293" is the temperature in Kelvin
  • Entry 5 "92235" is the isotope's ZA number, which is 1000 * atomic number + atomic weight. So this is U-235.
  • Entry 6 "95" is the weight percent of the isotope in the composition.  (NOTE: Entries 5 and 6 are repeated for each isotope in the element). 
  • So the "92238 5" tells us that the other 5% is U-238.
  • Entry 7 is "END" as required to tell the code that the material line is over. (You could spread it over multiple lines for readability if you want.)
H2O 1 0.1 293 end

This is the material card for the other 10% of mixture 1, which is water, following the same pattern as the previous card. 


BoratedPolyethylene 2 1 293 end
MGconcrete 3 1 293 end
h2o 4 1 293 end
  

These cards just define materials 2, 3, and 4 in the same way. (You can always define more materials than you use, for use in later problems.) 

end composition

This signifies the end of the COMPOSITION part of the input deck.

Input section 3: Calculational parameters

read param gen=100000 sig=0.00001 tme=.1 npg=10000 nsk=3 end param

This line contains the entire input section for PARAM. These parameters tell the code how the simulation is to proceed and how it will be terminated. The entries (a bit out of order) are: 

  • Entry "npg" says how many fission neutrons will be in each generation. As discussed in class, the basic calculational procedure in Monte Carlo k-effective calculations is to "drop" a bunch of neutrons into the problem, let them live their lives, and then see how many new fission neutrons are produced. Then, for each of these "dropping experiments" (each of which is called a "generation"), the code gets an estimate of k-effective as the ratio of how many fission neutrons were produced divided by how many started. This parameters tells us how many neutrons will be dropped in each generation.
  • Entry "nsk" tells the code how many generations to "skip" before it really starts to statistically process the k-effective guesses. As will be discussed in a future lecture, this is necessary (or at least statistically helpful) because the first few k-effective guesses are likely to be bad until the problem settles down a bit.
  • Entry "gen" is the first of three parameters that tell the code when to stop. This one is the maximum number of generations to run.
  • Entry "sig" is the desired standard deviation of k-effective desired. The code will stop (with some variation to make sure that the probability of "false convergence" is minimized) when this is met, even if the maximum number of generations has not been run.
  • Entry "tme" (the most useful to us to conserve class time!) is the maximum number of minutes to run. After this time has elapsed, the code will stop even if the maximum number of generations has not been met nor the desired standard deviation of k-effective met.
  • As before the "read param" and "end param" are the bookends of the PARAM section of input.

Input section 4: Defining the 3D geometry

The next input section defines the 3D geometry. But before we dive into it, let's discuss the framework that KENO uses (and Oktoc emulates).

The basic 3D geometric UNIT in KENO is called a (drum roll please) "UNIT". The main UNIT (the room or glovebox, usually) is referred to as the GLOBAL UNIT and the other UNITs are generally movable objects that are placed inside the global UNIT.

Each of the UNITs are built from layers of materials laid on top of each other--with each layer completely enclosing the previous layer.

Building and placing these UNITs is the principal geometric task that the user has to master, and it requires a particular "from the inside out" point of view.

Describing a layer

The layers in a KENO UNIT are described by specifying a material number and an outer surface that contains it.  Although KENO gives a greater variety of surfaces that can enclose each layer, Oktoc only understands three of them: spheres, upright cylinders, and cuboids (i.e., boxes).  (The manual describes these and the other outer surface shapes that you can use.)

A SPHERICAL layer is specified with the syntax:

SPHERE   mat#  1  radius  ORIGIN x y z      [These last 4 are optional.  Without them, the sphere is centered on (0,0,0).]

Example:
SPHERE   3   1   5.6
specifies a region that contains material 3 and has an outer surface that is a sphere centered on (0,0,0) with a radius of 5.6 centimeters.

SPHERE   2   1   4.2  origin 1 2 3
specifies a region that contains material 2 and has an outer surface that is a sphere centered on (1,2,3) with a radius of 4.2 centimeters.

(Yes, there is an extra "1" sitting there, not doing anything. It means something to the ORNL guys--something about importance, if I remember correctly--but we will just have the "1" in that position every time. Don't question your superiors, peon.)

A CYLINDRICAL layer is specified with the syntax:

CYLINDER   mat#  1  radius  +z -z ORIGIN x y      [These last 3 are optional.  Without them, the cylindrical axis is the z axis, with x=0 and y=0.]

The +z is the elevation of the TOP of the cylinder and -z is the elevation of the BOTTOM of the cylinder.

You are free to put the origin anywhere in the UNIT that you want to--but remember where you put it!

Example:
CYLINDER   1   1   5.6 10 0
specifies a region that contains material 1 and has an outer surface that is a cylinder centered on the z axis with a radius of 5.6 which goes from 0 to 10 centimeters. (Note that this puts the origin at the center of the bottom surface of the cylinder, which is my preference. Some analysts prefer to put it in the center of the cylinder--in which case the last two numbers in the line would be 5 and -5. Do what you want.)

CYLINDER   8   1   4.1  7 2 origin 1 2
specifies a region that contains material 8 and has an outer surface that is a cylinder centered on (1,2) with a radius of 4.1 centimeters which goes from 2 to 7 centimeters in z.

A CUBOID layer is specified with the syntax:

CUBOID   mat#  1  +x -x +y -y +z -z

The -x, +x, -y, +y, -z, and +z are the upper and lower limits of the x, y, and z ranges.  The tough part is remembering the order that these must be listed (which feels backwards).

Example:
CUBOID 11   1   5 -5 6 -6 7 -7
specifies a region that contains material 11 and has an outer surface that is a rectangular parallelpiped (a box) ranging from -5 to 5 in x, -6 to 6 in y, and -7 to 7 in z

(There is also a special CUBOID UNIT called an ARRAY, but I think I will wait and describe it when we have a good example in front of us.)

Describing a KENO UNIT

The syntax to creating a UNIT (a standalone object in KENO) is:

UNIT unit#
...Line describing innermost layer
...Line describing next layer moving out
....
...Line describing the outermost layer

Putting it together

Now, I think we are ready to look at the geometric description in Test.in.

The GEOMETRY section begins and ends (not surprisingly) with the READ GEOMETRY and END GEOMETRY lines.

Here are the lines from Test.in:


read geometry
 unit 1
  sphere 4 1 2
  cylinder 1 1 7 8 -8 
  cuboid   0 1   9    -9     9     -9    8 -8
 global unit 9
  array  1 -88 -100 50
  cuboid 0 1 150 -150 150 -150 300  0
  cuboid 3 1 165 -165 165 -165 315 -15
end geometry

  

The geometry consists of two UNITs: UNIT 9 is the room (so it is marked GLOBAL) and UNIT 1 is a fissile UNIT made up of three layers:

  • A sphere made up of material 4 (water). It has a radius of 2 cm and is centered on the origin.
  • A surrounding cylinder of radius 7 cm and height 16 cm. The origin of the UNIT is in the center (where the sphere is centered)
  • A surrounding cuboid of width and depth of 18 cm and a height of 16 cm. Similarly to the others, the origin is in the center.

UNIT 9 is also made of three layers:

  • An ARRAY--which Oktoc considers as a CUBOID with other UNITs packed inside. Otherwise, it has to follow the "inside out" philosophy (so the next layer has to enclose it completely).
    The entries on the line following the initial "array" designator are:
    • A number. This designates that we are putting in ARRAY #1 (there can be multiple ARRAYs).
    • Three numbers to designate where the ARRAY is placed in UNIT 9. This is the minimum x, y, and z coordinates of the ARRAY placement (i.e., the lower left front corner).
    • The size and composition of the ARRAY (all of the ARRAYs, actually) will be specified later in an ARRAY input section.
    • The dimensions of the ARRAY are not stated here (but the surrounding layer is still required to enclose it!). This is considered a cuboid that is "shrink-wrapped" around the ARRAY, so has no material of its own.
  • A surrounding cuboid of material 0 (which means a vacuum) that is 300 cm on each side. This represents the air in the room. (Notice that bottom of the air is at z=0--convenient for placing objects on the floor.)
  • A surrounding cuboid that is 15 cm outside the air cuboid. This is the concrete wall, ceiling, and floorof ~6 inch thickness.

The GLOBAL UNIT is the one that the code will calculate. You can make as many other UNITs, but unless you somehow get them into the GLOBAL UNIT, they will not be included. (Like materials that are defined but never used.)

There are two ways to incorporate other UNITs into the GLOBAL UNIT: ARRAYs and HOLEs.

Input section 5: Defining any ARRAYs used (not needed if there are no ARRAYs)


read array
ara=1 nux=9 nuy=3 nuz=1 fill f1
end array
  

Between the obligatory READ ARRAY and END ARRAY entries there is a single ARRAY defined. (You could have multiple if there was, for example, a line that started "ara=2")

The entries for the line are:

  • ara=1 Tells us we are building ARRAY #1
  • nux=9 Tells us that the ARRAY has nine "columns" = elements in the x dimension
  • nuy=3 Tells us that the ARRAY has three "rows" = elements in the y dimension
  • nuz=1 Tells us that there is a single vertical layer
  • fill Tells us that the following numbers indicate which UNITs are in each position of the ARRAY
  • f1 This is a KENO shortcut (actually it is called a FIDO shortcut) that says that we should "fill" all the entries with the value "1"
  • Yes, my laziness is showing, but this is a common shortcut when all the UNITs in an ARRAY are the same. If I were not so lazy (but stayed neat), the ARRAY cards would read:

    
    read array
    ara=1 nux=9 nuy=3 nuz=1 fill 
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1
    end array
      

    NOTE that (as if this were not complicated enough!) the top row of one's above represents the LOWEST (minimum y) row of UNITs. (Of course, it doesn't matter if the ARRAY is symmetric like this one.)

  • IT IS REQUIRED that any UNITs that are put into an ARRAY (like UNIT 1 in this example) HAVE TO have a CUBOID as the outermost layer, to properly "square up" and space the internal stuff.

Using HOLEs to insert UNITs into other UNITs

Although not used in Test.in, there is another way that UNITs can be put into other UNITs (most commonly a movable UNIT placed in a room): Using the HOLE card.

Here are the relevant details:

  • The syntax is
    hole UNIT# xorig yorig zorig
    with:
    • "hole" The literal letters that have to begin the line
    • unit# The number of the UNIT to be inserted
    • xorig yorig zorig = The position that the ORIGIN of the UNIT being inserted will occupy in the UNIT where it is being placed. (A little tricky, huh?)
  • THIS IS THE REALLY TRICKY PART: The HOLE line has to go AFTER the description of the layer that encloses it.

    Yes, this violates the inside-out philosophy, but you have to live with it. The HOLE is placed AFTER the layer that a neutron exiting the HOLE will see next. (Generally this means AFTER the CUBOID that defines the air in the room.)

Use of HOLEs gives you great flexibility in placing objects in the room, at the cost of having to keep up with more details.

As a (somewhat tedious) example, here is what the Test.in deck would look like with HOLEs instead of that ARRAY it used:


=csas25 parm=centrm
NE421 Metric example
44GROUPNDF5
read composition
UO2 1 0.9 293 92235 95 92238 5 end
H2O 1 0.1 293 end
BoratedPolyethylene 2 1 293 end
MGconcrete 3 1 293 end
h2o 4 1 293 end
end composition
read param gen=100000 sig=0.001 tme=10 npg=10000 nsk=3 end param
read geometry
 unit 1
  sphere 4 1 2
  cylinder 1 1 7 8 -8 
 global unit 9
  cuboid 0 1 150 -150 150 -150 300  0
  hole 1 -79 -91 58
  hole 1 -61 -91 58
  hole 1 -43 -91 58
  hole 1 -25 -91 58
  hole 1 -7 -91 58
  hole 1 11 -91 58
  hole 1 29 -91 58
  hole 1 47 -91 58
  hole 1 65 -91 58
  hole 1 -79 -73 58
  hole 1 -61 -73 58
  hole 1 -43 -73 58
  hole 1 -25 -73 58
  hole 1 -7 -73 58
  hole 1 11 -73 58
  hole 1 29 -73 58
  hole 1 47 -73 58
  hole 1 65 -73 58
  hole 1 -79 -55 58
  hole 1 -61 -55 58
  hole 1 -43 -55 58
  hole 1 -25 -55 58
  hole 1 -7 -55 58
  hole 1 11 -55 58
  hole 1 29 -55 58
  hole 1 47 -55 58
  hole 1 65 -55 58
  cuboid 3 1 165 -165 165 -165 315 -15
end geometry
end data
end

  

(Thank goodness for spreadsheets!)

Note that I removed the outer cuboid in UNIT 1 (it was only there because ARRAY required it) and the READ ARRAY ... END ARRAY lines.

Assignment

For the assignment, simply take the 9x3 array in the example and put it on the floor and in one of the corners (doesn't matter which one), to see how much the concrete reflection increases k-effective. (Spoiler alert: Quite a bit.)

Write up the results and either email it to me or bring a hard copy to class. Cut-and-paste an xy view of your geometry from Metric into your submission.




Return to Course Outline                                                                                               © 2017 by Ronald E. Pevey.  All rights reserved.