From 66b9c9802d23557d62d6bdcd258cadcc526ee53b Mon Sep 17 00:00:00 2001 From: Bryan Herman Date: Sun, 28 Sep 2014 21:42:25 -0400 Subject: [PATCH] addressed @paulromano comments --- docs/source/methods/cmfd.rst | 194 ++++++------------------------- docs/source/usersguide/input.rst | 4 +- 2 files changed, 38 insertions(+), 160 deletions(-) diff --git a/docs/source/methods/cmfd.rst b/docs/source/methods/cmfd.rst index 78472df37d..3681df3b75 100644 --- a/docs/source/methods/cmfd.rst +++ b/docs/source/methods/cmfd.rst @@ -37,7 +37,7 @@ the direction as a superscript. Energy group indices represented by :math:`g` and :math:`h` are also listed as superscripts here. The group :math:`g` is the group of interest and, if present, :math:`h` is all groups. Finally, any parameter surrounded by :math:`\left\langle\cdot\right\rangle` represents a -tally quantity that can be edited from an MC solution. +tally quantity that can be edited from a Monte Carlo (MC) solution. ------ Theory @@ -83,7 +83,7 @@ In eq. :eq:`eq_neut_bal` the parameters are defined as: * :math:`\left\langle\overline{\overline\Sigma}_{t_{l,m,n}}^g \overline{\overline\phi}_{l,m,n}^g\Delta_l^u\Delta_m^v\Delta_n^w\right\rangle` --- volume-integrated total reaction rate over energy group :math:`g`. - * :math:`\left\langle\overline{\overline{\nu_s\Sigma}}_{s_{l,m,n}}^{h\rightarrow +* :math:`\left\langle\overline{\overline{\nu_s\Sigma}}_{s_{l,m,n}}^{h\rightarrow g} \overline{\overline\phi}_{l,m,n}^h\Delta_l^u\Delta_m^v\Delta_n^w\right\rangle` --- volume-integrated scattering production rate of neutrons that begin with @@ -98,7 +98,7 @@ In eq. :eq:`eq_neut_bal` the parameters are defined as: group :math:`h` that exit in group :math:`g`. Each quantity in :math:`\left\langle\cdot\right\rangle` represents a scalar value that -is obtained from an MC tally. A good verification step when using an MC is +is obtained from an MC tally. A good verification step when using an MC code is to make sure that tallies satisfy this balance equation within statistics. No NDA acceleration can be performed if the balance equation is not satisfied. @@ -110,7 +110,8 @@ illustrated as a flow chart below. After a batch of neutrons is simulated, NDA can take place. Each of the steps described above is described in detail in the following sections. -.. tikz:: Flow chart of NDA process +.. tikz:: Flow chart of NDA process. Note "XS" is used for cross section and + "DC" is used for diffusion coefficient. :libs: shapes, snakes, shadows, arrows, calc, decorations.markings, patterns, fit, matrix, spy :include: cmfd_tikz/cmfd_flow.tikz @@ -234,9 +235,9 @@ as [Hebert]_. These current/flux relationships are as follows: \beta_{l\pm1/2,m,n}^{u,g}\right)\Delta_l^u}\overline{\overline{\phi}}_{l,m,n}^{g}. In Eqs. :eq:`eq_cell_cell` and :eq:`eq_cell_bound`, the :math:`\pm` refers to -left (-:math:`x`) or right (+:math:`x`) surface in the :math:`x` direction, -back (-:math:`y`) or front (+:math:`y`) surface in the :math:`y` direction and -bottom (-:math:`z`) or top (+:math:`z`) surface in the :math:`z` direction. For +left (:math:`-x`) or right (:math:`+x`) surface in the :math:`x` direction, +back (:math:`-y`) or front (:math:`+y`) surface in the :math:`y` direction and +bottom (:math:`-z`) or top (:math:`+z`) surface in the :math:`z` direction. For cell-to-boundary coupling, a general albedo, :math:`\beta_{l\pm1/2,m,n}^{u,g}`, is used. The albedo is defined as the ratio of incoming (:math:`-` superscript) to outgoing (:math:`+` superscript) partial current on any surface represented @@ -395,7 +396,7 @@ information: It should be noted that for more difficult simulations (e.g., light water reactors), there are other options available to users such as tally resetting parameters, effective down-scatter usage, tally estimator, etc. For more -information please see [Herman_Thesis]_. +information please see :ref:`usersguide_cmfd`. Of the options described above, the optional acceleration subset region is an uncommon feature. Because OpenMC only has a structured Cartesian mesh, mesh @@ -425,26 +426,26 @@ in mesh cells far away from the core. :libs: shapes, snakes, shadows, arrows, calc, decorations.markings, patterns, fit, matrix, spy :include: cmfd_tikz/meshfig.tikz -During an MC simulation, CMFD tallies are accumulated. The basic tallies -needed are listed in Table :ref:`tab_tally`. Each tally is performed on a -spatial and energy mesh basis. The surface area-integrated net current is -tallied on every surface of the mesh. OpenMC tally objects are created by -the CMFD code internally, and cross sections are calculated at each -CMFD feedback iteration. The first CMFD iteration, controlled by the -user, occurs just after tallies are communicated to the master processor. Once -tallies are collapsed, cross sections, diffusion coefficients and equivalence -parameters are calculated. This is performed only on the acceleration region if -that option has been activated by the user. Once all diffusion parameters -are calculated, CMFD matrices are formed where energy groups are the inner -most iteration index. In OpenMC, compressed row storage sparse matrices are -used due to the sparsity of CMFD operators. An example of this sparsity is -shown for the 3-D BEAVRS model in figures :ref:`fig_loss` and :ref:`fig_prod`. These matrices -represent an assembly radial mesh, 24 cell mesh in the axial direction and two -energy groups. The loss matrix is 99.92% sparse and the production matrix is -99.99% sparse. Although the loss matrix looks like it is tridiagonal, it is -really a seven banded matrix with a block diagonal matrix for scattering. The -production matrix is a :math:`2\times 2` block diagonal; however, zeros are present -because no fission neutrons appear with energies in the thermal group. +During an MC simulation, CMFD tallies are accumulated. The basic tallies needed +are listed in Table :ref:`tab_tally`. Each tally is performed on a spatial and +energy mesh basis. The surface area-integrated net current is tallied on every +surface of the mesh. OpenMC tally objects are created by the CMFD code +internally, and cross sections are calculated at each CMFD feedback iteration. +The first CMFD iteration, controlled by the user, occurs just after tallies are +communicated to the master processor. Once tallies are collapsed, cross +sections, diffusion coefficients and equivalence parameters are calculated. This +is performed only on the acceleration region if that option has been activated +by the user. Once all diffusion parameters are calculated, CMFD matrices are +formed where energy groups are the inner most iteration index. In OpenMC, +compressed row storage sparse matrices are used due to the sparsity of CMFD +operators. An example of this sparsity is shown for the 3-D BEAVRS model in +figures :ref:`fig_loss` and :ref:`fig_prod` [BEAVRS]_. These matrices represent +an assembly radial mesh, 24 cell mesh in the axial direction and two energy +groups. The loss matrix is 99.92% sparse and the production matrix is 99.99% +sparse. Although the loss matrix looks like it is tridiagonal, it is really a +seven banded matrix with a block diagonal matrix for scattering. The production +matrix is a :math:`2\times 2` block diagonal; however, zeros are present because +no fission neutrons appear with energies in the thermal group. .. _tab_tally: @@ -518,145 +519,20 @@ source distribution to the current number of neutrons in each mesh. It is straightforward to compute the CMFD number of neutrons because it is the product between the total starting initial weight of neutrons and the CMFD normalized fission source distribution. To compute the number of neutrons from -the current MC source, a subroutine was implemented to sum the statistical +the current MC source, OpenMC sums the statistical weights of neutrons from the source bank on a given spatial and energy mesh. Once weight adjustment factors were calculated, each neutron's statistical weight in the source bank was modified according to its location and energy. - -------------------- -Toy Problem Example -------------------- - -Before applying CMFD to a large reactor, a simple 1-D slab toy problem was -analyzed to understand how CMFD works. Table :ref:`tab_1Dtoyinput` presents -data used to construct this problem. For MFD, the mesh was 2 cm over the -geometry with one energy group. A comparison of fission source convergence -using Shannon entropy is shown in figure :ref:`fig_1Dentropy`. The figure -illustrates that it takes about 150 FSGs (equivalent to batches) to converge -the source with standard MC without CMFD. For the case with CMFD, it is -activated at batch 11 and directly affects the fission source for batch 12. -Convergence of the fission source is almost immediately reached. - -.. _tab_1Dtoyinput: - -.. table:: Input data for 1-D slab toy problem - - +--------------------------------------------+-------------------+ - +--------------------------------------------+-------------------+ - | Slab Length | 200 cm | - +============================================+===================+ - | Homogeneous material of :math:`\rm UO_2` | 19 g/cc density | - +--------------------------------------------+-------------------+ - | U-235 weight percent | 0.21 | - +--------------------------------------------+-------------------+ - | U-238 weight percent | 0.68 | - +--------------------------------------------+-------------------+ - | O-16 weight percent | 0.11 | - +--------------------------------------------+-------------------+ - | Number of particles per | 4,000,000 | - +--------------------------------------------+-------------------+ - | Number of inactive | 400 | - +--------------------------------------------+-------------------+ - -| -| - -.. _fig_1Dentropy: - -.. figure:: ../_images/entropy_1Dslab.png - :scale: 10 - - Source convergence comparison for 1-D slab toy problem - -To further show this convergence, source distributions were edited at various -batches and compared. Figures :ref:`fig_toy6` to :ref:`fig_toy200` compare the -OpenMC source distribution from the no CMFD case, the OpenMC source -distribution from the CMFD case and the CMFD source distribution for six -different batches. Figure :ref:`fig_toy6` compares the distributions at batch -6. Here, CMFD has not been activated yet, so it is just plotted at zero. As -expected, the OpenMC source distributions from the two cases are equal because -CMFD has not yet affected it. From this plot, one can also see that the source -distribution is very flat because the initial guess was uniform over space. -Because the dominance ratio is close to unity, the source will slowly converge -to a cosine-like shape. Results from batch 10 are presented in figure -:ref:`fig_toy10`. The same information is shown in this plot, but the source is -slightly more converged. It is plotted here to show how little the source -changes in four batches. Batch 11 is the first time a CMFD source is -calculated. Right away, it appears as a smooth cosine-like shape as shown in -figure :ref:`fig_toy11`. Thus, when CMFD is fed back, its source shape will -modify the OpenMC source bank to preserve this distribution on the CMFD mesh. -On the next batch, shown in :ref:`fig_toy12`, the OpenMC source and the CMFD -source from the CMFD case match, while the OpenMC source from the no CMFD case -lags behind. Two more batches are shown in figure :ref:`fig_toy40` and figure -:ref:`fig_toy200` to illustrate that all source distributions eventually line -up at batch 200. - -.. _fig_toy6: - -.. figure:: ../_images/statepoint6.png - :scale: 10 - - Source at FSG 6 - -| - -.. _fig_toy10: - -.. figure:: ../_images/statepoint10.png - :scale: 10 - - Source at FSG 10 - -| - -.. _fig_toy11: - -.. figure:: ../_images/statepoint11.png - :scale: 10 - - Source at FSG 11 - -| - -.. _fig_toy12: - -.. figure:: ../_images/statepoint12.png - :scale: 10 - - Source at FSG 12 - -| - -.. _fig_toy40: - -.. figure:: ../_images/statepoint40.png - :scale: 10 - - Source at FSG 40 - -| - -.. _fig_toy200: - -.. figure:: ../_images/statepoint200.png - :scale: 10 - - Source at FSG 200 - -| - -This simple illustration shows the power of NDA. Because of the nature of the -diffusion equation, it can propagate and dampen higher harmonics much faster -than the MC transport solution. It should be noted here that this is a very -simplified problem where the dominance ratio was increased by changing the size -of the slab. Also, the source distribution is very smooth and there was only -one homogeneous material. The problem becomes more difficult to solve when -expanding to more spatial dimensions and complex materials. +Examples of CMFD simulations using OpenMC can be found in [Herman_Thesis]_. ---------- References ---------- +.. [BEAVRS] Nick Horelik, Bryan Herman. *Benchmark for Evaluation And Verification of Reactor + Simulations*. Massachusetts Institute of Technology, http://crpg.mit.edu/pub/beavrs + , 2013. + .. [Gill] Daniel F. Gill. *Newton-Krylov methods for the solution of the k-eigenvalue problem in multigroup neutronics calculations*. Ph.D. thesis, Pennsylvania State University, 2010. diff --git a/docs/source/usersguide/input.rst b/docs/source/usersguide/input.rst index cbe06e5a0d..cf403e8da3 100644 --- a/docs/source/usersguide/input.rst +++ b/docs/source/usersguide/input.rst @@ -1301,6 +1301,8 @@ attributes or sub-elements. These are not used in "voxel" plots: *Default*: None +.. _usersguide_cmfd: + ------------------------------ CMFD Specification -- cmfd.xml ------------------------------ @@ -1361,7 +1363,7 @@ It can be turned on with "true" and off with "false". *Default*: false ```` Element --------------------- +------------------------------------ The ```` element specifies two parameters. The first is the absolute inner tolerance for Gauss-Seidel iterations when performing CMFD