Theory and numerical conventions¶
This page is the implementation-level mathematical reference for Morana’s steady-state, multigroup neutron-diffusion solver. It defines the equations, discretization, boundary reductions, linear and eigenvalue iteration, normalizations, and residuals used by the finite-volume implementation. The cited sources provide the broader reactor-diffusion background; the modeling and solver workflow provides the input and API context. The verification guide records the evidence for these equations and their implementation.
Scope and sources¶
The classical diffusion, multigroup, partial-current, and criticality background follows Bell and Glasstone (1970, Chs. 2–4, especially §§2.5d, 3.1e, and 4.3–4.4). The control-volume terminology and conservative two-point flux construction follow Eymard, Gallouët, and Herbin (2000, §§1, 9.1, and 11.1). Citations identify the background result being used. Array ordering, geometric packing, the affine boundary convention, the zero-diffusion limit, convergence measures, and physical normalization are Morana-specific choices defined on this page. The boundary guide defines face selection and supported condition inputs; result layouts and callable behavior are defined in the modeling and solver workflow.
Governing equation and units¶
The implemented finite-volume reference solver uses diffusion on a regular hex-z mesh. With no fission production and either no scattering or unit-multiplicity self-scattering, its one-group fixed-source equation reduces to
The finite-volume unknown is a cell-average scalar flux, and the matrix
equation is volume-integrated. Length is expressed in cm and time in seconds:
macroscopic cross sections are in \(\mathrm{cm}^{-1}\), diffusion coefficients
in cm, scalar flux in \(\mathrm{n\,cm^{-2}\,s^{-1}}\), and volumetric sources in
\(\mathrm{n\,cm^{-3}\,s^{-1}}\). When supplied, kappa_sigma_f is a
recoverable-energy production cross section in \(\mathrm{eV\,cm^{-1}}\).
Morana converts its energy factor using the exact SI relation
\(1\ \mathrm{eV}=1.602176634\times10^{-19}\ \mathrm{J}\) before comparing it
with a power-normalization target in W. Energy groups are ordered fast to
thermal but have no stored energy bounds; temperature is not an input to the
solver.
Imported diffusion coefficients¶
Morana normally receives each group diffusion coefficient \(D_g\) directly.
The OpenMC MGXS adapter instead requires the caller to select
one of two conversions from a supported runtime-library record. The "total"
convention uses the runtime field exactly as stored:
The OpenMC
XSdata.set_total_mgxs(...) API
accepts either TotalXS or TransportXS for the same XSdata total cross
section, which the runtime format exports as total without recording which
one supplied it. Thus this conversion is uncorrected when
\(\Sigma_{\mathrm{stored}}\) is a total cross section and already transport
corrected when it is a transport cross section. Morana cannot infer or retain
that provenance.
The "p1-outscatter" convention requires
\(\Sigma_{\mathrm{stored}}=\Sigma_t\) from an uncorrected TotalXS. It uses the
ordinary-event P1 scattering matrix in Morana’s incoming-to-outgoing
orientation:
The sum fixes the incident group \(g\) and ranges over outgoing groups \(h\). This
is the group-discrete form of the outscatter approximation in
Ványi et al. (2021), §2.1, not the in-scatter correction
used by OpenMC TransportXS and
Boyd et al. (2019), Eqs. 10–11.
Scattering multiplicity does not enter this correction. Applying it to a
stored TransportXS would double-correct the cross section and is invalid;
Morana cannot detect that provenance error from the runtime file. The importer
rejects a nonfinite or nonpositive required stored or derived cross section but
does not substitute another convention. OpenMC’s
XSdata reference
defines the source fields and array shapes.
Multigroup formulation¶
The implemented solver supports any positive number of energy groups across a variable-height axial stack.
Ordering and assembly¶
Public group-indexed data are ordered fast to thermal. Layered source and result
arrays are group-major with shape (G, N), while material transfer matrices
use (g_from, g_to). Global finite-volume operators use node-major,
group-fastest packing, I(n, g) = nG + g, where \(n\) is a packed active-node
index.
Scattering, fission, and operator split¶
Primitive P0 scattering data use sigma_s[g_from, g_to]: the first index is
the group in which an event occurs and the second is its destination group.
The scattering-neutron multiplicity matrix \(M\) has the same orientation. When
every event emits one neutron, every entry of \(M\) equals one.
Scattering multiplicity represents neutron-producing scattering reactions,
such as \((n,xn)\) reactions. In the multigroup convention used here, each entry
is the scattering-neutron production rate divided by the corresponding
ordinary scattering-event rate (Boyd et al., 2019, §III.D).
For one material and cell, let \(S\) be the ordinary scattering-event matrix and
\(M\) the scattering-neutron multiplicity matrix. Their elementwise product
\(T=M\odot S\) is the scattering-neutron transfer matrix. Morana then defines
the signed scattering-coupling matrix \(C\) by
Classical multigroup diffusion distinguishes ordinary scattering-event removal from intergroup scattering source (Bell and Glasstone, 1970, §4.3). Morana extends that scattering treatment with signed scattering-neutron coupling to represent non-unit scattering multiplicity (Boyd et al., 2019, §III.D).
The diagonal correction subtracts the ordinary self-scattering event, so unit-multiplicity self-scattering has no net effect. Thus \(C_{g,h}\) is the signed scattering-neutron coupling from incident group \(g\) to outgoing group \(h\): off-diagonal entries are neutron emission, whereas a diagonal entry is the neutron gain or loss relative to conventional self-scattering. The \(T\) and \(C\) construction, its same-group diagonal correction, and the assembled-loss acceptance condition are Morana-specific conventions. Conventional removal remains based on ordinary event loss, not neutron emission multiplicity:
With this incoming-to-outgoing storage, scattering coupling into group \(g\) is \(\sum_h C_{h,g}\phi_h\). Let \(H\) be the volume-integrated matrix containing conventional removal, radial and axial diffusion, and boundary loss. Let \(\mathcal{C}\) be the volume-integrated, cell-local assembly of \(C\). The public loss matrix is
Thus the event-oriented input entry sigma_s[g_from, g_to] contributes to
the assembled operator row for g_to and column for g_from; equivalently,
the energy-space scattering production operator uses the transpose of the
input indexing.
Its diagonal includes the volume-integrated \(-C_{g,g}\) contribution, so same-group multiplication is explicit. Unit multiplicity gives a zero coupling diagonal and recovers the ordinary-scattering operator. A steady solve requires every assembled loss diagonal to remain positive after this term and all leakage contributions are included. Consequently, nonnegative scattering multiplicities are valid input data, but loss assembly rejects a configuration whose same-group scattering multiplication makes an assembled diagonal nonpositive. Such an operator lies outside Morana’s accepted steady-solve domain.
For a one-group material, there is no intergroup scattering, but that does not make arbitrary self-scattering disappear. The formulas reduce to
Self-scattering therefore cancels only when its multiplicity is one (or its cross section is zero). A non-unit same-group multiplicity remains a signed neutron gain or loss in the assembled equation.
Morana represents local fission neutron production with the nonnegative,
event-oriented fission-transfer matrix \(T^{\mathrm{f}}\). Its entry
\(T^{\mathrm{f}}_{g_{\mathrm{from}},g_{\mathrm{to}},n}\) is the production
cross section from incident group \(g_{\mathrm{from}}\) to emitted group
\(g_{\mathrm{to}}\) at node \(n\). This is the extracted form of
fission_transfer[g_from, g_to]; its first index selects the fissioning
incident group and its second selects the emitted group.
Group-to-group fission-production matrices retain both incident and emitted energy-group dependence (Boyd et al., 2019, §III.G). The incident-group fission-production cross section is the transfer row sum,
The volume-integrated fission-emission matrix is
Each node contributes one such \(G\times G\) block. Its rows select the group receiving fission emission and its columns select the group producing it. The separable representation is the special case
where the normalized outgoing spectrum \(\chi\) is independent of the incident group. It gives an outer-product local block. General transfer data need not be separable and do not contain an independent \(\chi\).
The groupwise fission source functionals used throughout this page are
Because \(p_{g,n}\) is the transfer row sum,
Fixed-source and eigenvalue systems¶
Let \(\mathbf b_Q\) denote the volume-integrated independent volumetric source and let \(\mathbf b_\partial\) denote all additive boundary contributions from prescribed face flux or incident partial current. Define the complete fixed-source right-hand side once as
The canonical fixed-source problem is then
Criticality uses the same assembled loss matrix but no independent source, giving the standard multigroup diffusion \(k\)-eigenvalue problem (Bell and Glasstone, 1970, §4.4):
Finite-volume discretization¶
The cell-centered finite-volume scheme assembles every energy group over the complete axial material stack into one coupled sparse system. The following sections define the entries of \(H\), \(\mathbf b_Q\), and \(\mathbf b_\partial\) and apply the scattering-coupling and fission-emission operators \(\mathcal{C}\) and \(F\) to the cell balances.
A geometric active cell is \(c=(m,k)\), where \(m\) is its full-lattice
planar_id and \(k\) is its axial_index. The same \(m\) denotes the same planar
position in every layer, whereas active_id is slice-local and can differ
between layers. The packed-node index \(n(c)\) appears only in assembled vectors
and matrices.
Let the cell have volume \(V_c\), group-\(g\) cell-average flux \(\phi_{g,c}\), diffusion coefficient \(D_{g,c}\), derived removal cross section \(\Sigma_{r,g,c}\), and volumetric source \(Q_{g,c}\). Integrating the fixed-source group equation over \(c\) gives the local conservative balance that defines the finite-volume method (Eymard, Gallouët, and Herbin, 2000, §1, Example 1.2, Eq. 1.8):
\(J_{\mathrm{out},g,c,f}\) is positive when group-\(g\) neutrons leave cell \(c\) through face \(f\). The scattering sum is the net scattering contribution into group \(g\): it includes transfers from every other group and any same-group neutron gain or loss. It uses the local \(C_{h,g,c}\) data assembled into \(\mathcal{C}\). With unit multiplicity, \(C_{g,g,c}=0\) and \(C_{h,g,c}=\Sigma_{s0,h\to g,c}\) for \(h\ne g\), recovering the usual off-diagonal ordinary-scattering source. The fission sum is the emission into group \(g\) from every incident group; it uses the local \(T^{\mathrm{f}}_{h,g,c}\) data assembled into \(F\). For the criticality equation, \(Q_{g,c}=0\) and the fission term is divided by \(k_{\mathrm{eff}}\).
For a layer of height \(h_k\) and regular flat-to-flat hex pitch \(p\), let \(A_{\mathrm{hex}}\) be the planar hex area. The cell and face measures are
An internal face joins two active cells and contributes a conservative two-cell coupling. An exposed face has no active neighbor; it contributes a one-cell boundary term after its condition has been resolved. The internal radial and axial couplings are derived first, followed by the common exposed-face boundary treatment. This is a cell-centered two-point flux approximation on an orthogonal mesh. The face conductance is obtained by adding the two center-to-face diffusion resistances (Eymard, Gallouët, and Herbin, 2000, §9.1, Eq. 9.6, and §11.1, Eq. 11.4).
Radial internal faces¶
For each group, consider a radial internal face \(f\) shared by cells \(c=(m,k)\) and \(c'=(m',k)\). Its area is \(A_f=A_{r,k}\), and the material interface is halfway between their centers. Assuming a constant current through the two half-cell segments, their diffusion resistances add:
The outward current integrated over the face is therefore
Thus \(D_{g,f}\) is the harmonic mean of the two group-specific cell diffusion coefficients. This choice preserves current continuity at a discontinuous material interface and gives the same conductance in both directions. If either cell has \(D=0\), Morana defines the harmonic mean and face conductance as zero.
Axial internal faces¶
For an axial internal face \(f\), let \(c_-=(m,k)\) be the lower cell and \(c_+=(m,k+1)\) the upper cell. The face area is \(A_f=A_{\mathrm{hex}}\). The material interface need not be midway between the centers because the layer heights can differ. The two half-cell resistances and resulting conductance are, independently for each group,
For the two rows associated with any internal face, let \(\mathcal{G}\) denote the applicable radial or axial conductance. Its contribution to \(H\) is
It is symmetric, has zero row sum, and transfers neutrons between cells without creating or destroying them. As for radial interfaces, either adjacent cell having \(D=0\) makes the axial conductance zero.
Diffusion/removal matrix and assembled loss matrix¶
Let \(\mathcal{N}(c)\) be the active neighbors of cell \(c\), and let \(\mathcal{B}(c)\) be its exposed faces. Let \(\mathcal{G}_{g,c,c'}\) denote the applicable radial or axial internal-face conductance and \(\mathcal{G}_{g,c,f}\) the group-\(g\) boundary conductance derived in the next section. The assembled row of \(H\) is
The assembled loss matrix returned by the public assembly helper is \(A=H-\mathcal{C}^T\). The local contribution of \(-\mathcal{C}^T\) at every group pair is \(-C_{h,g,c}V_c\) in row \((n(c),g)\) and column \((n(c),h)\), including \(h=g\). In the canonical right-hand side defined above, the row entries are
where \(b_{\partial,g,c,f}\) is the additive contribution from one exposed face. It is zero for homogeneous conditions, \(\mathcal{G}_{g,c,f}\phi_{b,g,f}\) for prescribed Dirichlet flux, and the affine incoming-current term derived in the next section for a boundary with imposed incidence.
Conventional removal contributes \(\Sigma_{r,g,c}V_c\) to each same-group diagonal before scattering coupling is subtracted; the fission-emission matrix supplies the remaining within-cell coupling. Each internal face contributes one symmetric two-cell block for each group, while each exposed face contributes only to its owning group row. This is a volume-integrated operator: matrix entries have units \(\mathrm{cm}^2\), flux has units \(\mathrm{n\,cm^{-2}\,s^{-1}}\), and both sides of the equation have units \(\mathrm{n\,s^{-1}}\).
Exposed boundary conditions¶
An exposed face has no active neighboring cell. It can be a lateral exterior
face, a physical bottom or top face, or a face bordering a
to_excluded material-mesh region. Let \(c=(m,k)\) be the owning geometric
cell and \(f\) one of its exposed faces. The group-\(g\) physical face flux is
\(\phi_{b,g,f}\), and \(D_{g,c}\) is the adjacent cell coefficient. A radial
exposed face has \(A_f=A_{r,k}\) and \(d_{c,f}=p/2\); an axial exposed face has
\(A_f=A_{\mathrm{hex}}\) and \(d_{c,f}=h_k/2\).
Linear variation between the cell center and face gives
Each remaining boundary derivation applies independently to one fixed group and one exposed pair \((c,f)\). To keep the scalar formulas readable, the fixed group index is suppressed below: \(\phi_c\) denotes \(\phi_{g,c}\) and \(D_c\) denotes \(D_{g,c}\). The local face subscripts are also suppressed on face values and distances, so \(\phi_b\) denotes \(\phi_{b,g,f}\) and \(d\) denotes \(d_{c,f}\); a conductance written \(\mathcal{G}_{cf}\) denotes \(\mathcal{G}_{g,c,f}\).
Robin and partial-current-return coefficients are scalar and apply independently to every group; prescribed flux and current spectra are group-resolved. Group-coupled boundary-response matrices are outside this model.
Bell and Glasstone (1970, §§2.5d and 3.1e) provide the physical diffusion basis for the reflective and Marshak-vacuum conditions below. Morana adopts the outward-current sign convention used on this page and derives each condition’s one-cell finite-volume contribution. The Dirichlet, generalized Robin, and partial-current-return forms below are Morana parameterizations built from standard boundary concepts.
Each exposed face must have a boundary condition. Internal active-to-active faces instead use the two-cell diffusion coupling derived above. A single finite-height layer reduces to a two-dimensional diffusion model only when zero axial current is imposed on its bottom and top faces.
Boundary-region selection is defined in boundary conditions and face selection. This section concerns the face equations after selection and covers their finite-volume reduction.
The reductions derived below can be summarized as follows. Each \(\mathcal{G}_{cf}\) contributes to the owning diagonal of \(H\), and each \(b_{\partial,cf}\) contributes to the boundary right-hand side.
| Boundary condition | Face relation | \(\mathcal{G}_{cf}\) | \(b_{\partial,cf}\) |
|---|---|---|---|
| Reflective | \(J_{\mathrm{out}}=0\) | \(0\) | \(0\) |
| Dirichlet | \(\phi_b\) prescribed | \(D_cA_f/d\) | \(\mathcal{G}_{cf}\phi_b\) |
| Marshak vacuum | \(J_{\mathrm{out}}=\phi_b/2\) | \(D_cA_f/(d+2D_c)\) | \(0\) |
| Affine Robin | \(J_{\mathrm{out}}=\alpha\phi_b-s\) | \(\alpha D_cA_f/(D_c+\alpha d)\) | \(sD_cA_f/(D_c+\alpha d)\) |
Reflective¶
A reflective face imposes zero normal current:
Therefore \(\mathcal{G}_{cf}=0\); the face contributes nothing to either the matrix or right-hand side.
Dirichlet¶
A Dirichlet face prescribes the physical face flux \(\phi_b\). Substitution into the one-sided current approximation gives
Defining
the face adds \(+\mathcal{G}_{cf}\) to \(H_{cc}\) and \(+\mathcal{G}_{cf}\phi_b\) to \((b_\partial)_c\). A zero-Dirichlet condition therefore has no right-hand-side term and generally leaks more strongly than the vacuum approximation below. A nonzero value represents a prescribed physical face-flux field and is primarily useful for verification, truncated-domain calculations, and potential model coupling. This is a general prescribed-value boundary condition; its physical face-flux interpretation and finite-volume reduction are defined here for Morana.
Marshak vacuum¶
A transport vacuum means zero incoming angular flux. Diffusion theory cannot represent the angular condition directly, so it is approximated here by the Marshak condition described through diffusion-theory partial currents by Bell and Glasstone (1970, §§2.5d and 3.1e):
equivalently
Combining this condition with the center-to-face current approximation gives
The resulting face conductance is
It adds \(+\mathcal{G}_{cf}\) to \(H_{cc}\) and no right-hand-side term. The physical-face flux is nonzero; the diffusion solution extrapolates toward zero outside the physical domain.
Robin current and partial-current return¶
Morana parameterizes homogeneous current-to-flux boundary response with the Robin family
where the normal points outward from the modeled domain and \(\alpha\) is the dimensionless net-current-over-face-flux coefficient. This family includes the standard reflective and Marshak-vacuum limits; the allowed range and the conductance reduction below are Morana conventions. Combining this with the one-sided finite-volume current approximation gives
The integrated face conductance is therefore
This expression includes reflective boundaries at \(\alpha=0\), Marshak vacuum at \(\alpha=1/2\), and approaches zero-flux Dirichlet as \(\alpha\rightarrow\infty\). Values \(0\leq\alpha\leq1/2\) describe passive reflector-to-vacuum behavior. Larger nonnegative values are mathematical sinks and do not represent physical albedo.
For physical albedo, let \(\mu=\boldsymbol\Omega\mathbin{\cdot}\mathbf n\), where \(\mathbf n\) is the outward face normal, and choose the local \(x\) axis to point along \(\mathbf n\). The unnumbered P1 truncation of Eq. 2.57 displayed on p. 99 of Bell and Glasstone (1970, §2.5d) uses the scalar flux \(\phi_0\) and first angular moment \(\phi_1\). At the face, these are \(\phi_0=\phi_b\) and \(\phi_1=J_{\mathrm{out}}\), so in Morana’s notation it becomes
Define the nonnegative outgoing and incoming partial currents by the half-range angular integrals
Evaluating the azimuthal integral and the remaining integrals over \(0<\mu<1\) gives
Thus
Morana parameterizes scalar return using the ratio
Substituting this relation into the partial-current definitions gives the face flux and net outward current in terms of the outgoing partial current:
Eliminating \(j^+\) yields the homogeneous Robin form
Consequently,
Thus \(\beta=1\) gives perfect return and \(\alpha=0\), while \(\beta=0\) gives the Marshak-vacuum response and \(\alpha=1/2\). In Morana’s convention, \(\beta\) is the returned-to-outgoing partial-current ratio, whereas \(\alpha\) is the net-outward-current-to-face-flux ratio.
An independent nonnegative incident partial current can be included as
where \(q_{\mathrm{in}}\) is the surface-averaged incident partial current for the energy group under consideration.
The equivalent affine Robin form is
The relation between partial-current return and affine Robin parameters is shown in the figure below.

The upper panel shows how the passive partial-current return ratio \(\beta\) maps to the flux-dependent Robin response \(\alpha\). The lower panel shows the normalized imposed-current term for \(q_{\mathrm{in}}>0\); when \(q_{\mathrm{in}}=0\), \(s=0\) for every \(\beta\). The endpoint labels therefore distinguish the homogeneous Marshak-vacuum and reflective limits from their affine counterparts with an independent incident source. Zero-flux Dirichlet is the separate limit \(\alpha\rightarrow\infty\) and does not lie on the passive \(0\leq\beta\leq1\) curve.
Combining the affine Robin condition with the one-sided finite-volume approximation gives
In the finite-volume operator, the first term contributes the Robin conductance
to the matrix diagonal, and the incoming term contributes
to the boundary right-hand side. For \(\alpha=0\), Morana evaluates this as \(b_{\partial,cf}=sA_f\), including when \(D_c=0\): a perfectly returning boundary with an imposed incident current has a prescribed inward net current and no flux-dependent loss term.
For \(D_c=0\) and \(\alpha>0\), both the conductance and additive source are zero. Dirichlet conductance is also zero when \(D_c=0\). These are the implementation’s zero-diffusion conventions; the face-flux formulas that divide by \(D_c+\alpha d\) do not define a face flux when both \(D_c\) and \(\alpha\) vanish.
Setting \(\beta=0\) removes the returned-current component; allowing nonzero \(\beta\) combines returned outgoing current with the independent incident source through the same affine assembly path. The surface-averaged partial current \(q_{\mathrm{in}}\) has units \(\mathrm{n\,cm^{-2}\,s^{-1}}\).
Prescribed nonzero Dirichlet data remain a distinct face-flux condition.
Albedo convention
Morana’s \(\beta\) is a scalar P1 partial-current return ratio. It is not
generally equivalent to a quantity called albedo in a transport code.
For example, OpenMC’s
Surface.albedo
scales particle weight at reflective, periodic, or white surface
interactions, and OpenMC distinguishes specular reflective behavior from
diffuse white behavior in its
boundary-condition guide.
Interpreting that value as Morana’s \(\beta\) is an explicit diffusion
approximation and does not preserve the transport model’s angular
distinction. Any comparison or conversion must identify the albedo
convention being used.
Solver acceptance and balances¶
Norms¶
Morana uses two discrete \(L^2\) norms. For any packed node/group vector \(\mathbf x\),
The Euclidean norm \(\lVert\cdot\rVert_2\) measures algebraic equation defects in both solve modes. The volume-weighted norm \(\lVert\cdot\rVert_V\) compares successive physical flux shapes, weighting each cell by its volume.
Linear algebra execution¶
The fixed-source system uses \(B=A-F\) and right-hand side \(\mathbf b\). An ordinary criticality inner iteration uses \(B=A\) and right-hand side \(F\boldsymbol\phi^{(n)}\); a fixed-Wielandt iteration changes \(B\) as defined below. Morana offers either a sparse direct reference solve or restarted GMRES from the zero initial guess. Both policies solve the same algebraic problem with the same physical-flux acceptance criteria.
For GMRES with a preconditioner \(P\), the iterated system is the left-preconditioned form
NoPreconditioner sets \(P=I\). JacobiPreconditioner uses the finite,
nonzero diagonal of \(B\) as \(P\). IluPreconditioner uses a threshold
incomplete-LU factorization of \(B\) with the configured drop tolerance and
fill bound as \(P\). These choices change GMRES’s Krylov iteration, not the
system \(B\mathbf x=\mathbf b\) or the accepted physical flux. The GMRES and
preconditioner constructions are described by Barrett et al.
(1994).
Morana uses SciPy’s left-preconditioned GMRES implementation. It minimizes a preconditioned residual, whereas SciPy tests its own termination criterion against the original residual (SciPy GMRES documentation).
Morana independently applies its own symmetric true-relative-residual check to every direct or GMRES candidate,
When both actions are zero, Morana defines this residual as zero. The check uses the candidate after admissible negative roundoff has been set to zero. Thus a backend success status or a small preconditioned residual alone cannot accept a result. The modeling and solver workflow defines the per-solve setup and reuse lifetime for those numerical resources.
Balance terms¶
The reported net_scattering term combines signed scattering-neutron coupling
with the ordinary outscatter already included in removal. Its domain-total
value for group \(g\) is
The first line is reported separately as scattering_coupling; the second is
the ordinary event-loss portion of removal. With unit multiplicity,
net_scattering cancels after summing over all groups, although its individual
group values need not vanish. With non-unit multiplicity, the domain-wide sum
retains the corresponding neutron gain or loss. The solve-mode sections below
combine this term with fission, source, absorption, and leakage diagnostics.
Fixed-source residual and balance¶
For a solution of the canonical fixed-source system, the symmetrically normalized Euclidean equation residual is
Using the source functionals defined above, a groupwise balance distinguishes production \(P_g(\boldsymbol\phi)\) by incident group from emission \(E_g(\boldsymbol\phi)\) into an outgoing group. Their sums agree, but their individual group values need not. At convergence, the fixed-source group balance is
For prescribed nonzero Dirichlet flux or incoming current,
\(\mathbf b_\partial\) supplies the explicit boundary_source term.
The reported leakage terms contain the flux-dependent conductance losses;
subtract boundary_source from their sum to obtain net outward leakage for
inhomogeneous boundaries. Internal-face currents cancel in the domain total.
Axial currents cancel
across active-to-active layer interfaces in that global balance; only exposed
axial-face loss remains. A layer-resolved balance retains the signed axial
contribution before this global contraction.
k-effective iteration and balance¶
The k-effective solve uses the canonical multiplication eigenproblem defined under Multigroup formulation. It has no independent volumetric or boundary source and requires a homogeneous condition on every exposed hex-z face, positive fission production, and a nonsingular assembled loss matrix \(A\). Morana’s three-part convergence criterion, iterate admissibility checks, and final physical normalization are defined below.
The ordinary iteration is the classical power method applied to the implicit operator \(A^{-1}F\) (Gu, 2000). Starting from an all-positive node-major shape normalized to \(P(\boldsymbol{\phi}^{(0)})=1\), the ordinary policy is
Fixed Wielandt shift¶
The convergence of ordinary power iteration is controlled by its modal separation: a subdominant mode near the dominant mode makes its source shape change slowly. A Wielandt shift modifies the inner operator while preserving the physical eigenproblem. For reactor-physics background, including the dominance-ratio motivation and the tradeoff between acceleration and the conditioning of a shifted system, see the open MPACT theory manual (Larsen et al., 2019). The equations below define Morana’s parameterization and normalization convention.
Morana uses one fixed, nonnegative inverse-multiplication-factor shift \(\sigma\). With the same production-normalized previous shape, it solves
then recovers the physical multiplication factor and normalizes the next shape as
To see the useful shift range, write the generalized eigenvalues as \(A\boldsymbol\phi_i=\mu_iF\boldsymbol\phi_i\), where the physical fundamental mode has the smallest positive inverse multiplication factor \(\mu_1=1/k_{\mathrm{eff}}\). The iteration operator \((A-\sigma F)^{-1}F\) has eigenvalues \(1/(\mu_i-\sigma)\) for these modes. For a real positive spectrum ordered \(\mu_1<\mu_2\leq\cdots\), \(0\leq\sigma<\mu_1\) keeps the fundamental transformed eigenvalue positive and dominant. Moving \(\sigma\) toward \(\mu_1\) improves its separation from the other modes and accelerates the outer iteration. At the limit the shifted operator is singular. A shift above it can lose inverse positivity and produce nonphysical negative flux, while a shift too close below it makes the inner linear system poorly conditioned.
Setting \(\sigma=0\) recovers the ordinary iteration above.
WielandtShiftSettings holds one constant shift for the entire solve. A usable
value normally comes from a reference calculation and must leave the shifted
operator solvable and the recovered inverse multiplication factor positive;
an unusable value raises an error. The inner linear residual is evaluated for
the selected ordinary or shifted system, while the outer residual always
evaluates the original, unshifted eigenvalue equation. Criticality convergence
therefore depends on the outer criteria as well as the shifted linear solves.
Every inner-solve candidate must be finite and numerically nonnegative. Negative components within the roundoff tolerance are cleaned to zero; a significantly negative component, nonpositive production, failed inner solve, or nonfinite iterate rejects the solve. Zero components are valid, and a reducible system need not have a unique dominant shape.
Convergence requires all three measures:
where the common volume-weighted norm \(\lVert\cdot\rVert_V\) compares flux shape. The symmetric Euclidean equation residual is
Only after convergence is the unit-production shape scaled to the requested
physical normalization. FissionSourceNormalization specifies a fission
source rate in \(\mathrm{n\,s^{-1}}\), so the scaled flux satisfies
\(\sum_g P_g(\boldsymbol\phi)=\mathrm{fission\ source\ rate}\). For
PowerNormalization, each fissionable material provides a groupwise
recoverable-energy production cross section
\(\kappa\Sigma_{f,g}\) in \(\mathrm{eV\,cm^{-1}}\). After conversion to joules,
the final scale satisfies
Morana verifies this requirement for every active fissionable material before assembling the finite-volume criticality operators; it never forms a partial power response from only the materials that supplied energy data.
Power normalization uses this input directly because neutron-production data alone do not determine the recoverable energy released per fission. The destination-group eigenvalue source is \(K_g(\boldsymbol\phi,k_{\mathrm{eff}})\) as defined above.
The groupwise criticality balance distinguishes incident-group fission production \(P_g(\boldsymbol\phi)\) from outgoing-group eigenvalue source \(K_g(\boldsymbol\phi,k_{\mathrm{eff}})\). With absorption, radial and axial leakage, and signed scattering-neutron coupling, the group equation closes as
With unit scattering multiplicity, summing this equation over groups cancels
net_scattering. With non-unit multiplicity, that term instead retains the
associated neutron gain or loss. The remaining source and loss terms have
units \(\mathrm{n\,s^{-1}}\).
References¶
Barrett et al. (1994). R. Barrett, M. Berry, T. F. Chan, J. Demmel, J. Donato, J. Dongarra, V. Eijkhout, R. Pozo, C. Romine, and H. van der Vorst, Templates for the Solution of Linear Systems: Building Blocks for Iterative Methods, 2nd edition, SIAM, 1994. Open online sections: 2.3.4, “Generalized Minimal Residual (GMRES)”; 3.1.2, “Left and right preconditioning”; 3.2, “Jacobi Preconditioning”; and 3.4, “Incomplete Factorization Preconditioners”.
Bell and Glasstone (1970). G. I. Bell and S. Glasstone, Nuclear Reactor Theory, TID-25606, U.S. Atomic Energy Commission, 1970. OSTI bibliographic record and open full text.
Boyd et al. (2019). W. Boyd, A. Nelson, P. K. Romano, S. Shaner, B. Forget, and K. Smith, “Multigroup Cross-Section Generation with the OpenMC Monte Carlo Particle Transport Code,” Nuclear Technology, 205(7), 928–944, 2019, DOI 10.1080/00295450.2019.1571828. Open full text.
Eymard, Gallouët, and Herbin (2000). R. Eymard, T. Gallouët, and R. Herbin, “Finite Volume Methods,” in Handbook of Numerical Analysis, volume 7, pp. 713–1020, 2000, DOI 10.1016/S1570-8659(00)07005-8. Open author manuscript and HAL record.
Gu (2000). M. Gu, “Power Method” (Section 4.3.1), in Z. Bai, J. Demmel, J. Dongarra, A. Ruhe, and H. van der Vorst, editors, Templates for the Solution of Algebraic Eigenvalue Problems: A Practical Guide, SIAM, Philadelphia, 2000. Open online section.
Larsen et al. (2019). E. W. Larsen, B. S. Collins, B. A. Kochunas, and S. R. Stimpson, editors, MPACT Theory Manual, version 4.1, CASL-U-2019-1874-001, Consortium for Advanced Simulation of LWRs, 2019. Open full text, Section 7.7 “CMFD Eigenvalue Solvers”.
Ványi et al. (2021). A. S. Ványi, M. Hursin, and S. Czifrus, “Investigation of Recently Introduced Diffusion Coefficient Generation Methods,” in Proceedings of the 30th International Conference Nuclear Energy for New Europe, Bled, Slovenia, September 6–9, 2021, paper 311. Open full text.