# 1. Geometry Specification – geometry.xml¶

## 1.1. <surface> Element¶

Each <surface> element can have the following attributes or sub-elements:

id

A unique integer that can be used to identify the surface.

Default: None

name

An optional string name to identify the surface in summary output files.

Default: “”

type

The type of the surfaces. This can be “x-plane”, “y-plane”, “z-plane”, “plane”, “x-cylinder”, “y-cylinder”, “z-cylinder”, “sphere”, “x-cone”, “y-cone”, “z-cone”, “quadric”, “x-torus”, “y-torus”, or “z-torus”.

Default: None

coeffs

The corresponding coefficients for the given type of surface. See below for a list a what coefficients to specify for a given surface

Default: None

boundary

The boundary condition for the surface. This can be “transmission”, “vacuum”, “reflective”, or “periodic”. Periodic boundary conditions can only be applied to x-, y-, and z-planes. Only axis-aligned periodicity is supported, i.e., x-planes can only be paired with x-planes. Specify which planes are periodic and the code will automatically identify which planes are paired together.

Default: “transmission”

periodic_surface_id

If a periodic boundary condition is applied, this attribute identifies the id of the corresponding periodic sufrace.

The following quadratic surfaces can be modeled:

x-plane

A plane perpendicular to the x axis, i.e. a surface of the form $$x - x_0 = 0$$. The coefficients specified are “$$x_0$$”.

y-plane

A plane perpendicular to the y axis, i.e. a surface of the form $$y - y_0 = 0$$. The coefficients specified are “$$y_0$$”.

z-plane

A plane perpendicular to the z axis, i.e. a surface of the form $$z - z_0 = 0$$. The coefficients specified are “$$z_0$$”.

plane

An arbitrary plane of the form $$Ax + By + Cz = D$$. The coefficients specified are “$$A \: B \: C \: D$$”.

x-cylinder

An infinite cylinder whose length is parallel to the x-axis. This is a quadratic surface of the form $$(y - y_0)^2 + (z - z_0)^2 = R^2$$. The coefficients specified are “$$y_0 \: z_0 \: R$$”.

y-cylinder

An infinite cylinder whose length is parallel to the y-axis. This is a quadratic surface of the form $$(x - x_0)^2 + (z - z_0)^2 = R^2$$. The coefficients specified are “$$x_0 \: z_0 \: R$$”.

z-cylinder

An infinite cylinder whose length is parallel to the z-axis. This is a quadratic surface of the form $$(x - x_0)^2 + (y - y_0)^2 = R^2$$. The coefficients specified are “$$x_0 \: y_0 \: R$$”.

sphere

A sphere of the form $$(x - x_0)^2 + (y - y_0)^2 + (z - z_0)^2 = R^2$$. The coefficients specified are “$$x_0 \: y_0 \: z_0 \: R$$”.

x-cone

A cone parallel to the x-axis of the form $$(y - y_0)^2 + (z - z_0)^2 = R^2 (x - x_0)^2$$. The coefficients specified are “$$x_0 \: y_0 \: z_0 \: R^2$$”.

y-cone

A cone parallel to the y-axis of the form $$(x - x_0)^2 + (z - z_0)^2 = R^2 (y - y_0)^2$$. The coefficients specified are “$$x_0 \: y_0 \: z_0 \: R^2$$”.

z-cone

A cone parallel to the x-axis of the form $$(x - x_0)^2 + (y - y_0)^2 = R^2 (z - z_0)^2$$. The coefficients specified are “$$x_0 \: y_0 \: z_0 \: R^2$$”.

A general quadric surface of the form $$Ax^2 + By^2 + Cz^2 + Dxy + Eyz + Fxz + Gx + Hy + Jz + K = 0$$ The coefficients specified are “$$A \: B \: C \: D \: E \: F \: G \: H \: J \: K$$”.

## 1.2. <cell> Element¶

Each <cell> element can have the following attributes or sub-elements:

id

A unique integer that can be used to identify the cell.

Default: None

name

An optional string name to identify the cell in summary output files.

Default: “”

universe

The id of the universe that this cell is contained in.

Default: 0

fill

The id of the universe that fills this cell.

Note

If a fill is specified, no material should be given.

Default: None

material

The id of the material that this cell contains. If the cell should contain no material, this can also be set to “void”. A list of materials can be specified for the “distributed material” feature. This will give each unique instance of the cell its own material.

Note

If a material is specified, no fill should be given.

Default: None

region

A Boolean expression of half-spaces that defines the spatial region which the cell occupies. Each half-space is identified by the unique ID of the surface prefixed by - or + to indicate that it is the negative or positive half-space, respectively. The + sign for a positive half-space can be omitted. Valid Boolean operators are parentheses, union |, complement ~, and intersection. Intersection is implicit and indicated by the presence of whitespace. The order of operator precedence is parentheses, complement, intersection, and then union.

As an example, the following code gives a cell that is the union of the negative half-space of surface 3 and the complement of the intersection of the positive half-space of surface 5 and the negative half-space of surface 2:

<cell id="1" material="1" region="-3 | ~(5 -2)" />


Note

The region attribute/element can be omitted to make a cell fill its entire universe.

Default: A region filling all space.

temperature

The temperature of the cell in Kelvin. The temperature may be used in windowed multipole Doppler broadening or interpolation of pointwise cross sections versus temperature. A list of temperatures can be specified for the “distributed temperature” feature. This will give each unique instance of the cell its own temperature.

Default: If a material default temperature is supplied, it is used. In the absence of a material default temperature, the global default temperature is used.

rotation

