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 inputs for physics codes that require structured meshes from a more flexible ARMI reactor mesh.

This is implemented generically but includes a concrete subclass for neutronics-specific parameters. This is used for build input files for codes like DIF3D which require axially uniform meshes.

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.NeutronicsUniformMeshConverter() 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]

Create a new reactor with a uniform mesh.

static initNewReactor(sourceReactor)[source]

Built an empty version of the new reactor.

static makeAssemWithUniformMesh(sourceAssem, newMesh)[source]

Build new assembly based on a source assembly but apply the uniform mesh.

The new assemblies must have appropriately mapped number densities as input for a neutronics solve. They must also have other relevant state parameters for follow-on steps. Thus, this maps many parameters from the ARMI mesh to the uniform mesh.

See also

applyStateToOriginal

basically the reverse on the way out.

plotConvertedReactor()[source]
applyStateToOriginal()[source]

Now that state is computed on the uniform mesh, map it back to ARMI mesh.

class armi.reactor.converters.uniformMesh.NeutronicsUniformMeshConverter(cs=None, calcReactionRates=True)[source]

Bases: armi.reactor.converters.uniformMesh.UniformMeshGeometryConverter

A uniform mesh converter that specifically maps neutronics parameters.

This is useful for codes like DIF3D.

Notes

If a case runs where two mesh conversions happen one after the other (e.g. a fixed source gamma transport step that needs appropriate fission rates), it is essential that the neutronics params be mapped onto the newly converted reactor as well as off of it back to the source reactor.

Parameters
  • cs (obj, optional) – Case settings object.

  • calcReactionRates (bool, optional) – Set to True by default, but if set to False the reaction rate calculation after the neutron flux is remapped will not be calculated.