armi.reactor.grids.thetarz module

class armi.reactor.grids.thetarz.ThetaRZGrid(unitSteps=(0, 0, 0), bounds=(None, None, None), unitStepLimits=((0, 1), (0, 1), (0, 1)), offset=None, geomType='', symmetry='', armiObject=None)[source]

Bases: StructuredGrid

A grid characterized by azimuthal, radial, and zeta indices.

The angular meshes are limited to 0 to 2pi radians. R and Zeta are as in other meshes.

It is recommended to call fromGeom() to construct, rather than directly constructing with __init__

See Figure 2.2 in Derstine 1984, ANL. [DIF3D].

Implementation: ARMI supports an RZTheta mesh. IMPL_REACTOR_MESH_3 ../_images/arrow-right-circle.svg
signature: ThetaRZGrid
links outgoing: REQ_REACTOR_MESH
getSymmetricEquivalents(indices: Tuple[int, int]) NoReturn[source]
classmethod fromGeom(geom, armiObject: Optional[ArmiObject] = None) ThetaRZGrid[source]

Build 2-D R-theta grid based on a Geometry object.

Parameters:

geomInfo (list) – list of ((indices), assemName) tuples for all positions in core with input in radians

See also

armi.reactor.systemLayoutInput.SystemLayoutInput.readGeomXML

produces the geomInfo

structure

Examples

>>> grid = grids.ThetaRZGrid.fromGeom(geomInfo)
getRingPos(indices)[source]
static getIndicesFromRingAndPos(ring: int, pos: int) Tuple[int, int][source]
getCoordinates(indices, nativeCoords=False) ndarray[source]
indicesOfBounds(rad0: float, rad1: float, theta0: float, theta1: float, sigma: float = 0.0001) Tuple[int, int, int][source]

Return indices corresponding to upper and lower radial and theta bounds.

Parameters:
  • rad0 (float) – inner radius of control volume

  • rad1 (float) – outer radius of control volume

  • theta0 (float) – inner azimuthal location of control volume in radians

  • theta1 (float) – inner azimuthal of control volume in radians

  • sigma (float) – acceptable relative error (i.e. if one of the positions in the mesh are within this error it’ll act the same if it matches a position in the mesh)

Returns:

tuple

Return type:

i, j, k of given bounds

static locatorInDomain(*args, **kwargs) bool[source]

ThetaRZGrids do not check for bounds, though they could if that becomes a problem.

static getMinimumRings(n: int) NoReturn[source]
static getPositionsInRing(ring: int) NoReturn[source]
static overlapsWhichSymmetryLine(indices: Tuple[int, int]) None[source]
static pitch() NoReturn[source]
armiObject: Optional[ArmiObject]