armi.reactor.components.volumetricShapes module

3-dimensional shapes.

Implementation: ARMI supports a reasonable set of basic shapes. IMPL_REACTOR_SHAPES_2 ../_images/arrow-right-circle.svg
links outgoing: REQ_REACTOR_SHAPES

Here ARMI implements its support for: Spheres, Cubes, Toruses, and more.

class armi.reactor.components.volumetricShapes.Sphere(name, material, Tinput, Thot, od=None, id=None, mult=None, modArea=None, isotopics=None, mergeWith=None, components=None)[source]

Bases: armi.reactor.components.component.ShapedComponent

A spherical component.

is3D = True
THERMAL_EXPANSION_DIMS = {}
pDefs = <armi.reactor.parameters.parameterDefinitions.ParameterDefinitionCollection object>
getBoundingCircleOuterDiameter(Tc=None, cold=False)[source]

Abstract bounding circle method that should be overwritten by each shape subclass.

getComponentArea(cold=False)[source]

Compute an average area over the height.

getComponentVolume(cold=False)[source]

Computes the volume of the sphere in cm^3.

DIMENSION_NAMES = ('od', 'id', 'mult', 'modArea')
INIT_SIGNATURE = ('name', 'material', 'Tinput', 'Thot', 'od', 'id', 'mult', 'modArea', 'isotopics', 'mergeWith', 'components')
paramCollectionType

alias of armi.reactor.parameters.parameterCollections.SphereParameterCollection

class armi.reactor.components.volumetricShapes.Cube(name, material, Tinput, Thot, lengthOuter=None, lengthInner=None, widthOuter=None, widthInner=None, heightOuter=None, heightInner=None, mult=None, modArea=None, isotopics=None, mergeWith=None, components=None)[source]

Bases: armi.reactor.components.component.ShapedComponent

More correctly, a rectangular cuboid.

is3D = True
THERMAL_EXPANSION_DIMS = {}
pDefs = <armi.reactor.parameters.parameterDefinitions.ParameterDefinitionCollection object>
getComponentArea(cold=False)[source]
getComponentVolume()[source]

Computes the volume of the cube in cm^3.

DIMENSION_NAMES = ('lengthOuter', 'lengthInner', 'widthOuter', 'widthInner', 'heightOuter', 'heightInner', 'mult', 'modArea')
INIT_SIGNATURE = ('name', 'material', 'Tinput', 'Thot', 'lengthOuter', 'lengthInner', 'widthOuter', 'widthInner', 'heightOuter', 'heightInner', 'mult', 'modArea', 'isotopics', 'mergeWith', 'components')
paramCollectionType

alias of armi.reactor.parameters.parameterCollections.CubeParameterCollection

class armi.reactor.components.volumetricShapes.Torus(name, material, Tinput, Thot, inner_minor_radius=None, outer_minor_radius=None, major_radius=None, mult=1, inner_theta=0.0, outer_theta=6.283185307179586, inner_phi=0, outer_phi=6.283185307179586, height=None, reference_volume=None, inner_radius=None, outer_radius=None, isotopics=None, mergeWith=None, components=None)[source]

Bases: armi.reactor.components.component.ShapedComponent

A torus.

Theta defines the extent the radial segment is rotated around the Z-axis phi defines the extent around the major radius (i.e. a half torus is from 0 to pi)

Notes

The dimensions are:

  • p0 - inner minor radius

  • p1 - outer minor radius

  • p2 - major radius

  • p3 - multiplier

  • p4 - inner theta (optional) 0 (default)

  • p5 - outer theta (optional) 2pi (default)

  • p6 - inner phi (optional) 0 (default)

  • p7 - outer phi (optional) 2pi (default)

  • p8 - height (optional) <set as outer minor radius > (default)

  • p9 - reference volume (optional)

Image:

 Z
 |
 |
 |
 |            - ^ -
 |          /   | minor radius
 |-----------------------> major radius, R
 |          \      /
 |           - - -
 |

 Y
 ^                      -
 |                 -
 |            -    \
 |       -  \       \
 |  theta   |       |
ZX-----------------------> major radius, X
 |
 |
 |
is3D = True
THERMAL_EXPANSION_DIMS = {}
pDefs = <armi.reactor.parameters.parameterDefinitions.ParameterDefinitionCollection object>
getComponentArea(refVolume=None, refArea=None, refHeight=None, cold=False)[source]

Computes the volume averaged area of the torus component.

