This page documents the workflow for running transport calculations on a Computer-Aided Design (CAD) 3D model.
- 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
- HDF5
- Python
- Generate 3D model
- [CUBIT] Clean up model
- [CUBIT] Define materials
- [CUBIT] Define graveyard
- [CUBIT] Generate mesh
- [Shift] Input setup
- [Shift] Navigating Output
Generate 3d model using any CAD software. Make sure it is in the format supported by CUBIT:
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.
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.
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.
You can define a boundary condition by tagging a surface with the tag spec.reflect
:
> group "spec.reflect" add surf [surfaces]
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.
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:
- Make sure to clean up your CAD file before you do
export dagmc
. Entities like 'sheet body' can cause errors in your run. - Double-check that your material definitions (
mat:
group labels) start from 0. - Make sure your
mat:graveyard
is a shell, not a filled volume. - Set boundary surfaces by tagging them with
spec.refelct
(periodic boundary conditions not supported yet.).
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
...