<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article article-type="research-article" dtd-version="2.3" xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Energy Res.</journal-id>
<journal-title>Frontiers in Energy Research</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Energy Res.</abbrev-journal-title>
<issn pub-type="epub">2296-598X</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">1101050</article-id>
<article-id pub-id-type="doi">10.3389/fenrg.2022.1101050</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Energy Research</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Parallel Jacobian-free Newton Krylov discrete ordinates method for pin-by-pin neutron transport models</article-title>
<alt-title alt-title-type="left-running-head">Zhang and Zhou</alt-title>
<alt-title alt-title-type="right-running-head">
<ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3389/fenrg.2022.1101050">10.3389/fenrg.2022.1101050</ext-link>
</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname>Zhang</surname>
<given-names>Yangyi</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/2102843/overview"/>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Zhou</surname>
<given-names>Xiafeng</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
<uri xlink:href="https://loop.frontiersin.org/people/1220146/overview"/>
</contrib>
</contrib-group>
<aff id="aff1">
<sup>1</sup>
<institution>Department of Nuclear Engineering and Technology</institution>, <institution>School of Energy and Power Engineering</institution>, <institution>Huazhong University of Science and Technology</institution>, <addr-line>Wuhan</addr-line>, <country>China</country>
</aff>
<aff id="aff2">
<sup>2</sup>
<institution>Institute of Interdisciplinary Research for Mathematics and Applied Science</institution>, <institution>Huazhong University of Science and Technology</institution>, <addr-line>Wuhan</addr-line>, <country>China</country>
</aff>
<author-notes>
<fn fn-type="edited-by">
<p>
<bold>Edited by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1574231/overview">Jingang Liang</ext-link>, Tsinghua University, China</p>
</fn>
<fn fn-type="edited-by">
<p>
<bold>Reviewed by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1839666/overview">Jingyu Zhang</ext-link>, North China Electric Power University, China</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1782329/overview">Yinan Cai</ext-link>, Massachusetts Institute of Technology, United States</p>
</fn>
<corresp id="c001">&#x2a;Correspondence: Xiafeng Zhou, <email>zhouxiafeng@hust.edu.cn</email>
</corresp>
<fn fn-type="other">
<p>This article was submitted to Nuclear Energy, a section of the journal Frontiers in Energy Research</p>
</fn>
</author-notes>
<pub-date pub-type="epub">
<day>18</day>
<month>01</month>
<year>2023</year>
</pub-date>
<pub-date pub-type="collection">
<year>2022</year>
</pub-date>
<volume>10</volume>
<elocation-id>1101050</elocation-id>
<history>
<date date-type="received">
<day>17</day>
<month>11</month>
<year>2022</year>
</date>
<date date-type="accepted">
<day>30</day>
<month>11</month>
<year>2022</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2023 Zhang and Zhou.</copyright-statement>
<copyright-year>2023</copyright-year>
<copyright-holder>Zhang and Zhou</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/">
<p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p>
</license>
</permissions>
<abstract>
<p>A parallel Jacobian-Free Newton Krylov discrete ordinates method (comePSn_JFNK) is proposed to solve the multi-dimensional multi-group pin-by-pin neutron transport models, which makes full use of the good efficiency and parallel performance of the JFNK framework and the high accuracy of the Sn method for the large-scale models. In this paper, the k-eigenvalue and the scalar fluxes (rather than the angular fluxes) are chosen as the global solution variables of the parallel JFNK method, and the corresponding residual functions are evaluated by the Koch&#x2013;Baker&#x2013;Alcouffe (KBA) algorithm with the spatial domain decomposition in the parallel Sn framework. Unlike the original Sn iterative strategy, only a &#x201c;flattened&#x201d; power iterative process which includes a single outer iteration without nested inner iterations is required for the JFNK strategy. Finally, the comePSn_JFNK code is developed in C&#x2b;&#x2b; language and, the numerical solutions of the 2-D/3-D KAIST-3A benchmark problems and the 2-D/3-D full-core MOX/UOX pin-by-pin models with different control rod distribution show that comePSn_JFNK method can obtain significant efficiency advantage compared with the original power iteration method (comePSn) for the parallel simulation of the large-scale complicated pin-by-pin models.</p>
</abstract>
<kwd-group>
<kwd>parallel Jacobian-free Newton-Krylov method</kwd>
<kwd>parallel discrete ordinates method</kwd>
<kwd>pin-by-pin neutron transport model</kwd>
<kwd>three-dimensional multi-group k-eigenvalue problem</kwd>
<kwd>acceleration algorithm</kwd>
</kwd-group>
<contract-num rid="cn001">12005073</contract-num>
<contract-num rid="cn002">2018YFE0180900 2020YFB1901600</contract-num>
<contract-sponsor id="cn001">National Natural Science Foundation of China<named-content content-type="fundref-id">10.13039/501100001809</named-content>
</contract-sponsor>
<contract-sponsor id="cn002">National Key Research and Development Program of China<named-content content-type="fundref-id">10.13039/501100012166</named-content>
</contract-sponsor>
</article-meta>
</front>
<body>
<sec id="s1">
<title>1 Introduction</title>
<p>The efficient parallel algorithms and the acceleration methods of discrete ordinates methods (Sn) (<xref ref-type="bibr" rid="B5">Carlson, 1953</xref>) for multi-dimensional large-scale neutron transport models are research hotspots in the reactor simulation field. In the past few decades, many parallel Sn neutron transport codes are developed by using overloading spatial domain decomposition (<xref ref-type="bibr" rid="B2">Bailey and Falgout, 2009</xref>) or Koch&#x2013;Baker&#x2013;Alcouffe (KBA) algorithms (<xref ref-type="bibr" rid="B4">Baker and Koch, 1998</xref>), including DENOVO (<xref ref-type="bibr" rid="B10">Evans et al., 2010</xref>), PARTISN (<xref ref-type="bibr" rid="B1">Alcouffe et al., 2005</xref>), NECP-hydra (<xref ref-type="bibr" rid="B23">Xu et al., 2018</xref>), ARES (<xref ref-type="bibr" rid="B25">Zhang et al., 2017</xref>) and so on. To accelerate the calculation of the original Sn iterative strategies based on the power iteration methods (PI), a batch of numerical methods can be employed, such as Wielandt shifts methods, Chebyshev acceleration methods, coarse mesh finite difference methods, diffusion synthetic acceleration method. In this paper, the parallel Jacobian-free Newton-Krylov (JFNK) (<xref ref-type="bibr" rid="B15">Knoll and Keyes, 2004</xref>) methods are adopted.</p>
<p>The JFNK methods have good computational efficiency due to the fast and robust convergence, which are widely used to solve the atmospheric convection problem (<xref ref-type="bibr" rid="B14">Hossain and Alam, 2012</xref>), the sea ice simulation (<xref ref-type="bibr" rid="B24">Yaremchu and Panteleev, 2022</xref>), two-phase flow calculation (<xref ref-type="bibr" rid="B13">Hajizadeh et al., 2018</xref>), the neutron diffusion/transport models (<xref ref-type="bibr" rid="B12">Gill, 2009</xref>; <xref ref-type="bibr" rid="B16">Knoll et al., 2011</xref>), thermal hydraulics simulation (<xref ref-type="bibr" rid="B9">Esmaili et al., 2020</xref>) and multi-physics coupled problems (<xref ref-type="bibr" rid="B22">Walker et al., 2019</xref>). Meanwhile, some popular multi-physics coupled environments (or platforms), such as MOOSE (<xref ref-type="bibr" rid="B11">Gaston et al., 2009</xref>), LIME (<xref ref-type="bibr" rid="B18">Pawlowski et al., 2011</xref>) and VERA (<xref ref-type="bibr" rid="B21">Turner et al., 2016</xref>), employ the JFNK framework to solve the complicated reactor coupled systems. Recently, we have also developed an efficient JFNK framework based on coarse mesh finite difference and nodal expansion method in the COupling Multiphysics Environment (COME) to solve the steady/transient neutronics and neutronics-thermal hydraulic coupled problems (<xref ref-type="bibr" rid="B28">Zhou, 2022a</xref>; <xref ref-type="bibr" rid="B27">Zhou, 2022b</xref>; <xref ref-type="bibr" rid="B29">Zhou et al., 2022</xref>; <xref ref-type="bibr" rid="B26">Zhou, 2023</xref>). To take advantages of the good efficiency and parallel performance of the JFNK framework in COME, in this paper, the parallel JFNK method is combined with the parallel Sn method to solve the multi-dimensional large-scale neutron transport models.</p>
<p>Therefore, a parallel Jacobian-free Newton Krylov discrete ordinates method (comePSn_JFNK) is proposed to solve the multi-dimensional multi-group pin-by-pin neutron transport k-eigenvalue problems, which makes full use of the fast and robust convergence of the parallel JFNK framework and the high accuracy of the Sn method based on the KBA algorithm. The key to implement the JFNK framework into the Sn algorithm is to choose the k-eigenvalue and the scalar fluxes (rather than the angular fluxes) as the global solution variables for parallel JFNK, which are the minimal subset of the non-linear system. The corresponding residual functions are directly constructed from the neutron transport equations and evaluated based on the parallel Sn transport sweeping process by using a &#x201c;flattened&#x201d; power iterative process including a single outer iterative step without nested inner iterations.</p>
<p>This paper is organized as follows. The detailed theories of the comePSn_JFNK method are presented in <xref ref-type="sec" rid="s2">Section 2</xref>, including the parallel JFNK method, the parallel Sn method, the residual function evaluation and the solution strategies. In <xref ref-type="sec" rid="s3">Section 3</xref>, the numerical results for the 2-D/3-D full-core pin-by-pin models are analyzed to test the accuracy and efficiency of the comePSn_JFNK method. The conclusions are given in <xref ref-type="sec" rid="s4">Section 4</xref>.</p>
</sec>
<sec id="s2">
<title>2 Methodologies of the comePSn_JFNK method</title>
<sec id="s2-1">
<title>2.1 Parallel JFNK</title>
<p>JFNK method is one of the inexact Newton-Krylov methods, which are the combinations of Newton&#x2019;s methods for solving non-linear equations, Krylov subspace methods for solving the linear Newton correction equations, and &#x201c;Jacobian-free&#x201d; technology for approximately solving Jacobian-vector product (<xref ref-type="bibr" rid="B15">Knoll and Keyes, 2004</xref>). The non-linear equations can be generally written by <inline-formula id="inf1">
<mml:math id="m1">
<mml:mrow>
<mml:mi mathvariant="bold">F</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>. The Newton iteration step (where n is the index) is to solve the discrete equations as <disp-formula id="e1">
<mml:math id="m2">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold">J</mml:mi>
<mml:mi mathvariant="bold">a</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi>&#x3b4;</mml:mi>
<mml:msup>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">F</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>&#x3b4;</mml:mi>
<mml:msup>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(1)</label>
</disp-formula>where <inline-formula id="inf2">
<mml:math id="m3">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the vector of global solution variables, <inline-formula id="inf3">
<mml:math id="m4">
<mml:mrow>
<mml:mi mathvariant="bold">F</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> represents the non-linear discrete system, and <inline-formula id="inf4">
<mml:math id="m5">
<mml:mrow>
<mml:mi mathvariant="bold">J</mml:mi>
<mml:mi mathvariant="bold">a</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> represents the Jacobian matrix. For Krylov methods, the Jacobian matrix needs not to be formed explicitly because the product of Jacobian matrix and a vector (<inline-formula id="inf5">
<mml:math id="m6">
<mml:mrow>
<mml:mi mathvariant="bold">v</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>) rather than the Jacobian matrix is required. Using the first-order finite difference approximation, the Jacobian-vector product can be solved by<disp-formula id="e2">
<mml:math id="m7">
<mml:mrow>
<mml:mi mathvariant="bold">J</mml:mi>
<mml:mi mathvariant="bold">a</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">n</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold">v</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="bold">F</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>&#x3b5;</mml:mi>
<mml:mi mathvariant="bold">v</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">F</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mi>&#x3b5;</mml:mi>
</mml:mfrac>
</mml:mrow>
</mml:math>
<label>(2)</label>
</disp-formula>where <inline-formula id="inf6">
<mml:math id="m8">
<mml:mrow>
<mml:mi>&#x3b5;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is a perturbation parameter which can be specified by <inline-formula id="inf7">
<mml:math id="m9">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf8">
<mml:math id="m10">
<mml:mrow>
<mml:mi mathvariant="bold">v</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<p>For the parallel JFNK method, only the residual functions, the dot products and the norms of vectors are considered to be evaluated synchronously in multiple processors, which are easily developed in the parallel framework. In addition, residual functions are evaluated from the parallel Sn method based on KBA sweeping algorithm as shown in the following sections.</p>
</sec>
<sec id="s2-2">
<title>2.2 Evaluation of residual functions from parallel Sn</title>
<p>The multi-group neutron Boltzmann transport equations for the k-eigenvalue problem can be written as<disp-formula id="e3">
<mml:math id="m11">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi mathvariant="normal">&#x3a9;</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:msub>
<mml:mo>&#x2219;</mml:mo>
<mml:mo>&#x2207;</mml:mo>
<mml:msub>
<mml:mi>&#x3c8;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="italic">r</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>&#x3a3;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">t</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="italic">r</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msub>
<mml:mi>&#x3c8;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="italic">r</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:msub>
<mml:mi>&#x3a3;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">s</mml:mi>
<mml:mo>,</mml:mo>
<mml:msup>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
<mml:mo>&#x2192;</mml:mo>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="italic">r</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msub>
<mml:mi mathvariant="italic">&#x3d5;</mml:mi>
<mml:msup>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="italic">r</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c7;</mml:mi>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
<mml:mi mathvariant="italic">f</mml:mi>
<mml:mi mathvariant="italic">f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mi mathvariant="italic">G</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
<mml:msub>
<mml:mi>&#x3a3;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">f</mml:mi>
<mml:mo>,</mml:mo>
<mml:msup>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="italic">r</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msub>
<mml:mi mathvariant="italic">&#x3d5;</mml:mi>
<mml:msup>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="italic">r</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(3)</label>
</disp-formula>
<disp-formula id="e4">
<mml:math id="m12">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="italic">&#x3d5;</mml:mi>
<mml:mi mathvariant="italic">g</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="italic">r</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mi mathvariant="italic">N</mml:mi>
</mml:munderover>
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c9;</mml:mi>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi>&#x3c8;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">g</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="italic">r</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(4)</label>
</disp-formula>where <inline-formula id="inf9">
<mml:math id="m13">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c8;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="normal">g</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="italic">r</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> &#x3d; Angular neutron flux, <inline-formula id="inf10">
<mml:math id="m14">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="italic">&#x3d5;</mml:mi>
<mml:mi mathvariant="normal">g</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="italic">r</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> &#x3d; Scalar neutron flux, <inline-formula id="inf11">
<mml:math id="m15">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="normal">e</mml:mi>
<mml:mi mathvariant="normal">f</mml:mi>
<mml:mi mathvariant="normal">f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> &#x3d; Effective multiplication factor (k-eigenvalue), <inline-formula id="inf12">
<mml:math id="m16">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3a3;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="normal">t</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="normal">g</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> &#x3d; Macroscopic total cross section, <inline-formula id="inf13">
<mml:math id="m17">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3a3;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="normal">s</mml:mi>
<mml:mo>,</mml:mo>
<mml:msup>
<mml:mi mathvariant="normal">g</mml:mi>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
<mml:mo>&#x2192;</mml:mo>
<mml:mi mathvariant="normal">g</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> &#x3d; Macroscopic scattering cross section, <inline-formula id="inf14">
<mml:math id="m18">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c7;</mml:mi>
<mml:mi mathvariant="normal">g</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> &#x3d; Fission spectrum, <inline-formula id="inf15">
<mml:math id="m19">
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
<mml:msub>
<mml:mi>&#x3a3;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="normal">f</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="normal">g</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> &#x3d; Macroscopic production cross section, <inline-formula id="inf16">
<mml:math id="m20">
<mml:mrow>
<mml:mi mathvariant="normal">g</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> &#x3d; Energy group index and <inline-formula id="inf17">
<mml:math id="m21">
<mml:mrow>
<mml:mi mathvariant="normal">G</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> &#x3d; Total number of energy group, <inline-formula id="inf18">
<mml:math id="m22">
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> &#x3d; Discrete angle index and <inline-formula id="inf19">
<mml:math id="m23">
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> &#x3d; Total number of discrete angles, <inline-formula id="inf20">
<mml:math id="m24">
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="normal">r</mml:mi>
<mml:mo>&#x2192;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula> &#x3d; Spatial position vector and <inline-formula id="inf21">
<mml:math id="m25">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>&#x3a9;</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> &#x3d; Unit direction vector for discrete angle <inline-formula id="inf22">
<mml:math id="m26">
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf23">
<mml:math id="m27">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c9;</mml:mi>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> &#x3d; Quadrature weight for discrete angle <inline-formula id="inf24">
<mml:math id="m28">
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<p>Eq. <xref ref-type="disp-formula" rid="e3">3</xref> can be written in operator notation form as <disp-formula id="e5">
<mml:math id="m29">
<mml:mrow>
<mml:mi mathvariant="bold">L</mml:mi>
<mml:mi mathvariant="bold">&#x3c8;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold">M</mml:mi>
<mml:mi mathvariant="bold">S</mml:mi>
<mml:mi mathvariant="bold">&#x3d5;</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
<mml:mi mathvariant="italic">f</mml:mi>
<mml:mi mathvariant="italic">f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mi mathvariant="bold">M</mml:mi>
<mml:mi mathvariant="bold">&#x3c7;</mml:mi>
<mml:mi mathvariant="bold">f</mml:mi>
<mml:mi mathvariant="bold">&#x3d5;</mml:mi>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(5)</label>
</disp-formula>where <inline-formula id="inf25">
<mml:math id="m30">
<mml:mrow>
<mml:mi mathvariant="bold">&#x3c8;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf26">
<mml:math id="m31">
<mml:mrow>
<mml:mi mathvariant="bold">&#x3d5;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> are vectors which contain the angular fluxes and scalar fluxes, respectively. <inline-formula id="inf27">
<mml:math id="m32">
<mml:mrow>
<mml:mi mathvariant="bold">L</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> denotes the sum of the streaming operator and removal operator. <inline-formula id="inf28">
<mml:math id="m33">
<mml:mrow>
<mml:mi mathvariant="bold">M</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the scalar-to-discrete operator and <inline-formula id="inf29">
<mml:math id="m34">
<mml:mrow>
<mml:mi mathvariant="bold">D</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the discrete-to-scalar operator; in the case of isotropic scattering, <inline-formula id="inf30">
<mml:math id="m35">
<mml:mrow>
<mml:mi mathvariant="bold">D</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> represents the action which integrates the angular fluxes to the scalar fluxes as shown is Eq. <xref ref-type="disp-formula" rid="e4">4</xref>, i.e., <inline-formula id="inf31">
<mml:math id="m36">
<mml:mrow>
<mml:mi mathvariant="bold">&#x3d5;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold">D</mml:mi>
<mml:mi mathvariant="bold">&#x3c8;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. <inline-formula id="inf32">
<mml:math id="m37">
<mml:mrow>
<mml:mi mathvariant="bold">S</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the matrix of group-to-group scattering cross sections, <inline-formula id="inf33">
<mml:math id="m38">
<mml:mrow>
<mml:mi mathvariant="bold">f</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the matrix of production cross sections and <inline-formula id="inf34">
<mml:math id="m39">
<mml:mrow>
<mml:mi mathvariant="bold">&#x3c7;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the fission spectrum matrix. The parallel transport sweeping based on the KBA algorithm with the spatial domain decomposition (<xref ref-type="bibr" rid="B3">Baker, 2017</xref>) is employed to directly inverse <inline-formula id="inf35">
<mml:math id="m40">
<mml:mrow>
<mml:mi mathvariant="bold">L</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> into <inline-formula id="inf36">
<mml:math id="m41">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold">L</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>, which marches across the spatial domain cells in the direction of neutron travel.</p>
<p>Multiplied by <inline-formula id="inf37">
<mml:math id="m42">
<mml:mrow>
<mml:mi mathvariant="bold">D</mml:mi>
<mml:msup>
<mml:mi mathvariant="bold">L</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>, Eq. <xref ref-type="disp-formula" rid="e5">5</xref> becomes<disp-formula id="e6">
<mml:math id="m43">
<mml:mrow>
<mml:mi mathvariant="bold">&#x3d5;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold">D</mml:mi>
<mml:msup>
<mml:mi mathvariant="bold">L</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="bold">M</mml:mi>
<mml:mi mathvariant="bold">S</mml:mi>
<mml:mi mathvariant="normal">&#x3d5;</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
<mml:mi mathvariant="italic">f</mml:mi>
<mml:mi mathvariant="italic">f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mi mathvariant="bold">D</mml:mi>
<mml:msup>
<mml:mi mathvariant="bold">L</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="bold">M</mml:mi>
<mml:mi mathvariant="bold">&#x3c7;</mml:mi>
<mml:mi mathvariant="bold">f</mml:mi>
<mml:mi mathvariant="bold">&#x3d5;</mml:mi>
<mml:mo>&#x21d2;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">I</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">D</mml:mi>
<mml:msup>
<mml:mi mathvariant="bold">L</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="bold">M</mml:mi>
<mml:mi mathvariant="bold">S</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold">&#x3d5;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
<mml:mi mathvariant="italic">f</mml:mi>
<mml:mi mathvariant="italic">f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mi mathvariant="bold">D</mml:mi>
<mml:msup>
<mml:mi mathvariant="bold">L</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="bold">M</mml:mi>
<mml:mi mathvariant="bold">&#x3c7;</mml:mi>
<mml:mi mathvariant="bold">f</mml:mi>
<mml:mi mathvariant="bold">&#x3d5;</mml:mi>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(6)</label>
</disp-formula>
</p>
<p>It is an eigenvalue problem, whose solution is to get an eigenpair vector <inline-formula id="inf38">
<mml:math id="m44">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="normal">&#x3d5;</mml:mi>
<mml:mi mathvariant="normal">T</mml:mi>
</mml:msup>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="normal">e</mml:mi>
<mml:mi mathvariant="normal">f</mml:mi>
<mml:mi mathvariant="normal">f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="normal">T</mml:mi>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>. Traditionally, it can be solved by power iteration method (PI) which includes two-level nested iterations. The outer iteration can be written as<disp-formula id="e7">
<mml:math id="m45">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold">&#x3d5;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">I</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">D</mml:mi>
<mml:msup>
<mml:mi mathvariant="bold">L</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="bold">M</mml:mi>
<mml:mi mathvariant="bold">S</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:msub>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
<mml:mi mathvariant="italic">f</mml:mi>
<mml:mi mathvariant="italic">f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
<mml:mi mathvariant="bold">D</mml:mi>
<mml:msup>
<mml:mi mathvariant="bold">L</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="bold">M</mml:mi>
<mml:mi mathvariant="bold">&#x3c7;</mml:mi>
<mml:mi mathvariant="bold">f</mml:mi>
<mml:msup>
<mml:mi mathvariant="bold">&#x3d5;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(7)</label>
</disp-formula>
<disp-formula id="e8">
<mml:math id="m46">
<mml:mrow>
<mml:msup>
<mml:msub>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
<mml:mi mathvariant="italic">f</mml:mi>
<mml:mi mathvariant="italic">f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:mover accent="true">
<mml:mi mathvariant="italic">c</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mo>||</mml:mo>
<mml:mi mathvariant="bold">f</mml:mi>
<mml:msup>
<mml:mi mathvariant="bold">&#x3d5;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
<mml:msub>
<mml:mo>||</mml:mo>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(8)</label>
</disp-formula>where <inline-formula id="inf39">
<mml:math id="m47">
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the outer iterative index, <inline-formula id="inf40">
<mml:math id="m48">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mfenced open="&#x2016;" close="&#x2016;" separators="|">
<mml:mrow>
<mml:mo>&#x2219;</mml:mo>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> denotes the L-1 norm. <inline-formula id="inf41">
<mml:math id="m49">
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="normal">c</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula> is a fixed value during iteration and it can be assigned form the iterative initial value as<disp-formula id="e9">
<mml:math id="m50">
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="italic">c</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mo>&#x2261;</mml:mo>
<mml:mfrac>
<mml:msup>
<mml:msub>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
<mml:mi mathvariant="italic">f</mml:mi>
<mml:mi mathvariant="italic">f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
<mml:mrow>
<mml:mo>||</mml:mo>
<mml:mi mathvariant="bold">f</mml:mi>
<mml:msup>
<mml:mi mathvariant="normal">&#x3d5;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
<mml:msub>
<mml:mo>||</mml:mo>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(9)</label>
</disp-formula>
</p>
<p>For each outer iteration, Eq. <xref ref-type="disp-formula" rid="e7">7</xref> is equivalent to a fixed source problem, which can generally be calculated using fixed point iteration method (which is the inner iteration) as<disp-formula id="e10">
<mml:math id="m51">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold">&#x3d5;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="italic">l</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold">D</mml:mi>
<mml:msup>
<mml:mi mathvariant="bold">L</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="bold">M</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">S</mml:mi>
<mml:msup>
<mml:mi mathvariant="bold">&#x3d5;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="italic">m</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="italic">l</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:msub>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
<mml:mi mathvariant="italic">f</mml:mi>
<mml:mi mathvariant="italic">f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
<mml:mi mathvariant="bold">&#x3c7;</mml:mi>
<mml:mi mathvariant="bold">f</mml:mi>
<mml:msup>
<mml:mi mathvariant="bold">&#x3d5;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="italic">l</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(10)</label>
</disp-formula>where <inline-formula id="inf42">
<mml:math id="m52">
<mml:mrow>
<mml:mi mathvariant="normal">m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the inner iterative index. In this paper, this power iterative strategy is called comePSn method. To efficiently get the simultaneous solution of the non-linear system using the parallel JFNK method, the k-eigenvalue and the scalar fluxes (rather than the angular fluxes) are finally chosen as the global solution variables, and <inline-formula id="inf43">
<mml:math id="m53">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold">&#x3d5;</mml:mi>
<mml:mi mathvariant="normal">T</mml:mi>
</mml:msup>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="normal">e</mml:mi>
<mml:mi mathvariant="normal">f</mml:mi>
<mml:mi mathvariant="normal">f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="normal">T</mml:mi>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<p>Meanwhile, <inline-formula id="inf44">
<mml:math id="m54">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is also the minimal subset of all the variables for the discrete non-linear system based on the parallel Sn method, which indicates that the JFNK solution has the least number of global solution variables and can obtain good numerical efficiency.</p>
<p>Then, according to the PI strategy for the parallel Sn method as shown in Eq. <xref ref-type="disp-formula" rid="e7">7</xref> and Eq. <xref ref-type="disp-formula" rid="e8">8</xref>, the corresponding residual functions for the parallel JFNK method can be easily expressed as<disp-formula id="e11">
<mml:math id="m55">
<mml:mrow>
<mml:mi mathvariant="bold">F</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2261;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">F</mml:mi>
<mml:mi mathvariant="normal">&#x3d5;</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">F</mml:mi>
<mml:mi mathvariant="italic">k</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold">&#x3d5;</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">I</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">D</mml:mi>
<mml:msup>
<mml:mi mathvariant="bold">L</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="bold">M</mml:mi>
<mml:mi mathvariant="bold">S</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
<mml:mi mathvariant="italic">f</mml:mi>
<mml:mi mathvariant="italic">f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mi mathvariant="bold">D</mml:mi>
<mml:msup>
<mml:mi mathvariant="bold">L</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="bold">M</mml:mi>
<mml:mi mathvariant="bold">&#x3c7;</mml:mi>
<mml:mi mathvariant="bold">f</mml:mi>
<mml:mi mathvariant="bold">&#x3d5;</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
<mml:mi mathvariant="italic">f</mml:mi>
<mml:mi mathvariant="italic">f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mover accent="true">
<mml:mi mathvariant="normal">c</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mo>||</mml:mo>
<mml:mi mathvariant="bold">f</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">I</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">D</mml:mi>
<mml:msup>
<mml:mi mathvariant="bold">L</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="bold">M</mml:mi>
<mml:mi mathvariant="bold">S</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
<mml:mi mathvariant="italic">f</mml:mi>
<mml:mi mathvariant="italic">f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mi mathvariant="bold">D</mml:mi>
<mml:msup>
<mml:mi mathvariant="bold">L</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="bold">M</mml:mi>
<mml:mi mathvariant="bold">&#x3c7;</mml:mi>
<mml:mi mathvariant="bold">f</mml:mi>
<mml:mi mathvariant="bold">&#x3d5;</mml:mi>
<mml:msub>
<mml:mo>||</mml:mo>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(11)</label>
</disp-formula>where <inline-formula id="inf45">
<mml:math id="m56">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">F</mml:mi>
<mml:mi mathvariant="normal">&#x3d5;</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf46">
<mml:math id="m57">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">F</mml:mi>
<mml:mi mathvariant="normal">k</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> denotes the residual functions for <inline-formula id="inf47">
<mml:math id="m58">
<mml:mrow>
<mml:mi mathvariant="normal">&#x3d5;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf48">
<mml:math id="m59">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="normal">e</mml:mi>
<mml:mi mathvariant="normal">f</mml:mi>
<mml:mi mathvariant="normal">f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, respectively. However, as mentioned above, the solution of the <inline-formula id="inf49">
<mml:math id="m60">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">I</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">D</mml:mi>
<mml:msup>
<mml:mi mathvariant="bold">L</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="bold">M</mml:mi>
<mml:mi mathvariant="bold">S</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> operation needs nested inner iterations with a certain amount of transport sweeping steps (multiple calculation of <inline-formula id="inf50">
<mml:math id="m61">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold">L</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>), which can lead to significantly expensive cost when evaluating residual functions. In fact, only one transport sweeping step is enough for the evaluation of the residual functions for JFNK. As a result, in this paper, the residual functions are constructed according to Eq. <xref ref-type="disp-formula" rid="e6">6</xref> and <xref ref-type="disp-formula" rid="e8">8</xref> as<disp-formula id="e12">
<mml:math id="m62">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">F</mml:mi>
<mml:mi mathvariant="normal">&#x3d5;</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold">&#x3d5;</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">D</mml:mi>
<mml:msup>
<mml:mi mathvariant="bold">L</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="bold">M</mml:mi>
<mml:mi mathvariant="bold">S</mml:mi>
<mml:mi mathvariant="bold">&#x3d5;</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
<mml:mi mathvariant="italic">f</mml:mi>
<mml:mi mathvariant="italic">f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mi mathvariant="bold">D</mml:mi>
<mml:msup>
<mml:mi mathvariant="bold">L</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="bold">M</mml:mi>
<mml:mi mathvariant="bold">&#x3c7;</mml:mi>
<mml:mi mathvariant="bold">f</mml:mi>
<mml:mi mathvariant="bold">&#x3d5;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold">&#x3d5;</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">D</mml:mi>
<mml:msup>
<mml:mi mathvariant="bold">L</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="bold">M</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">S</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
<mml:mi mathvariant="italic">f</mml:mi>
<mml:mi mathvariant="italic">f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mi mathvariant="bold">&#x3c7;</mml:mi>
<mml:mi mathvariant="bold">f</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold">&#x3d5;</mml:mi>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(12)</label>
</disp-formula>
<disp-formula id="e13">
<mml:math id="m63">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold">F</mml:mi>
<mml:mi mathvariant="normal">k</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
<mml:mi mathvariant="italic">f</mml:mi>
<mml:mi mathvariant="italic">f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mover accent="true">
<mml:mi mathvariant="normal">c</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mo>||</mml:mo>
<mml:mi mathvariant="bold">f</mml:mi>
<mml:mi mathvariant="bold">D</mml:mi>
<mml:msup>
<mml:mi mathvariant="bold">L</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="bold">M</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">S</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="italic">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
<mml:mi mathvariant="italic">f</mml:mi>
<mml:mi mathvariant="italic">f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mi mathvariant="bold">&#x3c7;</mml:mi>
<mml:mi mathvariant="bold">f</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold">&#x3d5;</mml:mi>
<mml:msub>
<mml:mo>||</mml:mo>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(13)</label>
</disp-formula>where the evaluation is equivalent to a &#x201c;flattened&#x201d; power iterative process (<xref ref-type="bibr" rid="B12">Gill, 2009</xref>) including a single outer iteration without nested inner iterations as shown in Eq. <xref ref-type="disp-formula" rid="e10">10</xref>. In this paper, the combined strategy of the parallel JFNK method and the parallel Sn method is called comePSn_JFNK method.</p>
</sec>
<sec id="s2-3">
<title>2.3 Parallel code design for evaluation of residual functions</title>
<p>In this paper, the comePSn and comePSn_JFNK codes are parallelly designed on spatial domain decomposition with the Message Passing Interface (MPI) standard. For the comePSn_JFNK code, the message communication between MPI ranks is mainly required for the evaluation of the residual functions, the dot products and the norms. The parallel dot products and norms of vectors can be easily calculated by using the MPI_Allreduce function. And the evaluation of residual functions employs the KBA algorithm, which can directly calculate the inversion of <inline-formula id="inf51">
<mml:math id="m64">
<mml:mrow>
<mml:mi mathvariant="bold">L</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> in the parallel Sn framework.</p>
<p>KBA is constructed on the (N-1)-dimensional spatial domain decomposition for N-dimensional models. For 3-D rectangular coordinate system, the spatial grid is divided into domains on the XY layout of CPU cores (or MPI ranks). Each domain is further decomposed into computational chunks, which are solved in the &#x201c;wavefront&#x201d; ordering. Each computational chunk, in a single octant with N/8 discrete angles for a single energy group, is solved after receiving the incoming angular fluxes from the upstream chunks (or from the boundary conditions), and then the outer angular fluxes are sent to the downstream chunks if required. The &#x201c;simultaneous in angle, successive in quadrants&#x201d; pipelining method described in the reference (<xref ref-type="bibr" rid="B4">Baker and Koch, 1998</xref>) are chosen in this paper. In addition, to reduce the idle time, the sweeps start at all the four corners of the spatial grid at the same time (<xref ref-type="bibr" rid="B2">Bailey and Falgout, 2009</xref>).</p>
<p>As mentioned above, the KBA transport sweeping process can be easily applied to evaluate the residual functions for the parallel JFNK framework. In this work, the evaluation of the residual functions is a three-step process. 1) Map <inline-formula id="inf52">
<mml:math id="m65">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> to <inline-formula id="inf53">
<mml:math id="m66">
<mml:mrow>
<mml:mi mathvariant="normal">&#x3d5;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf54">
<mml:math id="m67">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="normal">e</mml:mi>
<mml:mi mathvariant="normal">f</mml:mi>
<mml:mi mathvariant="normal">f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> in each MPI rank. 2) Calculate the new scalar fluxes <inline-formula id="inf55">
<mml:math id="m68">
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="normal">&#x3d5;</mml:mi>
<mml:mo>&#x223c;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula> by using the KBA algorithm where <inline-formula id="inf56">
<mml:math id="m69">
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="normal">&#x3d5;</mml:mi>
<mml:mo>&#x223c;</mml:mo>
</mml:mover>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold">D</mml:mi>
<mml:msup>
<mml:mi mathvariant="bold">L</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="bold">M</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">S</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>/</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="normal">e</mml:mi>
<mml:mi mathvariant="normal">f</mml:mi>
<mml:mi mathvariant="normal">f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mi mathvariant="bold">&#x3c7;</mml:mi>
<mml:mi mathvariant="bold">f</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="normal">&#x3d5;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
<bold>,</bold> and then get the new k-eigenvalue as <inline-formula id="inf57">
<mml:math id="m70">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="normal">k</mml:mi>
<mml:mo>&#x223c;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">e</mml:mi>
<mml:mi mathvariant="normal">f</mml:mi>
<mml:mi mathvariant="normal">f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mover accent="true">
<mml:mi mathvariant="normal">c</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mo>||</mml:mo>
<mml:mi mathvariant="bold">f</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold">&#x3d5;</mml:mi>
<mml:mo>&#x223c;</mml:mo>
</mml:mover>
<mml:mo>||</mml:mo>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. 3) Calculate the residual functions <inline-formula id="inf58">
<mml:math id="m71">
<mml:mrow>
<mml:mi mathvariant="bold">F</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> according to Eqs <xref ref-type="disp-formula" rid="e12">12</xref>, <xref ref-type="disp-formula" rid="e13">13</xref>, where <inline-formula id="inf59">
<mml:math id="m72">
<mml:mrow>
<mml:mi mathvariant="bold">F</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold">&#x3d5;</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mover accent="true">
<mml:mi mathvariant="bold">&#x3d5;</mml:mi>
<mml:mo>&#x223c;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi mathvariant="normal">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">e</mml:mi>
<mml:mi mathvariant="italic">f</mml:mi>
<mml:mi mathvariant="italic">f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="normal">k</mml:mi>
<mml:mo>&#x223c;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">e</mml:mi>
<mml:mi mathvariant="normal">f</mml:mi>
<mml:mi mathvariant="normal">f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
</sec>
<sec id="s2-4">
<title>2.4 Solution strategy</title>
<p>Based on the above methodologies, the parallel comePSn_JFNK and comePSn codes are respectively developed in the unified COME using C&#x2b;&#x2b; language to study the numerical accuracy, the efficiency and the parallel performance for the 3-D/2-D pin-by-pin neutron transport models. The iterative strategies and the flowchart are shown in <xref ref-type="fig" rid="F1">Figure 1</xref>. The good initial guess <inline-formula id="inf60">
<mml:math id="m73">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> of the comePSn_JFNK code comes from the solution after 5 power iterative steps. The CPU time and iterative properties of the comePSn code after 5 iterative steps are also compared with those of the comePSn_JFNK code. In addition, the number of inner steps is fixed as one per outer step for the comePSn code, which ensures that a single power iterative step for the comePSn code is equivalent to one calling calculation of residual functions for the comePSn_JFNK code. Then, the relative convergence criterion for both comePSn_JFNK and comePSn codes is<disp-formula id="e14">
<mml:math id="m74">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mfenced open="&#x2016;" close="&#x2016;" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">F</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mfenced open="&#x2016;" close="&#x2016;" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">F</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x3c;</mml:mo>
<mml:msup>
<mml:mn>10</mml:mn>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>6</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(14)</label>
</disp-formula>where <inline-formula id="inf61">
<mml:math id="m75">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mfenced open="&#x2016;" close="&#x2016;" separators="|">
<mml:mrow>
<mml:mo>&#x2219;</mml:mo>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> denotes the L-2 norm and <inline-formula id="inf62">
<mml:math id="m76">
<mml:mrow>
<mml:mi mathvariant="bold">F</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> denotes the residuals of the iterative initial value. In each Newton step (<inline-formula id="inf63">
<mml:math id="m77">
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>), the adaptive convergence criterion with the Eisenstat-Walker forcing term <inline-formula id="inf64">
<mml:math id="m78">
<mml:mrow>
<mml:msup>
<mml:mi>&#x3b7;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> (<xref ref-type="bibr" rid="B7">Eisenstat and Walker, 1996</xref>) is<disp-formula id="e15">
<mml:math id="m79">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="&#x2016;" close="&#x2016;" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold">J</mml:mi>
<mml:mi mathvariant="bold">a</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi>&#x3b4;</mml:mi>
<mml:msup>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold">F</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msub>
<mml:mo>&#x2016;</mml:mo>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x3c;</mml:mo>
<mml:msup>
<mml:mi>&#x3b7;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold">F</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msub>
<mml:mo>&#x2016;</mml:mo>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(15)</label>
</disp-formula>
<disp-formula id="e16">
<mml:math id="m80">
<mml:mrow>
<mml:msup>
<mml:mi>&#x3b7;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="italic">n</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.1</mml:mn>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="bold">F</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">n</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">F</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn>2.0</mml:mn>
</mml:msup>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(16)</label>
</disp-formula>
</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>Iterative strategies and flowchart for the comePSn_JFNK and comePSn methods.</p>
</caption>
<graphic xlink:href="fenrg-10-1101050-g001.tif"/>
</fig>
<p>The restarted GMRES (Generalized Minimal REsidual) method (<xref ref-type="bibr" rid="B19">Saad and Schultz, 1986</xref>) is adopted to solve <xref ref-type="disp-formula" rid="e15">Eq. 15</xref> and the maximum Krylov subspace dimension is set to 20. At last, the global convergent backtracking algorithm (<xref ref-type="bibr" rid="B8">Eisenstat and Walker, 1994</xref>) is employed to ensure the global convergence of come_PSn_JFNK.</p>
</sec>
</sec>
<sec id="s3">
<title>3 Numerical results and analysis</title>
<p>In this section, we apply the comePSn_JFNK and comePSn codes to two series of complicated multi-dimensional pin-by-pin neutron transport models. First, the popular 2-D/3-D KAIST-3A benchmark problems with Gd burnable absorbers are simulated to analyze the numerical accuracy, the parallel performance and the computational efficiency of the comePSn_JFNK and comePSn codes. Then, the more complicated 2-D/3-D full-core MOX/UOX pin-by-pin models with different insertion forms of the control rods are further employed to test the high numerical efficiency of the comePSn_JFNK code compared with the comePSn code in an order of 1000 CPU cores on the computer clusters with Hygon C86 7185 32-core processors. In all of our numerical simulations, the S<sub>8</sub> Carlson quadrature set (<xref ref-type="bibr" rid="B17">Longoni, 2004</xref>) is adopted to discretize the angular direction space.</p>
<sec id="s3-1">
<title>3.1 KAIST-3A benchmark problem</title>
<p>KAIST-3A benchmark problems are published by KAIST Nuclear Reactor Analysis and Particle Transport laboratory (<xref ref-type="bibr" rid="B6">Cho, 2000</xref>), whose model is a simplified PWR core. The quarter symmetric radial geometry is illustrated in <xref ref-type="fig" rid="F2">Figure 2</xref>. The core consists of two types of fuel assemblies, Uranium (UOX, including UOX-1 with 2.0% enrichment and UOX-2 with 3.3% enrichment) and Plutonium (MOX), which are surrounded by the baffle and reflector. Each fuel assembly follows a 17 &#xd7; 17 lattice design of 21.42&#xa0;cm width with a 1.26&#xa0;cm pin pitch, which includes 264 fuel rods (or burnable absorber rods), 24 guide tubes (or control rods inserted) and one instrument guide tube as shown in <xref ref-type="fig" rid="F3">Figure 3</xref>. There are two cases: all rods out (ARO) and all rods in (ARI), based on the configurations with or without the control rods (CR) inserted into the four UOX-2 fuel assemblies. Seven-group macroscopic cross sections are provided in the benchmark report, including UO<sub>2</sub> fuel, MOX fuel, guide tube, BA (Burnable absorber) rod, control rod, baffle and reflector.</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>Radial geometry of the KAIST-3A benchmark problem.</p>
</caption>
<graphic xlink:href="fenrg-10-1101050-g002.tif"/>
</fig>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>Fuel assembly configuration of the KAIST-3A benchmark problem: <bold>(A)</bold> UOX fuel assembly and <bold>(B)</bold> MOX fuel assembly.</p>
</caption>
<graphic xlink:href="fenrg-10-1101050-g003.tif"/>
</fig>
<p>At first, the 2-D quarter symmetric models are simulated by comePSn_JFNK and comePSn codes. The pin cell is divided into 1 &#xd7; 1, 2 &#xd7; 2, 4 &#xd7; 4 and 32 &#xd7; 32 rectangular meshes, respectively.</p>
<p>
<xref ref-type="table" rid="T1">Table 1</xref> and <xref ref-type="fig" rid="F4">Figure 4</xref> respectively show the comparison of the k-eigenvalue and the relative errors (%) of power density for ARO and ARI with different mesh sizes per pin using comePSn_JFNK and comePSn codes. It can be seen that there is no obvious difference between the results from the two codes. To further analyze the accuracy of the two codes with different mesh sizes per pin, the relative errors (%) of pin-wise power density on 1 &#xd7; 1, 2 &#xd7; 2 and 4 &#xd7; 4 meshes per pin are presented in <xref ref-type="fig" rid="F5">Figure 5</xref> compared with the results on 32 &#xd7; 32 meshes per pin. For 1 &#xd7; 1 mesh per pin, the maximum value of the relative errors reaches 12% for ARO and 18% for ARI, and the errors of the k-eigenvalues are about 200 pcm (for ARO) and 750 pcm (for ARI). While for 2 &#xd7; 2 and 4 &#xd7; 4 meshes per pin, the errors of the power density and the k-eigenvalues are respectively less than 2% and 50 pcm, and it indicates that the solution on 2 &#xd7; 2 meshes per pin can obtain acceptable numerical accuracy.</p>
<table-wrap id="T1" position="float">
<label>TABLE 1</label>
<caption>
<p>Results of k-eigenvalues on different mesh sizes per pin for 2-D KAIST-3A benchmark problems.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Case</th>
<th align="center">Method</th>
<th align="center">1 &#xd7; 1</th>
<th align="center">2 &#xd7; 2</th>
<th align="center">4 &#xd7; 4</th>
<th align="center">32 &#xd7; 32</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td rowspan="2" align="center">ARO</td>
<td align="center">comePSn</td>
<td align="center">1.12886</td>
<td align="center">1.13086</td>
<td align="center">1.13083</td>
<td align="center">1.13088</td>
</tr>
<tr>
<td align="center">comePSn_JFNK</td>
<td align="center">1.12886</td>
<td align="center">1.13086</td>
<td align="center">1.13083</td>
<td align="center">1.13088</td>
</tr>
<tr>
<td rowspan="2" align="center">ARI</td>
<td align="center">comePSn</td>
<td align="center">0.96706</td>
<td align="center">0.97401</td>
<td align="center">0.97421</td>
<td align="center">0.97452</td>
</tr>
<tr>
<td align="center">comePSn_JFNK</td>
<td align="center">0.96706</td>
<td align="center">0.97401</td>
<td align="center">0.97421</td>
<td align="center">0.97452</td>
</tr>
</tbody>
</table>
</table-wrap>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption>
<p>Relative error (%) of power density between comePSn_JFNK and comePSn codes on different mesh sizes per pin for 2-D KAIST-3A benchmark problems: <bold>(A)</bold> 1 &#xd7; 1 for ARO, <bold>(B)</bold> 2 &#xd7; 2 for ARO, <bold>(C)</bold> 4 &#xd7; 4 for ARO, <bold>(D)</bold> 32 &#xd7; 32 for ARO, <bold>(E)</bold> 1 &#xd7; 1 for ARI, <bold>(F)</bold> 2 &#xd7; 2 for ARI, <bold>(G)</bold> 4 &#xd7; 4 for ARI and <bold>(H)</bold> 32 &#xd7; 32 for ARI.</p>
</caption>
<graphic xlink:href="fenrg-10-1101050-g004.tif"/>
</fig>
<fig id="F5" position="float">
<label>FIGURE 5</label>
<caption>
<p>Relative error (%) of pin-wise power density on different mesh sizes per pin compared with those on 32 &#xd7; 32 meshes per pin for 2-D KAIST-3A benchmark problems using the comePSn_JFNK code: <bold>(A)</bold> 1 &#xd7; 1 for ARO, <bold>(B)</bold> 2 &#xd7; 2 for ARO, <bold>(C)</bold> 4 &#xd7; 4 for ARO, <bold>(D)</bold> 1 &#xd7; 1 for ARI, <bold>(E)</bold> 2 &#xd7; 2 for ARI and <bold>(F)</bold> 4 &#xd7; 4 for ARI.</p>
</caption>
<graphic xlink:href="fenrg-10-1101050-g005.tif"/>
</fig>
<p>To further analyze the numerical efficiency of comePSn_JFNK and comePSn codes, the CPU times and iteration numbers are presented in <xref ref-type="table" rid="T2">Table 2</xref>. It should be noted that the CPU times do not include the cost of the initialization, reading the input files and writing the output files. The results indicate that the different mesh sizes per pin make no obvious difference on the convergence rate for both comePSn_JFNK and comePSn codes. The computational efficiency of the comePSn_JFNK code is about 6&#x2013;8 times as much as the comePSn code for ARO and about 8&#x2013;10 for ARI.</p>
<table-wrap id="T2" position="float">
<label>TABLE 2</label>
<caption>
<p>Comparison of the computational cost for 2-D KAIST-3A benchmark problems.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Case</th>
<th align="center">Meshes per pin</th>
<th align="center">Code</th>
<th align="center">Newton/Power steps</th>
<th align="center">Krylov iterative number</th>
<th align="center">Number of calling residuals</th>
<th align="center">CPU time (s)</th>
<th align="center">Speed up</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td rowspan="8" align="center">ARO</td>
<td align="center">1 &#xd7; 1</td>
<td align="center">comePSn</td>
<td align="center">1,382</td>
<td align="center">&#x2014;</td>
<td align="center">&#x2014;</td>
<td align="center">35.26</td>
<td align="center">&#x2014;</td>
</tr>
<tr>
<td align="left"/>
<td align="center">comePSn_JFNK</td>
<td align="center">6</td>
<td align="center">155</td>
<td align="center">162</td>
<td align="center">4.28</td>
<td align="center">8.24</td>
</tr>
<tr>
<td align="center">2 &#xd7; 2</td>
<td align="center">comePSn</td>
<td align="center">1,410</td>
<td align="center">&#x2014;</td>
<td align="center">&#x2014;</td>
<td align="center">140.67</td>
<td align="center">&#x2014;</td>
</tr>
<tr>
<td align="left"/>
<td align="center">comePSn_JFNK</td>
<td align="center">6</td>
<td align="center">176</td>
<td align="center">183</td>
<td align="center">19.28</td>
<td align="center">7.30</td>
</tr>
<tr>
<td align="center">4 &#xd7; 4</td>
<td align="center">comePSn</td>
<td align="center">1,411</td>
<td align="center">&#x2014;</td>
<td align="center">&#x2014;</td>
<td align="center">568.94</td>
<td align="center">&#x2014;</td>
</tr>
<tr>
<td align="left"/>
<td align="center">comePSn_JFNK</td>
<td align="center">6</td>
<td align="center">177</td>
<td align="center">184</td>
<td align="center">78.13</td>
<td align="center">7.28</td>
</tr>
<tr>
<td align="center">32 &#xd7; 32&#x2a;</td>
<td align="center">comePSn</td>
<td align="center">1,412</td>
<td align="center">&#x2014;</td>
<td align="center">&#x2014;</td>
<td align="center">1,296.44</td>
<td align="center">&#x2014;</td>
</tr>
<tr>
<td align="left"/>
<td align="center">comePSn_JFNK</td>
<td align="center">6</td>
<td align="center">177</td>
<td align="center">184</td>
<td align="center">211.04</td>
<td align="center">6.14</td>
</tr>
<tr>
<td rowspan="8" align="center">ARI</td>
<td align="center">1 &#xd7; 1</td>
<td align="center">comePSn</td>
<td align="center">1,580</td>
<td align="center">&#x2014;</td>
<td align="center">&#x2014;</td>
<td align="center">39.96</td>
<td align="center">&#x2014;</td>
</tr>
<tr>
<td align="left"/>
<td align="center">comePSn_JFNK</td>
<td align="center">6</td>
<td align="center">156</td>
<td align="center">163</td>
<td align="center">4.41</td>
<td align="center">9.06</td>
</tr>
<tr>
<td align="center">2 &#xd7; 2</td>
<td align="center">comePSn</td>
<td align="center">1,571</td>
<td align="center">&#x2014;</td>
<td align="center">&#x2014;</td>
<td align="center">156.93</td>
<td align="center">&#x2014;</td>
</tr>
<tr>
<td align="left"/>
<td align="center">comePSn_JFNK</td>
<td align="center">5</td>
<td align="center">143</td>
<td align="center">149</td>
<td align="center">15.59</td>
<td align="center">10.07</td>
</tr>
<tr>
<td align="center">4 &#xd7; 4</td>
<td align="center">comePSn</td>
<td align="center">1,570</td>
<td align="center">&#x2014;</td>
<td align="center">&#x2014;</td>
<td align="center">628.50</td>
<td align="center">&#x2014;</td>
</tr>
<tr>
<td align="left"/>
<td align="center">comePSn_JFNK</td>
<td align="center">5</td>
<td align="center">143</td>
<td align="center">149</td>
<td align="center">63.71</td>
<td align="center">9.86</td>
</tr>
<tr>
<td align="center">32 &#xd7; 32&#x2a;</td>
<td align="center">comePSn</td>
<td align="center">1,566</td>
<td align="center">&#x2014;</td>
<td align="center">&#x2014;</td>
<td align="center">1,404.90</td>
<td align="center">&#x2014;</td>
</tr>
<tr>
<td align="left"/>
<td align="center">comePSn_JFNK</td>
<td align="center">5</td>
<td align="center">146</td>
<td align="center">151</td>
<td align="center">175.32</td>
<td align="center">8.01</td>
</tr>
</tbody>
</table>
<table-wrap-foot>
<fn>
<p>
<sup>&#x2a;</sup>the simulation on 32 &#xd7; 32 meshes per pin is solved using 32 CPU, cores and the others are on one CPU, core.</p>
</fn>
</table-wrap-foot>
</table-wrap>
<p>Then the KAIST-3A 2-D quarter symmetric models are extend to 3-D full-core models with the same radial configuration, and axial reflectors are set at the top/bottom of the core. The active fuel length is 365.76&#xa0;cm and the width of axial reactors is 21.42&#xa0;cm. The control rods can be inserted from the top of the upper reflector to the bottom of the active fuel region in the UOX-2 (CR) assemblies. ARO and ARI cases are still simulated by comePSn_JFNK and comePSn codes.</p>
<p>The 3-D full-core model is divided into 340 &#xd7; 340 &#xd7; 340 meshes. Specifically, one pin cell is divided into 2 &#xd7; 2 meshes in the radial direction; in the axial direction, the active region is divided into 300 meshes and the top/bottom reflectors are respectively divided into 20 meshes. Both comePSn_JFNK and comePSn codes solve the problems using 100 CPU cores. <xref ref-type="fig" rid="F6">Figure 6</xref> presents the relative errors (%) of radial average power density between the two codes and <xref ref-type="fig" rid="F7">Figure 7</xref> shows the radial average power density and 3-D power density distribution in the active regions calculated the comePSn_JFNK code. The numerical results of radial power density and the k-eigenvalues from the two codes also agree well with each other. The k-eigenvalues are respectively 1.12612 for ARO and 0.97063 for ARI.</p>
<fig id="F6" position="float">
<label>FIGURE 6</label>
<caption>
<p>Relative error (%) of radial average power density between comePSn_JFNK and comePSn codes for 3-D KAIST-3A benchmark problems: <bold>(A)</bold> ARO and <bold>(B)</bold> ARI.</p>
</caption>
<graphic xlink:href="fenrg-10-1101050-g006.tif"/>
</fig>
<fig id="F7" position="float">
<label>FIGURE 7</label>
<caption>
<p>Radial average power density and 3-D power density distribution for 3-D KAIST-3A benchmark problems using the comePSn_JFNK code: <bold>(A)</bold> radial power density for ARO, <bold>(B)</bold> 3-D power density for ARO, <bold>(C)</bold> radial power density for ARI and <bold>(D)</bold> 3-D power density for ARI.</p>
</caption>
<graphic xlink:href="fenrg-10-1101050-g007.tif"/>
</fig>
<p>To further analyze the efficiency of comePSn_JFNK and comePSn codes for 3-D models, the iterative properties and CPU times (on 100 CPU cores) are listed in <xref ref-type="table" rid="T3">Table 3</xref>. Compared with the comePSn code, the speedups of the comePSn_JFNK code are 12.41 for ARO and 14.64 for ARI. It is worth noting that the acceleration rates of the comePSn_JFNK code for 3-D models are higher than those for 2-D models, which shows the advantage of numerical efficiency of the comePSn_JFNK code for the complicated 3-D neutron transport problems.</p>
<table-wrap id="T3" position="float">
<label>TABLE 3</label>
<caption>
<p>Comparison of the computational cost for 3-D KAIST-3A benchmark problems (100 CPU cores).</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Case</th>
<th align="center">Code</th>
<th align="center">Newton/Power steps</th>
<th align="center">Krylov iterative number</th>
<th align="center">Number of calling residuals</th>
<th align="center">CPU time (s)</th>
<th align="center">Speed up</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td rowspan="2" align="center">ARO</td>
<td align="center">comePSn</td>
<td align="center">7120</td>
<td align="center">&#x2014;</td>
<td align="center">&#x2014;</td>
<td align="center">24337</td>
<td align="center">&#x2014;</td>
</tr>
<tr>
<td align="center">comePSn_JFNK</td>
<td align="center">7</td>
<td align="center">494</td>
<td align="center">502</td>
<td align="center">1961</td>
<td align="center">12.41</td>
</tr>
<tr>
<td rowspan="2" align="center">ARI</td>
<td align="center">comePSn</td>
<td align="center">6,914</td>
<td align="center">&#x2014;</td>
<td align="center">&#x2014;</td>
<td align="center">24056</td>
<td align="center">&#x2014;</td>
</tr>
<tr>
<td align="center">comePSn_JFNK</td>
<td align="center">6</td>
<td align="center">408</td>
<td align="center">414</td>
<td align="center">1,643</td>
<td align="center">14.64</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>In addition, the parallel efficiencies of the comePSn_JFNK code for the 3-D KAIST-3A ARO case using 4, 16, 100 and 400 CPU cores are shown in <xref ref-type="fig" rid="F8">Figure 8</xref>. The &#x201c;Solving&#x201d; curve means the parallel efficiency of the total CPU time and the &#x201c;Sweeping&#x201d; curve indicates the parallel efficiency of KBA sweeping. The efficiencies of &#x201c;Solving&#x201d; and &#x201c;Sweeping&#x201d; using 400 CPU cores are respectively about 63% and 68%, which can be further improved by optimizing the parallel performance of the Krylov subspace methods and the strategies of the KBA algorithm.</p>
<fig id="F8" position="float">
<label>FIGURE 8</label>
<caption>
<p>Parallel efficiency for 3-D KAIST-3A ARO case of the comePSn_JFNK code.</p>
</caption>
<graphic xlink:href="fenrg-10-1101050-g008.tif"/>
</fig>
</sec>
<sec id="s3-2">
<title>3.2 Full-core MOX/UOX pin-by-pin models</title>
<p>A series of 3-D/2-D PWR full-core MOX/UOX pin-by-pin models with different insertion positions of control rods are simulated to further study the numerical properties of comePSn_JFNK and comePSn codes. The reactor core also consists of UOX and MOX fuel assemblies surrounded by reflector. As shown in <xref ref-type="fig" rid="F9">Figure 9</xref>, each fuel assembly is 21.42&#xa0;cm wide and is made up of 17 &#xd7; 17 lattice with a 1.26&#xa0;cm pin pitch, which includes 264 fuel pins, 24 guide tubes (or control rods inserted) and one instrument tube for fission chamber. The UOX and MOX assemblies are distributed in a checker-board configuration and four core models (A, B, C and D) are designed with different configurations of the UOX assemblies with control rods inserted (UOA) as illustrated in <xref ref-type="fig" rid="F10">Figure 10</xref>. The active fuel length is 365.76&#xa0;cm and there are 21.42&#xa0;cm high axial reflectors at the top/bottom of the core just as the 3-D KAIST-3A models. It should be noted that the control rods are inserted form the top of the upper reflector to the bottom of the active fuel regions in the models B, C and D; and the control rods are still in the upper reflector if withdrawn in the models A, C and D. In this paper both 2-D and 3-D models are simulated by comePSn_JFNK and comePSn codes. The seven-group cross sections for pin cells are chosen form the C5G7 benchmark report (<xref ref-type="bibr" rid="B20">Smith et al., 2005</xref>). The pin cells are divided into 2 &#xd7; 2 rectangular meshes in the radial direction; in the axial direction, the active fuel region is divided into 580 meshes and the top/bottom reflectors are respectively divided into 30 meshes.</p>
<fig id="F9" position="float">
<label>FIGURE 9</label>
<caption>
<p>Fuel assembly configuration of the full-core MOX/UOX pin-by-pin models: <bold>(A)</bold> UOX fuel assembly and <bold>(B)</bold> MOX fuel assembly.</p>
</caption>
<graphic xlink:href="fenrg-10-1101050-g009.tif"/>
</fig>
<fig id="F10" position="float">
<label>FIGURE 10</label>
<caption>
<p>Radial core configuration of the full-core MOX/UOX pin-by-pin models: <bold>(A)</bold> model A, <bold>(B)</bold> model B, <bold>(C)</bold> model C and <bold>(D)</bold> model D.</p>
</caption>
<graphic xlink:href="fenrg-10-1101050-g010.tif"/>
</fig>
<p>
<xref ref-type="table" rid="T4">Table 4</xref> shows the results of the k-eigenvalues from comePSn_JFNK and comePSn codes and the reference solution is from the paper (<xref ref-type="bibr" rid="B28">Zhou, 2022a</xref>). It can be observed that the errors of k-eigenvalues from the two codes are about 150 pcm compared with the reference. <xref ref-type="fig" rid="F11">Figure 11</xref> shows the power density distribution from the comePSn_JFNK code and <xref ref-type="fig" rid="F12">Figure 12</xref> shows the corresponding relative errors (%) compared with the comePSn code. It can be observed that the power density distribution from the two codes agree well with each other, and even in the model B where the control rods are all inserted in, the maximum of the errors is less than 0.002%.</p>
<table-wrap id="T4" position="float">
<label>TABLE 4</label>
<caption>
<p>Results of k-eigenvalues for 2-D full-core MOX/UOX pin-by-pin models A&#x2013;D.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Model</th>
<th align="left">Code</th>
<th align="left">Eigenvalue <inline-formula id="inf65">
<mml:math id="m81">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">k</mml:mi>
<mml:mrow>
<mml:mi mathvariant="normal">e</mml:mi>
<mml:mi mathvariant="normal">f</mml:mi>
<mml:mi mathvariant="normal">f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</th>
<th align="left">Reference</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td rowspan="2" align="center">A</td>
<td align="center">comePSn</td>
<td align="center">1.24449</td>
<td align="center">1.24322</td>
</tr>
<tr>
<td align="center">comePSn_JFNK</td>
<td align="center">1.24449</td>
<td align="left"/>
</tr>
<tr>
<td rowspan="2" align="center">B</td>
<td align="center">comePSn</td>
<td align="center">1.22596</td>
<td align="center">1.22457</td>
</tr>
<tr>
<td align="center">comePSn_JFNK</td>
<td align="center">1.22596</td>
<td align="left"/>
</tr>
<tr>
<td rowspan="2" align="center">C</td>
<td align="center">comePSn</td>
<td align="center">1.23055</td>
<td align="center">1.22921</td>
</tr>
<tr>
<td align="center">comePSn_JFNK</td>
<td align="center">1.23055</td>
<td align="left"/>
</tr>
<tr>
<td rowspan="2" align="center">D</td>
<td align="center">comePSn</td>
<td align="center">1.22812</td>
<td align="center">1.22674</td>
</tr>
<tr>
<td align="center">comePSn_JFNK</td>
<td align="center">1.22812</td>
<td align="left"/>
</tr>
</tbody>
</table>
</table-wrap>
<fig id="F11" position="float">
<label>FIGURE 11</label>
<caption>
<p>Power density distribution using the comePSn_JFNK code for 2-D full-core MOX/UOX pin-by-pin models: <bold>(A)</bold> model A, <bold>(B)</bold> model B, <bold>(C)</bold> model C and <bold>(D)</bold> model D.</p>
</caption>
<graphic xlink:href="fenrg-10-1101050-g011.tif"/>
</fig>
<fig id="F12" position="float">
<label>FIGURE 12</label>
<caption>
<p>Relative errors (%) of radial average power density between comePSn_JFNK and comePSn codes for 2-D full-core MOX/UOX pin-by-pin models: <bold>(A)</bold> model A, <bold>(B)</bold> model B, <bold>(C)</bold> model C and <bold>(D)</bold> model D.</p>
</caption>
<graphic xlink:href="fenrg-10-1101050-g012.tif"/>
</fig>
<p>To analyze the numerical efficiency, <xref ref-type="table" rid="T5">Table 5</xref> presents the comparation of the computational cost for the 2-D models from comePSn_JFNK and comePSn codes (using 1 core). Compared with the comePSn code, the speedups of the comePSn_JFNK code are respectively 15.40, 16.84, 29.90, and 29.67 for models A&#x2013;D, which indicates that the acceleration rate of the comePSn_JFNK code for the asymmetric models C and D is higher than that for the symmetric models A and B. In addition, there is obvious difference of the iterative steps between the four models from the comePSn code, which range from 7093 to 27041. While the comePSn_JFNK code takes similar non-linear iterative steps (range from 5 to 10) due to the robust convergence of the JFNK methods.</p>
<table-wrap id="T5" position="float">
<label>TABLE 5</label>
<caption>
<p>Comparison of the computational cost for 2-D Full-core MOX/UOX pin-by-pin models A&#x2013;D.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Model</th>
<th align="center">Code</th>
<th align="center">Newton/Power steps</th>
<th align="center">Krylov iterative number</th>
<th align="center">Number of calling residuals</th>
<th align="center">CPU time (s)</th>
<th align="center">Speed up</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td rowspan="2" align="center">A</td>
<td align="center">comePSn</td>
<td align="center">7093</td>
<td align="center">&#x2014;</td>
<td align="center">&#x2014;</td>
<td align="center">1956</td>
<td align="center">&#x2014;</td>
</tr>
<tr>
<td align="center">comePSn_JFNK</td>
<td align="center">7</td>
<td align="center">427</td>
<td align="center">434</td>
<td align="center">127</td>
<td align="center">15.40</td>
</tr>
<tr>
<td rowspan="2" align="center">B</td>
<td align="center">comePSn</td>
<td align="center">5,551</td>
<td align="center">&#x2014;</td>
<td align="center">&#x2014;</td>
<td align="center">1,543</td>
<td align="center">&#x2014;</td>
</tr>
<tr>
<td align="center">comePSn_JFNK</td>
<td align="center">5</td>
<td align="center">308</td>
<td align="center">313</td>
<td align="center">91.6</td>
<td align="center">16.84</td>
</tr>
<tr>
<td rowspan="2" align="center">C</td>
<td align="center">comePSn</td>
<td align="center">19582</td>
<td align="center">&#x2014;</td>
<td align="center">&#x2014;</td>
<td align="center">5,084</td>
<td align="center">&#x2014;</td>
</tr>
<tr>
<td align="center">comePSn_JFNK</td>
<td align="center">7</td>
<td align="center">571</td>
<td align="center">578</td>
<td align="center">170</td>
<td align="center">29.90</td>
</tr>
<tr>
<td rowspan="2" align="center">D</td>
<td align="center">comePSn</td>
<td align="center">27041</td>
<td align="center">&#x2014;</td>
<td align="center">&#x2014;</td>
<td align="center">7743</td>
<td align="center">&#x2014;</td>
</tr>
<tr>
<td align="center">comePSn_JFNK</td>
<td align="center">10</td>
<td align="center">885</td>
<td align="center">895</td>
<td align="center">261</td>
<td align="center">29.67</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>To further test the computational properties of the comePSn_JFNK code for 3-D models, the radial average power density and the 3-D power density distribution calculated by the comePSn_JFNK code using 1024 CPU cores are presented in <xref ref-type="fig" rid="F13">Figure 13</xref>, and the k-eigenvalues and the computational cost compared with the comePSn code is shown in <xref ref-type="table" rid="T6">Table 6</xref>. It can be seen that the acceleration rate of the comePSn_JFNK code are respectively 20.48, 22.57, 24.93 and 26.45 for models A&#x2013; D, which indicates that the comePSn_JFNK code still has significant efficiency advantage for the complicated 3-D full-core pin-by-pin models with different control rod distributions.</p>
<fig id="F13" position="float">
<label>FIGURE 13</label>
<caption>
<p>Radial average power and 3-D power density distribution for 3-D Full-core MOX/UOX pin-by-pin models: <bold>(A)</bold> radial power density for model A, <bold>(B)</bold> 3-D power density for model A, <bold>(C)</bold> radial power density for model B, <bold>(D)</bold> 3-D power density for model B, <bold>(E)</bold> radial power density for model C, <bold>(F)</bold> 3-D power density for model C, <bold>(G)</bold> radial power density for model D and <bold>(H)</bold> 3-D power density for model D.</p>
</caption>
<graphic xlink:href="fenrg-10-1101050-g013.tif"/>
</fig>
<table-wrap id="T6" position="float">
<label>TABLE 6</label>
<caption>
<p>Comparison of the k-eigenvalues and the computational cost for 3-D full-core MOX/UOX pin-by-pin models (1024 CPU cores).</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Model</th>
<th align="center">Code</th>
<th align="center">k-eigenvalue</th>
<th align="center">Newton/Power steps</th>
<th align="center">Krylov iterative number</th>
<th align="center">Number of calling residuals</th>
<th align="center">CPU time (s)</th>
<th align="center">Speed up</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td rowspan="2" align="center">A</td>
<td align="center">comePSn</td>
<td align="center">1.24080</td>
<td align="center">9,947</td>
<td align="center">&#x2014;</td>
<td align="center">&#x2014;</td>
<td align="center">27937</td>
<td align="center">&#x2014;</td>
</tr>
<tr>
<td align="center">comePSn_JFNK</td>
<td align="center">1.24080</td>
<td align="center">6</td>
<td align="center">426</td>
<td align="center">432</td>
<td align="center">1,364</td>
<td align="center">20.48</td>
</tr>
<tr>
<td rowspan="2" align="center">B</td>
<td align="center">comePSn</td>
<td align="center">1.22293</td>
<td align="center">9,942</td>
<td align="center">&#x2014;</td>
<td align="center">&#x2014;</td>
<td align="center">28616</td>
<td align="center">&#x2014;</td>
</tr>
<tr>
<td align="center">comePSn_JFNK</td>
<td align="center">1.22293</td>
<td align="center">5</td>
<td align="center">392</td>
<td align="center">397</td>
<td align="center">1,268</td>
<td align="center">22.57</td>
</tr>
<tr>
<td rowspan="2" align="center">C</td>
<td align="center">comePSn</td>
<td align="center">1.22731</td>
<td align="center">19637</td>
<td align="center">&#x2014;</td>
<td align="center">&#x2014;</td>
<td align="center">54921</td>
<td align="center">&#x2014;</td>
</tr>
<tr>
<td align="center">comePSn_JFNK</td>
<td align="center">1.22731</td>
<td align="center">7</td>
<td align="center">562</td>
<td align="center">569</td>
<td align="center">2,203</td>
<td align="center">24.93</td>
</tr>
<tr>
<td rowspan="2" align="center">D</td>
<td align="center">comePSn</td>
<td align="center">1.22493</td>
<td align="center">26804</td>
<td align="center">&#x2014;</td>
<td align="center">&#x2014;</td>
<td align="center">58552</td>
<td align="center">&#x2014;</td>
</tr>
<tr>
<td align="center">comePSn_JFNK</td>
<td align="center">1.22493</td>
<td align="center">8</td>
<td align="center">690</td>
<td align="center">698</td>
<td align="center">2,214</td>
<td align="center">26.45</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
</sec>
<sec id="s4">
<title>4 Conclusion</title>
<p>In this paper, a parallel Jacobian-free Newton Krylov discrete ordinates method (comePSn_JFNK) is developed to solve the multi-dimensional multi-group pin-by-pin neutron transport problems, which combines the parallel JFNK framework and the parallel Sn method based on KBA algorithm. The comePSn_JFNK code exhibits the good efficiency compared with the traditional parallel Sn code with power iterative strategy (comePSn). Furthermore, by making full use of transport sweeping iterative framework, the corresponding residual functions of the parallel JFNK framework can be easily evaluated by only a &#x201c;flattened&#x201d; power iterative process which includes a single outer iteration without nested inner iterations. The comePSn_JFNK and the comePSn codes are developed in the unified COupled Multiphysics Environment (COME).</p>
<p>By simulating the 2-D/3-D KAIST-3A pin-by-pin benchmark problems and the 2-D/3-D full-core pin-by-pin MOX/UOX models, the speedups of the comePSn_JFNK code are 6&#x2013;15 for the KAIST-3A benchmark problems and 15&#x2013;30 for the full-core MOX/UOX pin-by-pin models, which indicates the comePSn_JFNK code has significant efficiency advantage for complicated 3-D full-core pin-by-pin models. Further study is to improve the parallel efficiency on the massively parallel computers, to apply the parallel coarse mesh finite difference methods and the parallel diffusion synthetic acceleration method as preconditioners, and to extend the comePSn_JFNK method to solve the pin-by-pin multi-physics coupled problems.</p>
</sec>
</body>
<back>
<sec sec-type="data-availability" id="s5">
<title>Data availability statement</title>
<p>The original contributions presented in the study are included in the article/Supplementary Material, further inquiries can be directed to the corresponding author.</p>
</sec>
<sec id="s6">
<title>Author contributions</title>
<p>YZ: Software, modeling, validation, data analysis and original draft preparation. XZ: Conception, methodology, software, review, editing and supervision.</p>
</sec>
<sec id="s7">
<title>Funding</title>
<p>This research was funded by National Natural Science Foundation of China: 12005073; National Key Research and Development Program of China: 2018YFE0180900; National Key Research and Development Program of China: 2020YFB1901600; Project of Nuclear Power Technology Innovation Center of Science Technology and Industry for National Defense: HDLCXZX-2021-HD-033.</p>
</sec>
<sec sec-type="COI-statement" id="s8">
<title>Conflict of interest</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
<sec sec-type="disclaimer" id="s9">
<title>Publisher&#x2019;s note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Alcouffe</surname>
<given-names>R. E.</given-names>
</name>
<name>
<surname>Baker</surname>
<given-names>R. S.</given-names>
</name>
<name>
<surname>Dahl</surname>
<given-names>J. A.</given-names>
</name>
<name>
<surname>Davis</surname>
<given-names>E. J.</given-names>
</name>
<name>
<surname>Saller</surname>
<given-names>T. G.</given-names>
</name>
<name>
<surname>Turner</surname>
<given-names>S. A.</given-names>
</name>
</person-group> (<year>2005</year>). <article-title>Partisn: A time-dependent parallel neutral Particle transport code system</article-title>. <comment>LAUR-05-3925</comment> (<publisher-loc>Los Alamos, NM, USA</publisher-loc>: <publisher-name>Los Alamos National Laboratory</publisher-name>).</citation>
</ref>
<ref id="B2">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Bailey</surname>
<given-names>T. S.</given-names>
</name>
<name>
<surname>Falgout</surname>
<given-names>R. D.</given-names>
</name>
</person-group> &#x201c;<article-title>Analysis of massively parallel discrete-ordinates transport sweep algorithms with collisions</article-title>,&#x201d; in <conf-name>Proceedings of the International Conference on Mathematics, Computational Methods &#x26; Reactor Physics</conf-name>, <conf-loc>Saratoga Springs, NY, USA</conf-loc>, <conf-date>May 2009</conf-date>.</citation>
</ref>
<ref id="B3">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Baker</surname>
<given-names>R. S.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>An SN algorithm for modern architectures</article-title>. <source>Nucl. Sci. Eng.</source> <volume>185</volume>, <fpage>107</fpage>&#x2013;<lpage>116</lpage>. <pub-id pub-id-type="doi">10.13182/nse15-124</pub-id>
</citation>
</ref>
<ref id="B4">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Baker</surname>
<given-names>R. S.</given-names>
</name>
<name>
<surname>Koch</surname>
<given-names>K. R.</given-names>
</name>
</person-group> (<year>1998</year>). <article-title>An Sn algorithm for the massively parallel CM-200 computer</article-title>. <source>Nucl. Sci. Eng.</source> <volume>128</volume>, <fpage>312</fpage>&#x2013;<lpage>320</lpage>. <pub-id pub-id-type="doi">10.13182/nse98-1</pub-id>
</citation>
</ref>
<ref id="B5">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Carlson</surname>
<given-names>B. G.</given-names>
</name>
</person-group> (<year>1953</year>). <article-title>Solution of the transport equation by Sn approximations</article-title>. <comment>LA-1599</comment> (<publisher-loc>Los Alamos, NM, USA</publisher-loc>: <publisher-name>Los Alamos Scientific Laboratory Report</publisher-name>).</citation>
</ref>
<ref id="B6">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Cho</surname>
<given-names>N. Z.</given-names>
</name>
</person-group> (<year>2000</year>). <publisher-loc>Daejeon, South Korea</publisher-loc>: <publisher-name>Korea Advanced Institute of Science and Technology benchmark report</publisher-name>. <comment>Available at: <ext-link ext-link-type="uri" xlink:href="https://github.com/nzcho/Nurapt-Archives/tree/master/KAIST-Benchmark-Problems">https://github.com/nzcho/Nurapt-Archives/tree/master/KAIST-Benchmark-Problems</ext-link>.</comment> <source>Benchmark problem 3A: MOX fuel-loaded small PWR coreMOX Fuel Zoning, 7 Group Homog. Cells.</source>
</citation>
</ref>
<ref id="B7">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Eisenstat</surname>
<given-names>S. C.</given-names>
</name>
<name>
<surname>Walker</surname>
<given-names>H. F.</given-names>
</name>
</person-group> (<year>1996</year>). <article-title>Choosing the forcing terms in an inexact Newton method</article-title>. <source>SIAM J. Sci. Comput.</source> <volume>17</volume>, <fpage>16</fpage>&#x2013;<lpage>32</lpage>. <pub-id pub-id-type="doi">10.1137/0917003</pub-id>
</citation>
</ref>
<ref id="B8">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Eisenstat</surname>
<given-names>S. C.</given-names>
</name>
<name>
<surname>Walker</surname>
<given-names>H. F.</given-names>
</name>
</person-group> (<year>1994</year>). <article-title>Globally convergent inexact Newton methods</article-title>. <source>SIAM J. Optim.</source> <volume>4</volume>, <fpage>393</fpage>&#x2013;<lpage>422</lpage>. <pub-id pub-id-type="doi">10.1137/0804022</pub-id>
</citation>
</ref>
<ref id="B9">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Esmaili</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Kazeminejad</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Khalafi</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Mirvakili</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Subchannel analysis of annular fuel assembly using the preconditioned Jacobian-free Newton Krylov methods</article-title>. <source>Ann. Nucl. Energy</source> <volume>146</volume>, <fpage>107616</fpage>. <pub-id pub-id-type="doi">10.1016/j.anucene.2020.107616</pub-id>
</citation>
</ref>
<ref id="B10">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Evans</surname>
<given-names>T. M.</given-names>
</name>
<name>
<surname>Stafford</surname>
<given-names>A. S.</given-names>
</name>
<name>
<surname>Slaybaugh</surname>
<given-names>R. N.</given-names>
</name>
<name>
<surname>Clarno</surname>
<given-names>K. T.</given-names>
</name>
</person-group> (<year>2010</year>). <article-title>Denovo: A new three-dimensional parallel discrete ordinates code in scale</article-title>. <source>Nucl. Technol.</source> <volume>171</volume>, <fpage>171</fpage>&#x2013;<lpage>200</lpage>. <pub-id pub-id-type="doi">10.13182/nt171-171</pub-id>
</citation>
</ref>
<ref id="B11">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Gaston</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Newman</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Hansen</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Lebrun-Grandie</surname>
<given-names>D.</given-names>
</name>
</person-group> (<year>2009</year>). <article-title>Moose: A parallel computational framework for coupled systems of nonlinear equations</article-title>. <source>Nucl. Eng. Des.</source> <volume>239</volume>, <fpage>1768</fpage>&#x2013;<lpage>1778</lpage>. <pub-id pub-id-type="doi">10.1016/j.nucengdes.2009.05.021</pub-id>
</citation>
</ref>
<ref id="B12">
<citation citation-type="thesis">
<person-group person-group-type="author">
<name>
<surname>Gill</surname>
<given-names>D. F.</given-names>
</name>
</person-group> (<year>2009</year>). &#x201c;<article-title>Newton-Krylov methods for the solution of the k-eigenvalue problem in multigroup neutronics calculations</article-title>,&#x201d;. <comment>PhD thesis</comment> (<publisher-loc>Pennsylvania, PA, USA</publisher-loc>: <publisher-name>Pennsylvania State University</publisher-name>).</citation>
</ref>
<ref id="B13">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hajizadeh</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Kazeminejad</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Talebi</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Formulation of a fully implicit numerical scheme for simulation of two-phase flow in a vertical channel using the Drift-Flux Model</article-title>. <source>Prog. Nucl. Energy</source> <volume>103</volume>, <fpage>91</fpage>&#x2013;<lpage>105</lpage>. <pub-id pub-id-type="doi">10.1016/j.pnucene.2017.11.009</pub-id>
</citation>
</ref>
<ref id="B14">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hossain</surname>
<given-names>M. A.</given-names>
</name>
<name>
<surname>Alam</surname>
<given-names>J. M.</given-names>
</name>
</person-group> (<year>2012</year>). <article-title>Assessment of a symmetry-preserving JFNK method for atmospheric convection</article-title>. <source>Comput. Phys. Commun.</source> <volume>269</volume>, <fpage>108113</fpage>. <pub-id pub-id-type="doi">10.1016/j.cpc.2021.108113</pub-id>
</citation>
</ref>
<ref id="B15">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Knoll</surname>
<given-names>D. A.</given-names>
</name>
<name>
<surname>Keyes</surname>
<given-names>D. E.</given-names>
</name>
</person-group> (<year>2004</year>). <article-title>Jacobian-free Newton&#x2013;Krylov methods: A survey of approaches and applications</article-title>. <source>J. Comput. Phys.</source> <volume>193</volume>, <fpage>357</fpage>&#x2013;<lpage>397</lpage>. <pub-id pub-id-type="doi">10.1016/j.jcp.2003.08.010</pub-id>
</citation>
</ref>
<ref id="B16">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Knoll</surname>
<given-names>D. A.</given-names>
</name>
<name>
<surname>Park</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Newman</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>2011</year>). <article-title>Acceleration of k-eigenvalue/criticality calculations using the jacobian-free Newton-Krylov method</article-title>. <source>Nucl. Sci. Eng.</source> <volume>167</volume> (<issue>2</issue>), <fpage>133</fpage>&#x2013;<lpage>140</lpage>. <pub-id pub-id-type="doi">10.13182/nse09-89</pub-id>
</citation>
</ref>
<ref id="B17">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Longoni</surname>
<given-names>G.</given-names>
</name>
</person-group> (<year>2004</year>). <article-title>Advanced quadrature sets and acceleration and preconditioning techniques for the discrete ordinates method in parallel computing environments</article-title>. <comment>PhD Thesis</comment> (<publisher-loc>Gainesville, FL, USA</publisher-loc>: <publisher-name>University of Florida</publisher-name>).</citation>
</ref>
<ref id="B18">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Pawlowski</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Bartlett</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Belcourt</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Cannon</surname>
<given-names>S. R.</given-names>
</name>
<name>
<surname>Warren</surname>
<given-names>H. R.</given-names>
</name>
</person-group> (<year>2011</year>). <article-title>A theory manual for multi-physics code coupling in LIME, version 1.0</article-title>. <comment>SAND2011-2195</comment> (<publisher-loc>Albuquerque, NM, USA</publisher-loc>: <publisher-name>SAND Report</publisher-name>).</citation>
</ref>
<ref id="B19">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Saad</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Schultz</surname>
<given-names>M. H.</given-names>
</name>
</person-group> (<year>1986</year>). <article-title>Gmres: A generalized minimal residual algorithm for solving nonsymmetric linear systems</article-title>. <source>SIAM J. Sci. Stat. Comput.</source> <volume>7</volume>, <fpage>856</fpage>&#x2013;<lpage>869</lpage>. <pub-id pub-id-type="doi">10.1137/0907058</pub-id>
</citation>
</ref>
<ref id="B20">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Smith</surname>
<given-names>M. A.</given-names>
</name>
<name>
<surname>Lewis</surname>
<given-names>E. E.</given-names>
</name>
<name>
<surname>Na</surname>
<given-names>B. C.</given-names>
</name>
</person-group> (<year>2005</year>). <source>Benchmark on deterministic transport calculations without spatial homogenization: MOX fuel assembly 3-D extension case</source>. <publisher-loc>Paris, France</publisher-loc>: <publisher-name>Nuclear Energy Agency Organisation for Economic Co-Operation and Development, NEA/NSC/DOC</publisher-name>.</citation>
</ref>
<ref id="B21">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Turner</surname>
<given-names>J. A.</given-names>
</name>
<name>
<surname>Clarno</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Sieger</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Bartlett</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Collins</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Pawlowski</surname>
<given-names>R.</given-names>
</name>
<etal/>
</person-group> (<year>2016</year>). <article-title>The virtual environment for reactor applications (VERA): Design and architecture</article-title>. <source>J. Comput. Phys.</source> <volume>326</volume>, <fpage>544</fpage>&#x2013;<lpage>568</lpage>. <pub-id pub-id-type="doi">10.1016/j.jcp.2016.09.003</pub-id>
</citation>
</ref>
<ref id="B22">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Walker</surname>
<given-names>E. D.</given-names>
</name>
<name>
<surname>Collins</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Gehin</surname>
<given-names>J. C.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Low-order multiphysics coupling techniques for nuclear reactor applications</article-title>. <source>Ann. Nucl. Energy</source> <volume>132</volume>, <fpage>327</fpage>&#x2013;<lpage>338</lpage>. <pub-id pub-id-type="doi">10.1016/j.anucene.2019.04.022</pub-id>
</citation>
</ref>
<ref id="B23">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Xu</surname>
<given-names>L. F.</given-names>
</name>
<name>
<surname>Cao</surname>
<given-names>L. Z.</given-names>
</name>
<name>
<surname>Zheng</surname>
<given-names>Y. Q.</given-names>
</name>
<name>
<surname>Wu</surname>
<given-names>H.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Hybrid MPI-communication for the multi-angular SN parallel sweep on 3-D regular grids</article-title>. <source>Ann. Nucl. Energy</source> <volume>116</volume>, <fpage>407</fpage>&#x2013;<lpage>416</lpage>. <pub-id pub-id-type="doi">10.1016/j.anucene.2018.03.003</pub-id>
</citation>
</ref>
<ref id="B24">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Yaremchu</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Panteleev</surname>
<given-names>G.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>On the Jacobian approximation in sea ice models with viscous-plastic rheology</article-title>. <source>Ocean. Model. (Oxf).</source> <volume>177</volume>, <fpage>102078</fpage>. <pub-id pub-id-type="doi">10.1016/j.ocemod.2022.102078</pub-id>
</citation>
</ref>
<ref id="B25">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhang</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Zheng</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Zheng</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Calculation of the C5G7 3-D extension benchmark by ARES transport code</article-title>. <source>Nucl. Eng. Des.</source> <volume>318</volume>, <fpage>231</fpage>&#x2013;<lpage>238</lpage>. <pub-id pub-id-type="doi">10.1016/j.nucengdes.2017.04.011</pub-id>
</citation>
</ref>
<ref id="B26">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhou</surname>
<given-names>X. F.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>Jacobian-free Newton Krylov coarse mesh finite difference algorithm based on high-order nodal expansion method for three-dimensional nuclear reactor pin-by-pin multiphysics coupled models</article-title>. <source>Comput. Phys. Commun.</source> <volume>282</volume>, <fpage>108509</fpage>. <pub-id pub-id-type="doi">10.1016/j.cpc.2022.108509</pub-id>
</citation>
</ref>
<ref id="B27">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhou</surname>
<given-names>X. F.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Jacobian-free Newton Krylov two-node coarse mesh finite difference based on nodal expansion method</article-title>. <source>Nucl. Eng. Technol.</source> <volume>54</volume>, <fpage>3059</fpage>&#x2013;<lpage>3072</lpage>. <pub-id pub-id-type="doi">10.1016/j.net.2022.02.005</pub-id>
</citation>
</ref>
<ref id="B28">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhou</surname>
<given-names>X. F.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Operator split, Picard iteration and JFNK methods based on nonlinear CMFD for transient full core models in the coupling multiphysics environment</article-title>. <source>Ann. Nucl. Energy</source>. <comment>revised</comment>.</citation>
</ref>
<ref id="B29">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhou</surname>
<given-names>X. F.</given-names>
</name>
<name>
<surname>Zhong</surname>
<given-names>C. M.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>Y. Y.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Jacobian-free Newton Krylov two-node coarse mesh finite difference based on nodal expansion method for multiphysics coupled models</article-title>. <source>Ann. Nucl. Energy</source> <volume>168</volume>, <fpage>108915</fpage>. <pub-id pub-id-type="doi">10.1016/j.anucene.2021.108915</pub-id>
</citation>
</ref>
</ref-list>
</back>
</article>