Skip to content

Instantly share code, notes, and snippets.

@jbae11
Created April 6, 2022 13:55
Show Gist options
  • Save jbae11/c7c74c56dcea4b9b6d4891991f530065 to your computer and use it in GitHub Desktop.
Save jbae11/c7c74c56dcea4b9b6d4891991f530065 to your computer and use it in GitHub Desktop.
shift instructions

EXNIHILO-DAGMC TRANSPORT CALCULATIONS

This page documents the workflow for running transport calculations on a Computer-Aided Design (CAD) 3D model.

Software Packages Needed

  • Cubit or Trelis
    • Cubit / Trelis has been combined to Coreform Cubit.
    • Check version compatibility from DAGMC user group / website.
  • DAGMC plugin for Cubit
  • Exnihilo
  • MCNP

Dependency

  • HDF5
  • Python

Workflow

  1. Generate 3D model
  2. [CUBIT] Clean up model
  3. [CUBIT] Define materials
  4. [CUBIT] Define graveyard
  5. [CUBIT] Generate mesh
  6. [Shift] Input setup
  7. [Shift] Navigating Output

1. Generate 3D model

Generate 3d model using any CAD software. Make sure it is in the format supported by CUBIT:

2. [CUBIT] Clean up model / Generate mesh

Details on the model preparation is in the DAGMC Website. Cubit also provides some methods for cleaning the geometry (here). Stop at step 7 (export dagmc ...). We still need to define the materials and graveyard.

3. Define material

Preparing the model for Shift is similar to the steps for MCNP. For each material, set a group by using the syntax group "mat:[mat_num]/rho:[density in gcc]" add vol [volumes]. For example, to define a material and have volumes 1, 2, and 3 in them, do:

group "mat:0" add vol 1 2 3

Note that the material number is just 0. You can't have names, just numbers from 0 to N, and these numbers should correspond to your Shift (Omnibus) input file [COMP] block matid. You can define the names in 'matid'. More on that later.

4. Define graveyard / boundary / implicit material

Graveyard

As shown in steps for MCNP, you have to define a graveyard. For Shift, the graveyard mat name is mat:graveyard. Note the lower case g for Shift. An easy way to do this in cubit is to:

> create brick bounding box vol [first_vol] to [last_vol]
> vol [created_vol] copy scale 1.01
> subtract vol [first_created_vol] from vol [second_created_vol]
> group "mat:graveyard" add vol [second_created_vol]

Do note that the graveryard cell has to be a shell, not a solid geometry. If it is a solid geometry, all the particles will be gone.

Boundary condition

You can define a boundary condition by tagging a surface with the tag spec.reflect:

> group "spec.reflect" add surf [surfaces]

Implicit material

The implicit mat is the material that Shift uses to 'fill in' the undefined region in the geometry. For example, if you had a cylindrical shell as your geometry, the void space inside the shell would be 'filled in' by the implicit mat material id. It is 0 by default. Ask Greg how to define it.

5. Generate mesh

Installing the DAGMC Cubit/Trelis plugin is helpful for this step. You can decide to build everything from source in this github. However, to build the plugin, you need the Cubit/Trelis Software Development Kit (SDK).

You can also get a pre-built one from the DAMGC website. Make sure the install scripts are pointing to the right paths before running them. More details can be found on the user group or the website.

Now follow the rest of the steps in DAGMC Website to get the .h5m file.

Here are a couple things to note before you go:

  1. Make sure to clean up your CAD file before you do export dagmc. Entities like 'sheet body' can cause errors in your run.
  2. Double-check that your material definitions (mat: group labels) start from 0.
  3. Make sure your mat:graveyard is a shell, not a filled volume.
  4. Set boundary surfaces by tagging them with spec.refelct (periodic boundary conditions not supported yet.).

6. Input Setup

Before you set up the input, you must set up your material compositions. Create a comp.omn file and fill in your materials as such:

[COMP] ! use only once
[COMP][MATERIAL]
name air
matid 0
tmp 293.6 !(K)
zaid 6000 7014 8016 18040
nd 5.6001013425e-10 3.898552685999999e-06 1.0468517535e-06 2.317364301e-08 !(atom/b-cm)

[COMP][MATERIAL]
...

The matid should correspond to your group mat:x, where x is the matid.

Now it's time to set up the omnibus input. Omnibus is the input/output driver for all Exnihilo packages, including Shift. Manual can be found in here. Omnibus files consist of hierarchical problem definitions. Below, your own inputs are marked by *. For example, *name should be replaced with your own problem name. This is a basic example, refer to the manual for more details.

One thing to note: the cell numbers in your model correspond to the volume ID in cubit minus one (e.g., Cubit VolID 1 -> cell 0 in DAGMC model).

[PROBLEM]
name *name
mode *forward, kcode, adjoint, raytrace, hybrid

[MODEL=dagmc]
input *path_to_h5m_file

[COMP]
#include *path_to_your_comp.omn

! depletion block if you want

[PHYSICS=sce scephysics]
ce_lib_path *ce_lib_path
mode n

[SHIFT]
num_histories *num_histories
do_transport true

*source_definition

*tally_definition

...

7. Navigating Output

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment