armi.reactor.converters.uniformMesh module

Converts reactor with arbitrary axial meshing (e.g. multiple assemblies with different axial meshes) to one with a global uniform axial mesh.

Useful for preparing DIF3D, etc. structured mesh neutronics runs from flexible ARMI reactor

Requirements

  1. Build an average reactor with aligned axial meshes from a reactor with arbitrarily unaligned axial meshes in a way that conserves nuclide mass

  2. Translate state information computed on the uniform mesh back to the unaligned mesh.

  3. For neutronics cases, all neutronics-related block params should be translated, as well as the multigroup real and adjoint flux.

Examples

converter = uniformMesh.UniformMeshGeometryConverter() uniformReactor = converter.convert(reactor) # do calcs, then: converter.applyStateToOriginal()

The mesh mapping happens as described in the figure:

../_images/axial_homogenization.png
class armi.reactor.converters.uniformMesh.UniformMeshGeometryConverter(cs=None)[source]

Bases: armi.reactor.converters.geometryConverters.GeometryConverter

Build uniform mesh version of the source reactor

convert(r=None)[source]

Run the conversion.

Parameters
  • cs (CaseSettings object) – CaseSettings associated with a specific reactor

  • sourceReactor (Reactor object) – The reactor to convert.

Returns

convReactor – the converted reactor (converters only, not changers)

Return type

Reactor object

static initNewReactor(sourceReactor)[source]

Set up the new reactor

static applyUniformMesh(sourceAssem, newMesh)[source]
plotConvertedReactor()[source]
applyStateToOriginal()[source]

Now that flux/power, etc. is computed on the uniform mesh (newReactor), map it back to ARMI mesh (sourceReactor)

this runs after the neutronics has been computed on the neutronics mesh