If the cell is filled with a universe, this element specifies the angles in degrees about the x, y, and z axes that the filled universe should be rotated. Should be given as three real numbers. For example, if you wanted to rotate the filled universe by 90 degrees about the z-axis, the cell element would look something like:

<cell fill="..." rotation="0 0 90" />


The rotation applied is an intrinsic rotation whose Tait-Bryan angles are given as those specified about the x, y, and z axes respectively. That is to say, if the angles are $$(\phi, \theta, \psi)$$, then the rotation matrix applied is $$R_z(\psi) R_y(\theta) R_x(\phi)$$ or

$\left [ \begin{array}{ccc} \cos\theta \cos\psi & -\cos\phi \sin\psi + \sin\phi \sin\theta \cos\psi & \sin\phi \sin\psi + \cos\phi \sin\theta \cos\psi \\ \cos\theta \sin\psi & \cos\phi \cos\psi + \sin\phi \sin\theta \sin\psi & -\sin\phi \cos\psi + \cos\phi \sin\theta \sin\psi \\ -\sin\theta & \sin\phi \cos\theta & \cos\phi \cos\theta \end{array} \right ]$

Default: None

translation

If the cell is filled with a universe, this element specifies a vector that is used to translate (shift) the universe. Should be given as three real numbers.

Note

Any translation operation is applied after a rotation, if also specified.

Default: None

## 1.3. <lattice> Element¶

The <lattice> can be used to represent repeating structures (e.g. fuel pins in an assembly) or other geometry which fits onto a rectilinear grid. Each cell within the lattice is filled with a specified universe. A <lattice> accepts the following attributes or sub-elements:

id

A unique integer that can be used to identify the lattice.

name

An optional string name to identify the lattice in summary output files.

Default: “”

dimension

Two or three integers representing the number of lattice cells in the x- and y- (and z-) directions, respectively.

Default: None

lower_left

The coordinates of the lower-left corner of the lattice. If the lattice is two-dimensional, only the x- and y-coordinates are specified.

Default: None

pitch

If the lattice is 3D, then three real numbers that express the distance between the centers of lattice cells in the x-, y-, and z- directions. If the lattice is 2D, then omit the third value.

Default: None

outer

The unique integer identifier of a universe that will be used to fill all space outside of the lattice. The universe will be tiled repeatedly as if it were placed in a lattice of infinite size. This element is optional.

Default: An error will be raised if a particle leaves a lattice with no outer universe.

universes

A list of the universe numbers that fill each cell of the lattice.

Default: None

Here is an example of a properly defined 2d rectangular lattice:

<lattice id="10" dimension="3 3" outer="1">
<lower_left> -1.5 -1.5 </lower_left>
<pitch> 1.0 1.0 </pitch>
<universes>
2 2 2
2 1 2
2 2 2
</universes>
</lattice>


## 1.4. <hex_lattice> Element¶

The <hex_lattice> can be used to represent repeating structures (e.g. fuel pins in an assembly) or other geometry which naturally fits onto a hexagonal grid or hexagonal prism grid. Each cell within the lattice is filled with a specified universe. This lattice uses the “flat-topped hexagon” scheme where two of the six edges are perpendicular to the y-axis. A <hex_lattice> accepts the following attributes or sub-elements:

id

A unique integer that can be used to identify the lattice.

name

An optional string name to identify the hex_lattice in summary output files.

Default: “”

n_rings

An integer representing the number of radial ring positions in the xy-plane. Note that this number includes the degenerate center ring which only has one element.

Default: None

n_axial

An integer representing the number of positions along the z-axis. This element is optional.

Default: None

orientation

The orientation of the hexagonal lattice. The string “x” indicates that two sides of the lattice are parallel to the x-axis, whereas the string “y” indicates that two sides are parallel to the y-axis.

Default: “y”

center

The coordinates of the center of the lattice. If the lattice does not have axial sections then only the x- and y-coordinates are specified.

Default: None

pitch

If the lattice is 3D, then two real numbers that express the distance between the centers of lattice cells in the xy-plane and along the z-axis, respectively. If the lattice is 2D, then omit the second value.

Default: None

outer

The unique integer identifier of a universe that will be used to fill all space outside of the lattice. The universe will be tiled repeatedly as if it were placed in a lattice of infinite size. This element is optional.

Default: An error will be raised if a particle leaves a lattice with no outer universe.

universes

A list of the universe numbers that fill each cell of the lattice.

Default: None

Here is an example of a properly defined 2d hexagonal lattice:

<hex_lattice id="10" n_rings="3" outer="1">
<center> 0.0 0.0 </center>
<pitch> 1.0 </pitch>
<universes>
202
202   202
202   202   202
202   202
202   101   202
202   202
202   202   202
202   202
202
</universes>
</hex_lattice>


## 1.5. <dagmc_universe> Element¶

Each <dagmc_universe> element can have the following attributes or sub-elements:

id

A unique integer used to identify the universe.

Default: None

name

An optional string name to identify the surface in summary output files.

Default: None

auto_geom_ids

Boolean value indicating whether the existing geometry IDs will be used or appended to the existing ID space of natively defined OpenMC geometry entities.

Default: false

auto_mat_ids

Boolean value indicating whether the existing material IDs will be used or appended to the existing ID space of natively defined OpenMC materials.

Default: false

filename

A required string indicating the file to be loaded representing the DAGMC universe.

Default: None

Note

A geometry.xml file containing only a DAGMC model for a file named dagmc.h5m (no CSG) looks as follows

<?xml version='1.0' encoding='utf-8'?>
<geometry>
<dagmc_universe filename="dagmc.h5m" id="1" />
</geometry>