Parameters
  • float (RefArea -) – This is the volume to use when normalizing area

  • float – This is the area to use when normalizing area

  • floats (RefHeight -) – This is the height to use to estimate volume if a reference volume is not given

Notes

Since area fractions are being used as a proxy for volume fractions, this method returns the reference area normalized to the volume ratio of the torus within reference volume

getComponentVolume()[source]

Computes the volume of the torus in cm^3.

Notes

The exact solution is the solution to integrating the volume:

dV ~ (dr)*((R+cos(Ph)*r)*dTh)*(r*dPh)

Solution from WolframAlpha:

integrate (m*(R + cos(phi)*r)*r) dr dphi dtheta, theta=t1…t2, r=r1…r2, phi=p1…p2

DIMENSION_NAMES = ('inner_minor_radius', 'outer_minor_radius', 'major_radius', 'mult', 'inner_theta', 'outer_theta', 'inner_phi', 'outer_phi', 'height', 'reference_volume', 'inner_radius', 'outer_radius')
INIT_SIGNATURE = ('name', 'material', 'Tinput', 'Thot', 'inner_minor_radius', 'outer_minor_radius', 'major_radius', 'mult', 'inner_theta', 'outer_theta', 'inner_phi', 'outer_phi', 'height', 'reference_volume', 'inner_radius', 'outer_radius', 'isotopics', 'mergeWith', 'components')
paramCollectionType

alias of armi.reactor.parameters.parameterCollections.TorusParameterCollection

class armi.reactor.components.volumetricShapes.RadialSegment(name, material, Tinput, Thot, inner_radius=None, outer_radius=None, height=None, mult=None, inner_theta=0, outer_theta=6.283185307179586, isotopics=None, mergeWith=None, components=None)[source]

Bases: armi.reactor.components.component.ShapedComponent

is3D = True
THERMAL_EXPANSION_DIMS = {}
pDefs = <armi.reactor.parameters.parameterDefinitions.ParameterDefinitionCollection object>
getComponentArea(refVolume=None, refHeight=None, cold=False)[source]
getComponentVolume()[source]
getBoundingCircleOuterDiameter(Tc=None, cold=False)[source]
DIMENSION_NAMES = ('inner_radius', 'outer_radius', 'height', 'mult', 'inner_theta', 'outer_theta')
INIT_SIGNATURE = ('name', 'material', 'Tinput', 'Thot', 'inner_radius', 'outer_radius', 'height', 'mult', 'inner_theta', 'outer_theta', 'isotopics', 'mergeWith', 'components')
paramCollectionType

alias of armi.reactor.parameters.parameterCollections.RadialSegmentParameterCollection

class armi.reactor.components.volumetricShapes.DifferentialRadialSegment(name, material, Tinput, Thot, inner_radius=None, radius_differential=None, inner_axial=None, height=None, inner_theta=0, azimuthal_differential=6.283185307179586, mult=1, isotopics=None, mergeWith=None, components=None)[source]

Bases: armi.reactor.components.volumetricShapes.RadialSegment

This component class represents a volume element with thicknesses in the azimuthal, radial and axial directions. Furthermore it has dependent dimensions: (outer theta, outer radius, outer axial) that can be updated depending on the ‘differential’ in the corresponding directions.

This component class is super useful for defining ThRZ reactors and perturbing its dimensions using the optimization modules

See also

geometry, armi.physics.optimize.OptimizationInterface.modifyCase, ThRZActiveHeight, ThRZActiveRadius, mesh, armi.reactor.reactors.Reactor.importGeom

is3D = True
THERMAL_EXPANSION_DIMS = {}
updateDims(key='', val=None)[source]

Update the dimensions of differential radial segment component.

Notes

Can be used to update any dimension on the component, but outer_radius, outer_axial, and outer_theta are always updated.

getComponentArea(refVolume=None, refHeight=None, cold=False)[source]
getComponentVolume()[source]
DIMENSION_NAMES = ('inner_radius', 'radius_differential', 'inner_axial', 'height', 'inner_theta', 'azimuthal_differential', 'mult')
INIT_SIGNATURE = ('name', 'material', 'Tinput', 'Thot', 'inner_radius', 'radius_differential', 'inner_axial', 'height', 'inner_theta', 'azimuthal_differential', 'mult', 'isotopics', 'mergeWith', 'components')
paramCollectionType

alias of armi.reactor.parameters.parameterCollections.RadialSegmentParameterCollection