From 660f203db77d1df767b93cdc6619ca2b259ce08e Mon Sep 17 00:00:00 2001 From: Ilham Variansyah Date: Mon, 24 Aug 2026 18:30:13 +0700 Subject: [PATCH] add vvp docs --- CHANGELOG.md | 1 + .../developer_guide/contributing/index.rst | 2 + .../contributing/unit_testing.rst | 10 ++ .../source/developer_guide/release_policy.rst | 7 + docs/source/index.rst | 1 + docs/source/project/index.rst | 8 +- docs/source/project/vvp/index.rst | 79 ++++++++ docs/source/project/vvp/performance/index.rst | 8 + docs/source/project/vvp/validation/index.rst | 8 + .../vvp/verification/_derivations/azurv1.inc | 87 +++++++++ .../_derivations/code_to_code.inc | 35 ++++ .../_derivations/shem361_eigenvalue.inc | 36 ++++ .../_derivations/shem361_fixed.inc | 39 ++++ .../_derivations/shem361_transient.inc | 83 +++++++++ .../fixed_source/azurv1-basic_techniques.rst | 62 +++++++ .../fixed_source/azurv1-census-tally.rst | 63 +++++++ .../neutron/fixed_source/azurv1-census.rst | 62 +++++++ .../fixed_source/azurv1-weight_windows.rst | 82 +++++++++ .../neutron/fixed_source/azurv1.rst | 62 +++++++ .../neutron/fixed_source/azurv1_sub.rst | 58 ++++++ .../neutron/fixed_source/azurv1_super.rst | 58 ++++++ .../inf_shem361-weight_windows.rst | 73 ++++++++ .../neutron/fixed_source/inf_shem361.rst | 62 +++++++ .../fixed_source/inf_shem361_td-census.rst | 69 +++++++ .../neutron/fixed_source/inf_shem361_td.rst | 68 +++++++ .../fixed_source/mms_two_group_slab.rst | 153 ++++++++++++++++ .../analytical/neutron/fixed_source/reed.rst | 160 +++++++++++++++++ .../neutron/fixed_source/slab_absorbium.rst | 137 ++++++++++++++ .../neutron/fixed_source/slab_isobeam_td.rst | 106 +++++++++++ .../k_eigenvalue/inf_shem361_subcritical.rst | 86 +++++++++ .../inf_shem361_supercritical.rst | 86 +++++++++ .../neutron/k_eigenvalue/kornreich.rst | 169 ++++++++++++++++++ .../neutron/k_eigenvalue/one_group_slab.rst | 150 ++++++++++++++++ .../code_to_code/neutron/c5g7-4phase.rst | 89 +++++++++ .../code_to_code/neutron/kobayashi.rst | 99 ++++++++++ .../source/project/vvp/verification/index.rst | 108 +++++++++++ 36 files changed, 2464 insertions(+), 2 deletions(-) create mode 100644 docs/source/developer_guide/contributing/unit_testing.rst create mode 100644 docs/source/project/vvp/index.rst create mode 100644 docs/source/project/vvp/performance/index.rst create mode 100644 docs/source/project/vvp/validation/index.rst create mode 100644 docs/source/project/vvp/verification/_derivations/azurv1.inc create mode 100644 docs/source/project/vvp/verification/_derivations/code_to_code.inc create mode 100644 docs/source/project/vvp/verification/_derivations/shem361_eigenvalue.inc create mode 100644 docs/source/project/vvp/verification/_derivations/shem361_fixed.inc create mode 100644 docs/source/project/vvp/verification/_derivations/shem361_transient.inc create mode 100644 docs/source/project/vvp/verification/analytical/neutron/fixed_source/azurv1-basic_techniques.rst create mode 100644 docs/source/project/vvp/verification/analytical/neutron/fixed_source/azurv1-census-tally.rst create mode 100644 docs/source/project/vvp/verification/analytical/neutron/fixed_source/azurv1-census.rst create mode 100644 docs/source/project/vvp/verification/analytical/neutron/fixed_source/azurv1-weight_windows.rst create mode 100644 docs/source/project/vvp/verification/analytical/neutron/fixed_source/azurv1.rst create mode 100644 docs/source/project/vvp/verification/analytical/neutron/fixed_source/azurv1_sub.rst create mode 100644 docs/source/project/vvp/verification/analytical/neutron/fixed_source/azurv1_super.rst create mode 100644 docs/source/project/vvp/verification/analytical/neutron/fixed_source/inf_shem361-weight_windows.rst create mode 100644 docs/source/project/vvp/verification/analytical/neutron/fixed_source/inf_shem361.rst create mode 100644 docs/source/project/vvp/verification/analytical/neutron/fixed_source/inf_shem361_td-census.rst create mode 100644 docs/source/project/vvp/verification/analytical/neutron/fixed_source/inf_shem361_td.rst create mode 100644 docs/source/project/vvp/verification/analytical/neutron/fixed_source/mms_two_group_slab.rst create mode 100644 docs/source/project/vvp/verification/analytical/neutron/fixed_source/reed.rst create mode 100644 docs/source/project/vvp/verification/analytical/neutron/fixed_source/slab_absorbium.rst create mode 100644 docs/source/project/vvp/verification/analytical/neutron/fixed_source/slab_isobeam_td.rst create mode 100644 docs/source/project/vvp/verification/analytical/neutron/k_eigenvalue/inf_shem361_subcritical.rst create mode 100644 docs/source/project/vvp/verification/analytical/neutron/k_eigenvalue/inf_shem361_supercritical.rst create mode 100644 docs/source/project/vvp/verification/analytical/neutron/k_eigenvalue/kornreich.rst create mode 100644 docs/source/project/vvp/verification/analytical/neutron/k_eigenvalue/one_group_slab.rst create mode 100644 docs/source/project/vvp/verification/code_to_code/neutron/c5g7-4phase.rst create mode 100644 docs/source/project/vvp/verification/code_to_code/neutron/kobayashi.rst create mode 100644 docs/source/project/vvp/verification/index.rst diff --git a/CHANGELOG.md b/CHANGELOG.md index 083037ee9..6fe29c9c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/2.0.0/), - Add piece-wise linear spatial distribution for source definition, from [@ilhamv] - Add overriding option N_active, from [@ilhamv] +- Add MC/DC-VVP project documentation with verification case narratives, published results, and VVP result-generation and publication steps in the release checklist, from [@ilhamv] ### Changed diff --git a/docs/source/developer_guide/contributing/index.rst b/docs/source/developer_guide/contributing/index.rst index 18a049693..0bcd2bcad 100644 --- a/docs/source/developer_guide/contributing/index.rst +++ b/docs/source/developer_guide/contributing/index.rst @@ -9,6 +9,7 @@ It is intended for both occasional contributors and project maintainers. Start with the setup steps below. Use :doc:`continuous_integration` to understand automated checks and :doc:`container_development` when developing in the project container. +Use :doc:`unit_testing` for the role and organization of focused component tests. Use :doc:`example_validation` when changing the public API or example problems. Read :doc:`pull_requests` before preparing a contribution. For software architecture and documentation practices, see the :doc:`../index`. @@ -32,6 +33,7 @@ Development Workflow continuous_integration container_development + unit_testing example_validation pull_requests diff --git a/docs/source/developer_guide/contributing/unit_testing.rst b/docs/source/developer_guide/contributing/unit_testing.rst new file mode 100644 index 000000000..c52f0842f --- /dev/null +++ b/docs/source/developer_guide/contributing/unit_testing.rst @@ -0,0 +1,10 @@ +.. _developer_unit_testing: + +============ +Unit Testing +============ + +Unit tests provide focused verification of MC/DC functions, data transformations, interfaces, and edge cases in isolation. +They are maintained with the MC/DC codebase and are separate from :doc:`MC/DC's Verification, Validation, and Performance (VVP) <../../project/vvp/index>`, which tests complete simulations through full-transport problems and convergence studies. + +This page will document the organization, scope, and development practices of the MC/DC unit-test suite. diff --git a/docs/source/developer_guide/release_policy.rst b/docs/source/developer_guide/release_policy.rst index f1c79f630..fcf0fcdc5 100644 --- a/docs/source/developer_guide/release_policy.rst +++ b/docs/source/developer_guide/release_policy.rst @@ -95,6 +95,10 @@ Prepare the Release #. Confirm whether the release changes the supported Python versions. If it does, update ``pyproject.toml``, the compatibility workflows, installation documentation, and ``CHANGELOG.md``. #. Confirm the required local checks, continuous-integration workflows, and distribution artifact tests pass on the release candidate; resolve any dependency incompatibilities they expose and update ``pyproject.toml`` and ``CHANGELOG.md`` as needed. +#. Run the applicable `MC/DC-VVP campaign `_ with the release candidate and the corresponding MC/DC-VVP version. + Process the completed suites and review their convergence, reference, and comparison results for unexpected behavior. +#. Run ``python prepare_release.py`` in MC/DC-VVP to collect the processed PNG figures and GIF animations into its flat ``release/`` asset directory. + Confirm that the prepared assets cover the documented VVP cases and that their names match the links used by the MC/DC documentation. Integrate the Release ^^^^^^^^^^^^^^^^^^^^^ @@ -122,6 +126,9 @@ Publish from Main * **Release label:** select **Latest**. * **Finish:** click **Publish release** when creating the release, or **Update release** when editing an existing release. +#. Replace the assets attached to the mutable `VVP results release `_ with the contents of the prepared MC/DC-VVP ``release/`` directory. + Update its release notes to identify the MC/DC and MC/DC-VVP versions used for the published campaign. +#. Confirm that every VVP figure and animation referenced by the documentation is available from the ``vvp-results`` release and renders on its case page. #. Confirm that the automatically triggered `Publish Python Package to PyPI `_ and `Check citation metadata `_ workflows complete successfully, and that the release is available from the `stable Read the Docs site `_. #. Smoke-test the published PyPI package in a clean environment with ``python -m pip install "mcdc==X.Y.Z"``, then run a minimal MC/DC simulation. diff --git a/docs/source/index.rst b/docs/source/index.rst index 009c122a2..f3ab19833 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -74,6 +74,7 @@ More resources -------------- - Learn from complete input decks in :doc:`user_guide/examples/index`. +- Review the :doc:`MC/DC verification, validation, and performance (VVP)` evidence. - Explore the ongoing :doc:`CARRE research program `, its collaboration opportunities, and the :doc:`MC/DC publication record `. - Follow the contribution workflow in :doc:`developer_guide/contributing/index`. diff --git a/docs/source/project/index.rst b/docs/source/project/index.rst index a72e5e48f..b727734fb 100644 --- a/docs/source/project/index.rst +++ b/docs/source/project/index.rst @@ -4,11 +4,15 @@ Project ======= -The Project pages present the research programs shaping MC/DC, the capabilities under active development, and the publications documenting this work. -MC/DC is currently developed as part of the `Center for Advancing the Radiation Resilience of Electronics (CARRE) `_ and builds on its origins in the `Center for Exascale Monte Carlo Neutron Transport (CEMeNT) `_. +The Project pages present the research programs shaping MC/DC, the evidence supporting its development, and the publications documenting the work. + +The :doc:`CARRE ` page describes MC/DC's role in the Center for Advancing the Radiation Resilience of Electronics and its foundation in the Center for Exascale Monte Carlo Neutron Transport. +The :doc:`Verification, Validation, and Performance ` pages explain how MC/DC is assessed and present the published VVP results. +The :doc:`Publications ` page collects research associated with MC/DC and its past and ongoing research programs. .. toctree:: :maxdepth: 1 carre + vvp/index publications diff --git a/docs/source/project/vvp/index.rst b/docs/source/project/vvp/index.rst new file mode 100644 index 000000000..89a01579c --- /dev/null +++ b/docs/source/project/vvp/index.rst @@ -0,0 +1,79 @@ +.. _project_vvp: + +========================================= +Verification, Validation, and Performance +========================================= + +`MC/DC Verification, Validation, and Performance (MC/DC-VVP) `_ provides the evidence used to assess the correctness, physical credibility, and computational behavior of MC/DC. +The campaigns are maintained alongside MC/DC so that repeatable systematic problems exercise major code changes. +VVP focuses on full-transport problems that test complete simulations, complementing the component-level verification provided separately by :doc:`unit tests <../../developer_guide/contributing/unit_testing>`. + + +Three kinds of evidence +----------------------- + +There are three kinds of evidence: verification, validation, and performance. + +1. **Verification** asks whether MC/DC solves its stated mathematical problems correctly. + + a. **Analytical verification** compares MC/DC with an analytical, semi-analytical, or manufactured reference solution and checks for the expected statistical convergence rate. + + b. **Code-to-code verification** compares independently implemented transport codes and checks whether their relative differences decrease at the expected Monte Carlo rate. + Agreement between codes increases confidence but does not establish correctness because the codes may share assumptions or biases. + +2. **Validation** asks whether an MC/DC model reproduces experimental observations within the relevant measurement, model, and nuclear-data uncertainties. + Validation assesses the combined physical model, data, and implementation against experimental evidence. + +3. **Performance** studies measure quantities such as runtime, throughput, memory use, and parallel scalability. + They characterize computational efficiency separately from numerical correctness and physical fidelity. + +The development campaign currently reports neutron-transport verification. +Validation and performance results will be added as their suites mature. + +Organization +------------ + +MC/DC-VVP uses **suite**, **case**, and **task** as its standard hierarchy. + +.. code-block:: text + + suite + └── case + └── task + +A **suite** is a related collection of VVP problems that shares a launch and processing workflow. +A **case** is one physical or mathematical problem definition together with its model, reference, and result-processing logic. +A **task** is one execution of a case at one sampling level, such as a selected source-particle count or number of active eigenvalue cycles. + +A suite answers a broad verification, validation, or performance question, a case exercises a particular problem and capability set, and repeated tasks expose how its result changes with sampling effort. + +For example, the analytical neutron fixed-source verification suite contains the AZURV1 case, which is executed as a sequence of source-particle-count tasks: + +.. code-block:: text + + analytical neutron fixed-source suite + └── AZURV1 case + ├── task: N_particle = 100,000 + ├── task: N_particle = 215,443 + ├── ... + └── task: N_particle = 10,000,000 + +This example describes verification, where repeated sampling levels reveal an error-convergence trend. +The same hierarchy applies to validation and performance, but their tasks will likely represent different variations, such as experimental configurations for validation or hardware and scaling points for performance. + +Current status and next steps +----------------------------- + +The :doc:`verification program ` currently covers analytical and code-to-code neutron transport. +Each case page presents its problem definition, reference solution, convergence study, and published results as one narrative. +The figures and animations are loaded from the rolling `VVP results release `_, which is updated when a new MC/DC campaign is published. +The initial result set was generated from the development branches in preparation for MC/DC v0.16.0. + +Future campaigns will extend the program with :doc:`validation ` against experimental observations and :doc:`performance ` studies of computational efficiency and scalability. + +.. toctree:: + :hidden: + + verification/index + validation/index + performance/index diff --git a/docs/source/project/vvp/performance/index.rst b/docs/source/project/vvp/performance/index.rst new file mode 100644 index 000000000..ad75a4b24 --- /dev/null +++ b/docs/source/project/vvp/performance/index.rst @@ -0,0 +1,8 @@ +.. _project_vvp_performance: + +=========== +Performance +=========== + +Performance studies characterize computational efficiency separately from numerical correctness and physical fidelity. +This section will report problem and hardware configurations together with runtime, throughput, memory use, and parallel-scaling results when the performance suites mature. diff --git a/docs/source/project/vvp/validation/index.rst b/docs/source/project/vvp/validation/index.rst new file mode 100644 index 000000000..562feb840 --- /dev/null +++ b/docs/source/project/vvp/validation/index.rst @@ -0,0 +1,8 @@ +.. _project_vvp_validation: + +========== +Validation +========== + +Validation assesses whether an MC/DC model reproduces experimental observations within the relevant measurement, model, and nuclear-data uncertainties. +This section will present each experimental configuration, its computational model and data, the measured quantities, and the resulting comparison when the validation suites mature. diff --git a/docs/source/project/vvp/verification/_derivations/azurv1.inc b/docs/source/project/vvp/verification/_derivations/azurv1.inc new file mode 100644 index 000000000..9a0fa4f89 --- /dev/null +++ b/docs/source/project/vvp/verification/_derivations/azurv1.inc @@ -0,0 +1,87 @@ +With unit neutron speed and unit total cross section, the one-group angular flux satisfies + +.. math:: + + \frac{\partial \psi}{\partial t} + +\mu\frac{\partial \psi}{\partial x} + +\psi + =\frac{c}{2}\phi, + \qquad + \phi(x,t)=\int_{-1}^{1}\psi(x,\mu,t)\,d\mu, + +with the isotropic pulse represented by + +.. math:: + + \psi(x,\mu,0^+)=\frac{1}{2}\delta(x). + +The effective production ratio is + +.. math:: + + c=\frac{\Sigma_s+\nu\Sigma_f}{\Sigma_t}. + +Fourier transformation in space with wavenumber :math:`p` and Laplace transformation in time with variable :math:`s` give + +.. math:: + + \widetilde{\psi}(p,\mu,s) + =\frac{1+c\widetilde{\phi}(p,s)} + {2(s+1+ip\mu)}. + +Integrating over direction defines + +.. math:: + + L(p,s) + =\frac{1}{2}\int_{-1}^{1}\frac{d\mu}{s+1+ip\mu} + =\frac{1}{2ip} + \ln\left(\frac{s+1+ip}{s+1-ip}\right), + +so the transformed scalar flux is + +.. math:: + + \widetilde{\phi}(p,s)=\frac{L(p,s)}{1-cL(p,s)}. + +Ganapol's inversion of these transforms can be written for :math:`|x|` → Analytical → Neutron → Fixed-source suite → AZURV1 variants → Basic variance reduction + +**Case files:** `MC/DC-VVP case folder `_ + +Problem setup +------------- + +This case retains the critical :doc:`azurv1` physical problem while enabling three general variance-reduction techniques. +Implicit capture reduces particle weight instead of terminating histories at capture events, weighted emission targets an emitted weight of 0.5, and global weight roulette uses a threshold of 0.75 with surviving particles restored to weight 1.0. + +Because the analog and variance-reduced cases share the same source, transport data, and space-time tally, the analytical comparison tests whether the weight transformations remain unbiased throughout the transient. + +Exercised features +------------------ + +- Critical AZURV1 transient transport and space-time flux tallying. +- Implicit capture through continuous particle-weight reduction. +- Weighted emission at scattering and fission events. +- Global weight roulette for low-weight particles. +- Combined variance-reduction weight accounting. + +Mathematical derivation +----------------------- + +The variance-reduction techniques do not change the expected transport equation, so the reference uses :math:`c=1` in the critical solution derived below. + +.. include:: ../../../_derivations/azurv1.inc + +Implicit capture, weighted emission, and roulette must reproduce these same bin-averaged expectations despite changing individual history weights and paths. + +Results +------- + +.. grid:: 1 2 2 2 + :gutter: 2 + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--convergence--azurv1-basic_techniques_flux.png + :alt: Flux convergence for AZURV1 with basic variance-reduction techniques. + + Relative space-time flux error with all three techniques enabled. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--comparison--azurv1-basic_techniques_flux.gif + :alt: Animated flux comparison for AZURV1 with basic variance reduction. + + Highest-statistics variance-reduced solution and analytical reference. + +The errors decrease without a persistent offset, supporting unbiased implementation of implicit capture, weighted emission, and global weight roulette in combination. + +Reference +--------- + +- B. D. Ganapol, R. S. Baker, J. A. Dahl, and R. E. Alcouffe, `Homogeneous Infinite Media Time-Dependent Analytical Benchmarks `_, LA-UR-01-1854, 2001. diff --git a/docs/source/project/vvp/verification/analytical/neutron/fixed_source/azurv1-census-tally.rst b/docs/source/project/vvp/verification/analytical/neutron/fixed_source/azurv1-census-tally.rst new file mode 100644 index 000000000..0ebdbb41e --- /dev/null +++ b/docs/source/project/vvp/verification/analytical/neutron/fixed_source/azurv1-census-tally.rst @@ -0,0 +1,63 @@ +.. _project_vvp_fixed_source_azurv1_census_tally: + +==================================== +AZURV1 with Census-Based Tallying +==================================== + +**VVP map:** :doc:`Verification <../../../index>` → Analytical → Neutron → Fixed-source suite → AZURV1 variants → Census-based tallying + +**Case files:** `MC/DC-VVP case folder `_ + +Problem setup +------------- + +This variant uses the critical :doc:`azurv1` model with censuses at times 5, 10, 15, and 20. +Tallying is performed in census-length chunks, with five unit-width time bins collected during each interval and recombined into the full 20-bin result during processing. +Population control is applied to the census bank between intervals. + +The study spans :math:`10^4` through :math:`10^6` source particles. +It specifically tests tally allocation, indexing, normalization, and recombination when one physical transient is divided into multiple census executions. + +Exercised features +------------------ + +- Critical AZURV1 transient transport with time censuses. +- Population control across census intervals. +- Interval-local time-tally allocation and indexing. +- Recombination and normalization of independently accumulated tally segments. + +Mathematical derivation +----------------------- + +The tally segmentation does not change the physical equation, so the reference uses :math:`c=1` in the uninterrupted critical solution derived below. + +.. include:: ../../../_derivations/azurv1.inc + +Each recombined MC/DC bin is compared directly with the corresponding double integral, including bins on both sides of every census boundary. + +Results +------- + +.. grid:: 1 2 2 2 + :gutter: 2 + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--convergence--azurv1-census-tally_flux.png + :alt: Flux convergence for AZURV1 with census-based tallying. + + Relative error of the recombined space-time tally. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--comparison--azurv1-census-tally_flux.gif + :alt: Animated flux comparison for AZURV1 with census-based tallying. + + Highest-statistics recombined tally and analytical reference. + +Both the global and maximum errors decrease with sampling effort, demonstrating that the interval tallies are recombined with the correct shape and normalization. + +Reference +--------- + +- B. D. Ganapol, R. S. Baker, J. A. Dahl, and R. E. Alcouffe, `Homogeneous Infinite Media Time-Dependent Analytical Benchmarks `_, LA-UR-01-1854, 2001. diff --git a/docs/source/project/vvp/verification/analytical/neutron/fixed_source/azurv1-census.rst b/docs/source/project/vvp/verification/analytical/neutron/fixed_source/azurv1-census.rst new file mode 100644 index 000000000..a6782ad27 --- /dev/null +++ b/docs/source/project/vvp/verification/analytical/neutron/fixed_source/azurv1-census.rst @@ -0,0 +1,62 @@ +.. _project_vvp_fixed_source_azurv1_census: + +========================== +AZURV1 with Time Censuses +========================== + +**VVP map:** :doc:`Verification <../../../index>` → Analytical → Neutron → Fixed-source suite → AZURV1 variants → Time censuses + +**Case files:** `MC/DC-VVP case folder `_ + +Problem setup +------------- + +This case preserves the critical physics, source, and space-time tally of :doc:`azurv1` while introducing time censuses at every integer time from 1 through 19. +Particles crossing a census time are stored and become the source population for the following interval. +Population control regulates that bank between intervals, and enlarged census and source-bank buffers accommodate transient fluctuations. + +The case verifies that repeatedly stopping, storing, redistributing, and restarting histories preserves the physical solution across the complete transient. + +Exercised features +------------------ + +- Critical AZURV1 transient transport and space-time flux tallying. +- Repeated time censuses and census-bank persistence. +- Population control and particle redistribution between census intervals. +- Source- and census-bank buffer management. + +Mathematical derivation +----------------------- + +The census algorithm does not change the physical equation, so the reference uses :math:`c=1` in the uninterrupted critical solution derived below. + +.. include:: ../../../_derivations/azurv1.inc + +The resulting bin averages are evaluated across the census boundaries without modification. + +Results +------- + +.. grid:: 1 2 2 2 + :gutter: 2 + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--convergence--azurv1-census_flux.png + :alt: Flux convergence for AZURV1 with time censuses. + + Relative space-time flux error with 19 census boundaries. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--comparison--azurv1-census_flux.gif + :alt: Animated flux comparison for AZURV1 with time censuses. + + Highest-statistics censused solution and analytical reference. + +The expected inverse-square-root trend is retained, and the animation shows no visible discontinuity or bias at the census times. + +Reference +--------- + +- B. D. Ganapol, R. S. Baker, J. A. Dahl, and R. E. Alcouffe, `Homogeneous Infinite Media Time-Dependent Analytical Benchmarks `_, LA-UR-01-1854, 2001. diff --git a/docs/source/project/vvp/verification/analytical/neutron/fixed_source/azurv1-weight_windows.rst b/docs/source/project/vvp/verification/analytical/neutron/fixed_source/azurv1-weight_windows.rst new file mode 100644 index 000000000..badbeff42 --- /dev/null +++ b/docs/source/project/vvp/verification/analytical/neutron/fixed_source/azurv1-weight_windows.rst @@ -0,0 +1,82 @@ +.. _project_vvp_fixed_source_azurv1_weight_windows: + +========================== +AZURV1 with Weight Windows +========================== + +**VVP map:** :doc:`Verification <../../../index>` → Analytical → Neutron → Fixed-source suite → AZURV1 variants → Weight windows + +**Case files:** `MC/DC-VVP case folder `_ + +Problem setup +------------- + +This case applies spatial weight windows to the critical :doc:`azurv1` transient. +The target weight in each spatial cell is inversely shaped by the analytical flux averaged over the entire simulation interval from time zero through 20. +The target distribution is normalized, limited by a floor of :math:`10^{-3}`, and expanded into lower and upper bounds with a width factor of 2.5. + +The fixed time-averaged map deliberately uses one set of spatial windows throughout the transient. +The study spans :math:`10^4` through :math:`10^6` source particles and tests splitting, roulette, weight conservation, and mesh lookup against an unchanged physical solution. + +Exercised features +------------------ + +- Critical AZURV1 transient transport and space-time flux tallying. +- Mesh-based spatial weight-window lookup. +- Particle splitting above the upper weight bound. +- Weight roulette below the lower weight bound. +- Analytical-solution-derived importance mapping and weight conservation. + +Mathematical derivation +----------------------- + +The weight windows do not change the expected transport equation, so the reference uses :math:`c=1` in the critical solution derived below. + +.. include:: ../../../_derivations/azurv1.inc + +The window construction first forms the full-time average + +.. math:: + + \phi_j^{\mathrm{avg}} + =\frac{1}{T}\sum_k\Delta t_k\overline{\phi}_{k,j}. + +With floor :math:`\epsilon=10^{-3}` and width :math:`w=2.5`, the target and bounds are + +.. math:: + + W_j=\epsilon+(1-\epsilon) + \frac{\phi_j^{\mathrm{avg}}}{\max_l\phi_l^{\mathrm{avg}}}, + \qquad + W_j^- =\frac{W_j}{w}, + \qquad + W_j^+=wW_j. + +The comparisons still use the original time-dependent bin averages rather than the time-averaged window field. + +Results +------- + +.. grid:: 1 2 2 2 + :gutter: 2 + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--convergence--azurv1-weight_windows_flux.png + :alt: Flux convergence for AZURV1 with spatial weight windows. + + Relative space-time flux error with analytical-solution-derived windows. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--comparison--azurv1-weight_windows_flux.gif + :alt: Animated flux comparison for AZURV1 with spatial weight windows. + + Highest-statistics weight-window solution and analytical reference. + +The error continues to decrease with particle count and shows no persistent bias from the splitting and roulette operations. + +Reference +--------- + +- B. D. Ganapol, R. S. Baker, J. A. Dahl, and R. E. Alcouffe, `Homogeneous Infinite Media Time-Dependent Analytical Benchmarks `_, LA-UR-01-1854, 2001. diff --git a/docs/source/project/vvp/verification/analytical/neutron/fixed_source/azurv1.rst b/docs/source/project/vvp/verification/analytical/neutron/fixed_source/azurv1.rst new file mode 100644 index 000000000..6c3596e01 --- /dev/null +++ b/docs/source/project/vvp/verification/analytical/neutron/fixed_source/azurv1.rst @@ -0,0 +1,62 @@ +.. _project_vvp_fixed_source_azurv1: + +====== +AZURV1 +====== + +**VVP map:** :doc:`Verification <../../../index>` → Analytical → Neutron → Fixed-source suite → AZURV1 variants → Base critical problem + +**Case files:** `MC/DC-VVP case folder `_ + +Problem setup +------------- + +AZURV1 is a one-group, time-dependent Green's-function problem in an infinite homogeneous medium. +MC/DC represents the infinite domain with reflecting planes at very large positive and negative :math:`x` coordinates. +Capture, scattering, and fission cross sections are each :math:`1/3`, the prompt fission yield is 2, and the total cross section is therefore one. +Scattering and fission together give an effective particle-production ratio of one, making the base problem critical. + +An instantaneous isotropic point source is placed at :math:`x=0` and :math:`t=0`. +The space-time flux is tallied over 201 cells from -20.5 to 20.5 and 20 unit-width time intervals from zero to 20. + +Exercised features +------------------ + +- One-dimensional time-dependent transport in an effectively infinite medium. +- Instantaneous isotropic point-source sampling. +- Capture, isotropic scattering, and prompt-fission branching at critical balance. +- Space-time mesh-flux tallying. + +Mathematical derivation +----------------------- + +For the base problem, the production ratio in the following derivation is :math:`c=1`. + +.. include:: ../../../_derivations/azurv1.inc + +Results +------- + +.. grid:: 1 2 2 2 + :gutter: 2 + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--convergence--azurv1_flux.png + :alt: Flux convergence for the base AZURV1 problem. + + Relative space-time flux error for the critical problem. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--comparison--azurv1_flux.gif + :alt: Animated flux comparison for the base AZURV1 problem. + + Highest-statistics MC/DC and analytical flux throughout the transient. + +The convergence metrics decrease at the expected Monte Carlo rate, and the animation shows agreement as the pulse spreads and attenuates through the medium. + +Reference +--------- + +- B. D. Ganapol, R. S. Baker, J. A. Dahl, and R. E. Alcouffe, `Homogeneous Infinite Media Time-Dependent Analytical Benchmarks `_, LA-UR-01-1854, 2001. diff --git a/docs/source/project/vvp/verification/analytical/neutron/fixed_source/azurv1_sub.rst b/docs/source/project/vvp/verification/analytical/neutron/fixed_source/azurv1_sub.rst new file mode 100644 index 000000000..da35a50c9 --- /dev/null +++ b/docs/source/project/vvp/verification/analytical/neutron/fixed_source/azurv1_sub.rst @@ -0,0 +1,58 @@ +.. _project_vvp_fixed_source_azurv1_sub: + +==================== +Subcritical AZURV1 +==================== + +**VVP map:** :doc:`Verification <../../../index>` → Analytical → Neutron → Fixed-source suite → AZURV1 variants → Subcritical medium + +**Case files:** `MC/DC-VVP case folder `_ + +Problem setup +------------- + +This variant retains the infinite one-group medium, instantaneous isotropic point source, and space-time tally of the base :doc:`azurv1` case. +Capture, scattering, and fission cross sections remain :math:`1/3`, but the prompt fission yield is reduced from 2.0 to 1.7. +The combined scattering and fission production ratio is consequently 0.9, so the pulse decays faster than in the critical medium. + +Exercised features +------------------ + +- One-dimensional time-dependent transport in an effectively infinite medium. +- Instantaneous isotropic point-source sampling. +- Capture, isotropic scattering, and prompt-fission branching in a subcritical medium. +- Space-time mesh-flux tallying over a decaying particle population. + +Mathematical derivation +----------------------- + +For the subcritical problem, the production ratio in the following derivation is :math:`c=0.9`. + +.. include:: ../../../_derivations/azurv1.inc + +Results +------- + +.. grid:: 1 2 2 2 + :gutter: 2 + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--convergence--azurv1_sub_flux.png + :alt: Flux convergence for subcritical AZURV1. + + Relative space-time flux error for the subcritical medium. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--comparison--azurv1_sub_flux.gif + :alt: Animated flux comparison for subcritical AZURV1. + + Highest-statistics MC/DC and analytical flux throughout the transient. + +The errors decrease consistently with increasing particle count, and the animation reproduces the stronger time-dependent attenuation caused by subcritical production. + +Reference +--------- + +- B. D. Ganapol, R. S. Baker, J. A. Dahl, and R. E. Alcouffe, `Homogeneous Infinite Media Time-Dependent Analytical Benchmarks `_, LA-UR-01-1854, 2001. diff --git a/docs/source/project/vvp/verification/analytical/neutron/fixed_source/azurv1_super.rst b/docs/source/project/vvp/verification/analytical/neutron/fixed_source/azurv1_super.rst new file mode 100644 index 000000000..56eb70e0a --- /dev/null +++ b/docs/source/project/vvp/verification/analytical/neutron/fixed_source/azurv1_super.rst @@ -0,0 +1,58 @@ +.. _project_vvp_fixed_source_azurv1_super: + +====================== +Supercritical AZURV1 +====================== + +**VVP map:** :doc:`Verification <../../../index>` → Analytical → Neutron → Fixed-source suite → AZURV1 variants → Supercritical medium + +**Case files:** `MC/DC-VVP case folder `_ + +Problem setup +------------- + +This variant retains the infinite one-group medium, instantaneous isotropic point source, and space-time tally of the base :doc:`azurv1` case. +Capture, scattering, and fission cross sections remain :math:`1/3`, but the prompt fission yield is increased from 2.0 to 2.3. +The combined scattering and fission production ratio is consequently 1.1, producing a growing supercritical response. + +Exercised features +------------------ + +- One-dimensional time-dependent transport in an effectively infinite medium. +- Instantaneous isotropic point-source sampling. +- Capture, isotropic scattering, and prompt-fission branching in a supercritical medium. +- Space-time mesh-flux tallying over a growing particle population. + +Mathematical derivation +----------------------- + +For the supercritical problem, the production ratio in the following derivation is :math:`c=1.1`. + +.. include:: ../../../_derivations/azurv1.inc + +Results +------- + +.. grid:: 1 2 2 2 + :gutter: 2 + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--convergence--azurv1_super_flux.png + :alt: Flux convergence for supercritical AZURV1. + + Relative space-time flux error for the supercritical medium. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--comparison--azurv1_super_flux.gif + :alt: Animated flux comparison for supercritical AZURV1. + + Highest-statistics MC/DC and analytical flux throughout the transient. + +The error trend remains statistically consistent as the particle count increases, and the evolving profile agrees with the analytical supercritical response. + +Reference +--------- + +- B. D. Ganapol, R. S. Baker, J. A. Dahl, and R. E. Alcouffe, `Homogeneous Infinite Media Time-Dependent Analytical Benchmarks `_, LA-UR-01-1854, 2001. diff --git a/docs/source/project/vvp/verification/analytical/neutron/fixed_source/inf_shem361-weight_windows.rst b/docs/source/project/vvp/verification/analytical/neutron/fixed_source/inf_shem361-weight_windows.rst new file mode 100644 index 000000000..466aaded8 --- /dev/null +++ b/docs/source/project/vvp/verification/analytical/neutron/fixed_source/inf_shem361-weight_windows.rst @@ -0,0 +1,73 @@ +.. _project_vvp_fixed_source_inf_shem361_weight_windows: + +========================================================= +Steady-State Infinite-Medium SHEM-361 with Weight Windows +========================================================= + +**VVP map:** :doc:`Verification <../../../index>` → Analytical → Neutron → Fixed-source suite → Infinite-medium SHEM-361 variants → Steady-state with weight windows + +**Case files:** `MC/DC-VVP case folder `_ + +Problem setup +------------- + +This case retains the subcritical infinite-medium physics and group-361 isotropic source of :doc:`inf_shem361` while enabling energy-dependent weight windows. +The target weight in each group is shaped by the analytical steady-state spectrum, normalized to its largest value, and limited by a floor of :math:`10^{-3}`. +A width factor of 2.5 defines the lower and upper window bounds around each target. + +The campaign uses :math:`10^3` through :math:`10^5` source particles. +It tests energy-indexed window lookup, splitting, roulette, and particle-weight conservation across a spectrum spanning many orders of magnitude. + +Exercised features +------------------ + +- Steady-state 361-group transport in an effectively infinite medium. +- Group-to-group scattering and fission production. +- Energy-dependent weight-window lookup. +- Particle splitting and weight roulette across energy groups. +- Analytical-spectrum-derived importance mapping and weight conservation. + +Mathematical derivation +----------------------- + +.. include:: ../../../_derivations/shem361_fixed.inc + +The resulting spectrum also defines the energy-dependent windows. +With :math:`\epsilon=10^{-3}` and :math:`w=2.5`, + +.. math:: + + W_g=\epsilon+(1-\epsilon)\frac{\phi_g}{\max_h\phi_h}, + \qquad + W_g^- =\frac{W_g}{w}, + \qquad + W_g^+=wW_g. + +These sampling controls must preserve the same linear-system solution. + +Results +------- + +.. grid:: 1 2 2 2 + :gutter: 2 + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--convergence--inf_shem361-weight_windows_flux.png + :alt: Spectrum convergence for infinite-medium SHEM-361 with energy weight windows. + + Relative spectrum error with energy-dependent windows. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--comparison--inf_shem361-weight_windows_flux.png + :alt: Spectrum comparison for infinite-medium SHEM-361 with energy weight windows. + + Highest-statistics weight-window spectrum and matrix reference. + +The lower-statistics campaign is noisier than the analog study, but its errors decrease without a persistent offset and the highest-statistics spectrum follows the matrix solution across the group structure. + +Reference +--------- + +- A. Hébert and A. Santamarina, *Refinement of the Santamarina-Hfaiedh Energy Mesh Between 22.5 eV and 11.4 keV*, PHYSOR 2008, 2008. diff --git a/docs/source/project/vvp/verification/analytical/neutron/fixed_source/inf_shem361.rst b/docs/source/project/vvp/verification/analytical/neutron/fixed_source/inf_shem361.rst new file mode 100644 index 000000000..7fe493aaf --- /dev/null +++ b/docs/source/project/vvp/verification/analytical/neutron/fixed_source/inf_shem361.rst @@ -0,0 +1,62 @@ +.. _project_vvp_fixed_source_inf_shem361: + +====================================== +Steady-State Infinite-Medium SHEM-361 +====================================== + +**VVP map:** :doc:`Verification <../../../index>` → Analytical → Neutron → Fixed-source suite → Infinite-medium SHEM-361 variants → Steady-state + +**Case files:** `MC/DC-VVP case folder `_ + +Problem setup +------------- + +This steady-state problem transports neutrons in an effectively infinite, homogeneous 361-group medium. +The multigroup constants were produced by homogenizing a continuous-energy calculation of an infinite lattice of borated pressurized-water-reactor pin cells onto the SHEM-361 energy structure. +The dataset includes capture, scattering, fission, prompt and delayed emission, spectra, group speeds, and precursor decay data. + +For this fixed-source case, every capture cross section is increased by 50 percent to make the system subcritical. +Reflecting boundaries at very large coordinates approximate the infinite medium, and an isotropic source emits in group 361. +The tally records the steady-state spectrum over all energy groups. + +Exercised features +------------------ + +- Steady-state 361-group neutron transport in an infinite medium. +- Group-to-group scattering and fission production. +- Isotropic mono-group source sampling. +- Reflecting boundaries for an effectively infinite homogeneous medium. +- Energy-resolved flux-spectrum tallying. + +Mathematical derivation +----------------------- + +.. include:: ../../../_derivations/shem361_fixed.inc + +Results +------- + +.. grid:: 1 2 2 2 + :gutter: 2 + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--convergence--inf_shem361_flux.png + :alt: Spectrum convergence for steady-state infinite-medium SHEM-361. + + Relative spectrum error over the source-particle study. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--comparison--inf_shem361_flux.png + :alt: Spectrum comparison for steady-state infinite-medium SHEM-361. + + Highest-statistics MC/DC spectrum and matrix reference. + +The global spectrum error decreases with sampling effort, with modest pointwise fluctuation in the maximum metric across groups having very different populations. +The comparison resolves the detailed slowing-down and thermal spectrum over all 361 groups. + +Reference +--------- + +- A. Hébert and A. Santamarina, *Refinement of the Santamarina-Hfaiedh Energy Mesh Between 22.5 eV and 11.4 keV*, PHYSOR 2008, 2008. diff --git a/docs/source/project/vvp/verification/analytical/neutron/fixed_source/inf_shem361_td-census.rst b/docs/source/project/vvp/verification/analytical/neutron/fixed_source/inf_shem361_td-census.rst new file mode 100644 index 000000000..964948290 --- /dev/null +++ b/docs/source/project/vvp/verification/analytical/neutron/fixed_source/inf_shem361_td-census.rst @@ -0,0 +1,69 @@ +.. _project_vvp_fixed_source_inf_shem361_td_census: + +======================================================= +Transient Infinite-Medium SHEM-361 with Time Censuses +======================================================= + +**VVP map:** :doc:`Verification <../../../index>` → Analytical → Neutron → Fixed-source suite → Infinite-medium SHEM-361 variants → Transient with time censuses + +**Case files:** `MC/DC-VVP case folder `_ + +Problem setup +------------- + +This case preserves the multigroup physics, delayed-neutron treatment, logarithmic time tally, and instantaneous group-361 source of :doc:`inf_shem361_td`. +Six logarithmically spaced census times from :math:`10^{-5}` through :math:`10^1` seconds divide the transient, and population control regulates the census bank between intervals. +Expanded source and census buffers accommodate changes in population across the prompt and delayed regimes. + +The case verifies census storage and restart behavior over six orders of magnitude in time while retaining the full 361-group energy structure. + +Exercised features +------------------ + +- Time-dependent 361-group infinite-medium transport with delayed-neutron precursors. +- Logarithmically spaced time censuses over prompt and delayed regimes. +- Census-bank storage, restart, and population control. +- Source- and census-bank buffer management. +- Time-energy flux and total neutron-density tallies. + +Mathematical derivation +----------------------- + +.. include:: ../../../_derivations/shem361_transient.inc + +The census times only partition particle execution and do not alter this continuous reference solution. + +Results +------- + +.. grid:: 1 2 2 2 + :gutter: 2 + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--convergence--inf_shem361_td-census_flux.png + :alt: Flux convergence for transient infinite-medium SHEM-361 transport with censuses. + + Relative time-energy flux error with population control. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--convergence--inf_shem361_td-census_n.png + :alt: Neutron-density convergence for transient infinite-medium SHEM-361 transport with censuses. + + Relative neutron-density-history error with population control. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--comparison--inf_shem361_td-census_flux.gif + :alt: Animated spectrum comparison for transient infinite-medium SHEM-361 transport with censuses. + + Highest-statistics censused spectrum and matrix-exponential reference. + +The global flux and density errors decrease with increasing histories and the animation remains continuous across census boundaries. +As in the uninterrupted transient, the pointwise maximum is sensitive to nearly empty time-energy bins and is less regular than the 2-norm. + +Reference +--------- + +- A. Hébert and A. Santamarina, *Refinement of the Santamarina-Hfaiedh Energy Mesh Between 22.5 eV and 11.4 keV*, PHYSOR 2008, 2008. diff --git a/docs/source/project/vvp/verification/analytical/neutron/fixed_source/inf_shem361_td.rst b/docs/source/project/vvp/verification/analytical/neutron/fixed_source/inf_shem361_td.rst new file mode 100644 index 000000000..d03545ee1 --- /dev/null +++ b/docs/source/project/vvp/verification/analytical/neutron/fixed_source/inf_shem361_td.rst @@ -0,0 +1,68 @@ +.. _project_vvp_fixed_source_inf_shem361_td: + +===================================== +Transient Infinite-Medium SHEM-361 +===================================== + +**VVP map:** :doc:`Verification <../../../index>` → Analytical → Neutron → Fixed-source suite → Infinite-medium SHEM-361 variants → Transient + +**Case files:** `MC/DC-VVP case folder `_ + +Problem setup +------------- + +This transient extends the subcritical infinite-medium :doc:`inf_shem361` problem by retaining group-dependent neutron speeds and delayed-neutron precursors. +An instantaneous isotropic source begins in group 361. +The tally uses 100 logarithmically distributed time intervals from :math:`10^{-8}` to :math:`10^1` seconds, preceded by time zero, and records the complete energy spectrum. + +Both flux and total neutron density are evaluated. +The problem spans prompt slowing-down, delayed emission, and many decades of physical time in one simulation. + +Exercised features +------------------ + +- Time-dependent 361-group neutron transport in an infinite medium. +- Group-dependent particle speeds and prompt slowing down. +- Delayed-neutron precursor creation, decay, and emission. +- Logarithmically spaced time-energy flux tallies. +- Total neutron-density tallying over the transient. + +Mathematical derivation +----------------------- + +.. include:: ../../../_derivations/shem361_transient.inc + +Results +------- + +.. grid:: 1 2 2 2 + :gutter: 2 + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--convergence--inf_shem361_td_flux.png + :alt: Flux convergence for transient infinite-medium SHEM-361 transport. + + Relative time-energy flux error. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--convergence--inf_shem361_td_n.png + :alt: Neutron-density convergence for transient infinite-medium SHEM-361 transport. + + Relative neutron-density-history error. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--comparison--inf_shem361_td_flux.gif + :alt: Animated spectrum comparison for transient infinite-medium SHEM-361 transport. + + Highest-statistics spectrum and matrix-exponential reference throughout the transient. + +The relative 2-norm decreases for both quantities as sampling increases. +The maximum flux error is much noisier because it is sensitive to sparsely populated time-energy bins where the reference approaches zero, so the global norm and density history provide the more stable convergence indicators. + +Reference +--------- + +- A. Hébert and A. Santamarina, *Refinement of the Santamarina-Hfaiedh Energy Mesh Between 22.5 eV and 11.4 keV*, PHYSOR 2008, 2008. diff --git a/docs/source/project/vvp/verification/analytical/neutron/fixed_source/mms_two_group_slab.rst b/docs/source/project/vvp/verification/analytical/neutron/fixed_source/mms_two_group_slab.rst new file mode 100644 index 000000000..5613bf6df --- /dev/null +++ b/docs/source/project/vvp/verification/analytical/neutron/fixed_source/mms_two_group_slab.rst @@ -0,0 +1,153 @@ +.. _project_vvp_fixed_source_mms_two_group_slab: + +============================== +Manufactured Two-Group Slab +============================== + +**VVP map:** :doc:`Verification <../../../index>` → Analytical → Neutron → Fixed-source suite → Slab problems → Manufactured two-group slab + +**Case files:** `MC/DC-VVP case folder `_ + +Problem setup +------------- + +This manufactured problem uses a 10 cm slab with vacuum boundaries, two energy groups, and isotropic scattering. +Both groups have :math:`\Sigma_t=1` cm\ :sup:`-1` and :math:`\Sigma_c=0.6` cm\ :sup:`-1`, while every entry of the outgoing-by-incoming scattering matrix is 0.2 cm\ :sup:`-1`. + +The manufactured right-hand sides are + +.. math:: + + R_1(x)=0.5+0.01x, + \qquad + R_2(x)=0.6-0.01x. + +Substitution into the transport equations gives the positive, angle-integrated volume sources + +.. math:: + + q_1(x)=0.56+0.02x, + \qquad + q_2(x)=0.76-0.02x. + +MC/DC samples each spatial source exactly as a piecewise-linear distribution. +White half-space boundary sources supply the corresponding isotropic incoming fluxes at both ends, and a 100-cell mesh tallies both energy groups. + +Exercised features +------------------ + +- One-dimensional :math:`x`-axis geometry with vacuum boundaries. +- Two-group transport with within-group and intergroup isotropic scattering. +- Group-dependent piecewise-linear spatial source distributions. +- Isotropic incoming boundary flux represented by white half-space sources. +- Energy-resolved mesh-flux tallying. + +Mathematical derivation +----------------------- + +For group :math:`g`, the steady transport equation is + +.. math:: + + \mu\frac{\partial\psi_g}{\partial x}+\psi_g + =\frac{1}{2}\sum_{g'=1}^{2}\Sigma_{s,g\leftarrow g'}\phi_{g'} + +\frac{q_g(x)}{2}. + +The manufactured total right-hand side is selected as the linear function + +.. math:: + + R_g(x)=a_g+b_gx, + \qquad + (a_1,a_2)=(0.5,0.6), + \qquad + (b_1,b_2)=(0.01,-0.01). + +Solving :math:`\mu\partial_x\psi_g+\psi_g=R_g` along a characteristic and imposing isotropic incoming values :math:`R_g(0)` on the left and :math:`R_g(L)` on the right gives + +.. math:: + + \psi_g(x,\mu) + =R_g(x)-\mu b_g + +\mu b_g + \begin{cases} + \exp(-x/\mu),&\mu>0,\\ + \exp[-(L-x)/|\mu|],&\mu<0. + \end{cases} + +Directional integration uses + +.. math:: + + E_n(y)=\int_1^\infty\frac{e^{-yt}}{t^n}\,dt + +and yields + +.. math:: + + \phi_g(x) + =2R_g(x)+b_g\left[E_3(x)-E_3(L-x)\right]. + +Because the two slopes are equal and opposite, their boundary-layer terms cancel in :math:`\phi_1+\phi_2`. +Every scattering-matrix entry is 0.2 cm\ :sup:`-1`, so the isotropic scattering contribution to either angular equation is constant: + +.. math:: + + \frac{1}{2}\sum_{g'=1}^{2}0.2\phi_{g'}=0.22. + +The required angle-integrated external source is therefore + +.. math:: + + q_g(x)=2\left[R_g(x)-0.22\right], + +which gives the two positive source profiles stated above. +The four boundary-source strengths follow from the incident current of an isotropic angular flux, + +.. math:: + + J_{\mathrm{in}}=\int_0^1\mu\psi_{\mathrm{in}}\,d\mu + =\frac{\psi_{\mathrm{in}}}{2}. + +The two volume sources integrate to 6.6 each, and the four boundary currents sum to 1.1, giving total external strength :math:`S=14.3`. +All analytical fluxes are divided by :math:`S` to match per-source-particle MC/DC normalization. + +Finally, since :math:`dE_4(x)/dx=-E_3(x)`, the exact average in spatial cell :math:`[x_i,x_{i+1}]` is + +.. math:: + + \overline{\phi}_{g,i} + =\frac{1}{S}\left[ + 2\left(a_g+b_g\frac{x_i+x_{i+1}}{2}\right) + +\frac{b_g}{\Delta x_i} + \left[-E_4(x)-E_4(L-x)\right]_{x=x_i}^{x=x_{i+1}} + \right]. + +Results +------- + +.. grid:: 1 2 3 3 + :gutter: 2 + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--comparison--mms_two_group_slab_source.png + :alt: Manufactured source distributions for the two-group slab. + + Positive group-wise volume-source distributions. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--convergence--mms_two_group_slab_flux.png + :alt: Flux convergence for the manufactured two-group slab. + + Relative multigroup flux error from :math:`10^4` through :math:`10^6` histories. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--comparison--mms_two_group_slab_flux.png + :alt: Flux comparison for the manufactured two-group slab. + + Highest-statistics group fluxes and manufactured reference. + +The error metrics closely follow inverse-square-root sampling behavior, while the solution comparison resolves the distinct slopes of both manufactured group fluxes. diff --git a/docs/source/project/vvp/verification/analytical/neutron/fixed_source/reed.rst b/docs/source/project/vvp/verification/analytical/neutron/fixed_source/reed.rst new file mode 100644 index 000000000..429faef20 --- /dev/null +++ b/docs/source/project/vvp/verification/analytical/neutron/fixed_source/reed.rst @@ -0,0 +1,160 @@ +.. _project_vvp_fixed_source_reed: + +====================== +Reed's Slab Problem +====================== + +**VVP map:** :doc:`Verification <../../../index>` → Analytical → Neutron → Fixed-source suite → Slab problems → Reed's slab problem + +**Case files:** `MC/DC-VVP case folder `_ + +Problem setup +------------- + +Reed's one-group benchmark is modeled on the half-domain from 0 to 8 cm, with reflection at the symmetry plane and vacuum at the outer boundary. +Four material regions create a severe transport problem: a strongly absorbing region from 0 to 2 cm, a moderately absorbing region from 2 to 3 cm, a void from 3 to 5 cm, and a scattering material from 5 to 8 cm. +Their capture cross sections are 50, 5, 0, and 0.1 cm\ :sup:`-1`, respectively, and the outer material has a scattering cross section of 0.9 cm\ :sup:`-1`. + +An intense isotropic source occupies the innermost absorbing region, while a source one hundred times weaker occupies the first centimeter of the outer material. +The 80-cell tally resolves sharp attenuation, void streaming, and the transition to a scattering-dominated region. + +Exercised features +------------------ + +- One-dimensional :math:`z`-axis heterogeneous slab geometry. +- Reflective symmetry and vacuum outer boundaries. +- Strong absorption, isotropic scattering, and void streaming in one model. +- Multiple isotropic volume sources with unequal strengths. +- Fine spatial mesh-flux tallying across material discontinuities. + +Mathematical derivation +----------------------- + +For discrete directions :math:`\mu_m` and weights :math:`w_m`, the one-group :math:`S_N` equations in constant-material subregion :math:`r` are + +.. math:: + + \mu_m\frac{d\psi_m}{dz} + +\Sigma_{t,r}\psi_m + =\frac{\Sigma_{s,r}}{2} + \sum_nw_n\psi_n + +\frac{q_r}{2}. + +With :math:`\boldsymbol{\psi}=[\psi_1,\ldots,\psi_N]^T`, :math:`D_\mu=D(\mu)`, and :math:`\mathbf{1}` the vector of ones, this becomes + +.. math:: + + \frac{d\boldsymbol{\psi}}{dz} + =A_r\boldsymbol{\psi}+b_r, + +.. math:: + + A_r=D_\mu^{-1} + \left[-\Sigma_{t,r}I + +\frac{\Sigma_{s,r}}{2}\mathbf{1}w^T\right], + \qquad + b_r=D_\mu^{-1}\frac{q_r}{2}\mathbf{1}. + +The exact solution within each subregion is + +.. math:: + + \boldsymbol{\psi}_r(z) + =\boldsymbol{\psi}_{p,r} + +e^{A_r(z-z_r)}c_r, + \qquad + A_r\boldsymbol{\psi}_{p,r}+b_r=0. + +The constants :math:`c_r` follow from reflective symmetry at :math:`z=0`, vacuum incidence at :math:`z=8`, and continuity of every angular flux at :math:`z=2`, 3, 5, and 6. +The interface at :math:`z=6` is required because the material remains unchanged but the weak outer source ends there. +The scalar flux is :math:`\Phi_r(z)=w^T\boldsymbol{\psi}_r(z)`. + +Warsa's symbolic solution, as implemented by the reference generator, has the following compact form: + +.. math:: + + \begin{aligned} + \Phi_1(z)&=1-\sum_{n=1}^4a_{1,n}\cosh(\lambda_{1,n}z),\\ + \Phi_2(z)&=\sum_{n=1}^4 + \left(a_{2,n}^-e^{-\lambda_{2,n}^-z} + +a_{2,n}^+e^{\lambda_{2,n}^+z}\right),\\ + \Phi_3(z)&=1.105109108062394,\\ + \Phi_4(z)&=10-\sum_{n=1}^4 + \left(a_{4,n}^-e^{-\lambda_{4,n}z} + +a_{4,n}^+e^{\lambda_{4,n}z}\right),\\ + \Phi_5(z)&=\sum_{n=1}^4 + \left(a_{5,n}^-e^{-\lambda_{5,n}z} + -a_{5,n}^+e^{\lambda_{5,n}z}\right). + \end{aligned} + +The subregions for :math:`\Phi_1` through :math:`\Phi_5` are :math:`[0,2]`, :math:`[2,3]`, :math:`[3,5]`, :math:`[5,6]`, and :math:`[6,8]`, respectively. +The numerical mode constants are + +.. math:: + + \begin{aligned} + \lambda_1={}&(52.06761236,62.76152119,95.14161079,272.57664812),\\ + a_1={}&(5.96168048\!\times\!10^{-47},6.78355315\!\times\!10^{-56}, + 7.20274050\!\times\!10^{-84},6.34541151\!\times\!10^{-238}),\\ + \lambda_2^-={}&(5.206761236,6.276152119,9.514161079,27.25766481),\\ + a_2^-={}&(1.68580877\!\times\!10^3,3.14386737\!\times\!10^4, + 2.87997711\!\times\!10^7,8.59419051\!\times\!10^{22}),\\ + \lambda_2^+={}&(27.25766481,9.514161079,6.276152119,5.206761236),\\ + a_2^+={}&(1.29842604\!\times\!10^{-36},1.43234466\!\times\!10^{-13}, + 1.51456227\!\times\!10^{-9},1.59443121\!\times\!10^{-8}). + \end{aligned} + +For the final two source subregions, + +.. math:: + + \begin{aligned} + \lambda_4={}&\lambda_5 + =(0.5254295183,1.108937229,1.615640334,4.554850586),\\ + a_4^-={}&(75.34793865,20.42874998,712.9175418,2.71640937\!\times\!10^9),\\ + a_4^+={}&(0.1983746884,7.82476533\!\times\!10^{-5}, + 9.74666021\!\times\!10^{-6},2.89509835\!\times\!10^{-13}),\\ + a_5^-={}&(31.53212163,26.25911060,1841.223066,1.55559355\!\times\!10^{11}),\\ + a_5^+={}&(3.11931035\!\times\!10^{-3},6.33640114\!\times\!10^{-7}, + 3.52875768\!\times\!10^{-8},4.40551434\!\times\!10^{-18}). + \end{aligned} + +The reference generator uses analytical antiderivatives of these exponentials and hyperbolic functions. +For tally cell :math:`[z_i,z_{i+1}]` contained in subregion :math:`r`, the normalized comparison value is + +.. math:: + + \overline{\phi}_i + =\frac{1}{100\Delta z_i} + \int_{z_i}^{z_{i+1}}\Phi_r(z)\,dz. + +This cell averaging preserves the sharp solution behavior without evaluating the reference only at tally midpoints. + +Results +------- + +.. grid:: 1 2 2 2 + :gutter: 2 + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--convergence--reed_flux.png + :alt: Flux convergence for Reed's problem. + + Relative scalar-flux error over the source-particle study. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--comparison--reed_flux.png + :alt: Flux comparison for Reed's problem. + + Highest-statistics MC/DC flux and the semi-analytical reference. + +The global error decreases with increasing sampling effort, while the maximum metric shows the greater pointwise variability expected in the sharply attenuated regions. +The highest-statistics solution captures the discontinuous material response and void-streaming structure. + +References +---------- + +- W. H. Reed, *New Difference Schemes for the Neutron Transport Equation*, Nuclear Science and Engineering, 1971. +- J. S. Warsa, `Analytical S_N solutions in heterogeneous slabs using symbolic algebra `_, Annals of Nuclear Energy, 2002. diff --git a/docs/source/project/vvp/verification/analytical/neutron/fixed_source/slab_absorbium.rst b/docs/source/project/vvp/verification/analytical/neutron/fixed_source/slab_absorbium.rst new file mode 100644 index 000000000..38db500d6 --- /dev/null +++ b/docs/source/project/vvp/verification/analytical/neutron/fixed_source/slab_absorbium.rst @@ -0,0 +1,137 @@ +.. _project_vvp_fixed_source_slab_absorbium: + +================ +Absorbium Slab +================ + +**VVP map:** :doc:`Verification <../../../index>` → Analytical → Neutron → Fixed-source suite → Slab problems → Absorbium slab + +**Case files:** `MC/DC-VVP case folder `_ + +Problem setup +------------- + +This steady-state, one-group problem places a uniform isotropic source in a 6 cm slab with vacuum boundaries. +The slab contains three 2 cm purely absorbing layers with macroscopic capture cross sections of 1.5, 2.0, and 1.0 cm\ :sup:`-1`, respectively. +The spatial mesh uses 60 cells, and the angular tally divides the direction cosine into 32 bins. + +The strong attenuation and material discontinuities test source sampling, collision distance sampling, surface crossings, material changes, and both scalar- and angular-flux normalization without scattering. + +Exercised features +------------------ + +- One-dimensional :math:`z`-axis geometry with multiple material regions. +- Vacuum boundary conditions and material-interface crossings. +- Purely absorbing transport with a uniform isotropic volume source. +- Scalar-flux and angle-resolved mesh tallies. + +Mathematical derivation +----------------------- + +Let layer :math:`r` occupy :math:`[a_r,b_r]`, with total cross section :math:`\Sigma_r`. +The source is uniform over the 6 cm slab and normalized to one source particle, so its angle-integrated density is :math:`1/6` and its angular density is :math:`q=1/12`. +Because there is no scattering, each layer satisfies + +.. math:: + + \mu\frac{\partial\psi_r}{\partial z} + +\Sigma_r\psi_r=q. + +For :math:`\mu>0`, integration from the left edge gives + +.. math:: + + \psi_r(z,\mu) + =\frac{q}{\Sigma_r} + +\left[ + \psi_r(a_r,\mu)-\frac{q}{\Sigma_r} + \right] + \exp\left[-\frac{\Sigma_r(z-a_r)}{\mu}\right]. + +For :math:`\mu<0`, integration backward from the right edge gives + +.. math:: + + \psi_r(z,\mu) + =\frac{q}{\Sigma_r} + +\left[ + \psi_r(b_r,\mu)-\frac{q}{\Sigma_r} + \right] + \exp\left[-\frac{\Sigma_r(b_r-z)}{|\mu|}\right]. + +The vacuum conditions are + +.. math:: + + \psi_1(0,\mu)=0\quad(\mu>0), + \qquad + \psi_3(6,\mu)=0\quad(\mu<0), + +and angular flux is continuous at :math:`z=2` and :math:`z=4` for every direction. +Starting from the appropriate vacuum boundary and applying the two characteristic expressions recursively therefore determines :math:`\psi_r` throughout all three layers. + +The pointwise scalar flux and current are + +.. math:: + + \phi(z)=\int_{-1}^{1}\psi(z,\mu)\,d\mu, + \qquad + J(z)=\int_{-1}^{1}\mu\psi(z,\mu)\,d\mu. + +For spatial cell :math:`i` and angular bin :math:`n`, the exact quantities compared with MC/DC are + +.. math:: + + \overline{\phi}_i + =\frac{1}{\Delta z_i} + \int_{z_i}^{z_{i+1}}\phi(z)\,dz, + \qquad + \overline{J}_i + =\frac{1}{\Delta z_i} + \int_{z_i}^{z_{i+1}}J(z)\,dz, + +.. math:: + + \overline{\psi}_{i,n} + =\frac{1}{\Delta z_i\Delta\mu_n} + \int_{z_i}^{z_{i+1}} + \int_{\mu_n}^{\mu_{n+1}} + \psi(z,\mu)\,d\mu\,dz. + +Adaptive quadrature evaluates these averages, splitting the directional integrals at :math:`\mu=0`. + +Results +------- + +.. grid:: 1 2 2 2 + :gutter: 2 + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--convergence--slab_absorbium_flux.png + :alt: Scalar-flux convergence for the absorbium slab. + + Relative scalar-flux error over the source-particle study. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--convergence--slab_absorbium_angular_flux.png + :alt: Angular-flux convergence for the absorbium slab. + + Relative angular-flux error over the source-particle study. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--comparison--slab_absorbium_flux.png + :alt: Scalar-flux comparison for the absorbium slab. + + Highest-statistics scalar flux and the analytical reference. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--comparison--slab_absorbium_angular_flux.png + :alt: Angular-flux comparison for the absorbium slab. + + Highest-statistics angular flux and the analytical reference. + +Both scalar- and angular-flux errors follow the expected inverse-square-root trend, and the highest-statistics profiles reproduce the attenuation and interface behavior of the characteristic solution. diff --git a/docs/source/project/vvp/verification/analytical/neutron/fixed_source/slab_isobeam_td.rst b/docs/source/project/vvp/verification/analytical/neutron/fixed_source/slab_isobeam_td.rst new file mode 100644 index 000000000..c5564032d --- /dev/null +++ b/docs/source/project/vvp/verification/analytical/neutron/fixed_source/slab_isobeam_td.rst @@ -0,0 +1,106 @@ +.. _project_vvp_fixed_source_slab_isobeam_td: + +==================================== +Time-Dependent Isotropic-Beam Slab +==================================== + +**VVP map:** :doc:`Verification <../../../index>` → Analytical → Neutron → Fixed-source suite → Slab problems → Time-dependent isotropic-beam slab + +**Case files:** `MC/DC-VVP case folder `_ + +Problem setup +------------- + +This one-group transient transports neutrons through a 5 cm purely absorbing slab oriented along the :math:`y` axis. +The macroscopic capture cross section is 1 cm\ :sup:`-1`, both slab boundaries are vacuum, and the particle speed is one distance unit per time unit. + +A white source immediately inside the lower boundary emits only toward positive :math:`y` and is uniform from time zero through time five. +The flux is tallied over 50 spatial cells and 50 time intervals. +The case tests directional boundary-source sampling, causal transient propagation, and two-dimensional space-time tally normalization. + +Exercised features +------------------ + +- One-dimensional :math:`y`-axis geometry with vacuum boundaries. +- Time-dependent purely absorbing transport with finite particle speed. +- Directional white boundary-source sampling. +- Space-time mesh-flux tallying and causal-front resolution. + +Mathematical derivation +----------------------- + +For :math:`\mu>0`, the purely absorbing angular equation is + +.. math:: + + \frac{1}{v}\frac{\partial\psi}{\partial t} + +\mu\frac{\partial\psi}{\partial y} + +\Sigma_t\psi=0. + +The white boundary source is uniform over :math:`0\leq t\leq T` and samples the incident current distribution. +At position :math:`y` and time :math:`t\leq T`, only directions satisfying the flight-time condition :math:`y/(v\mu)\leq t` contribute. +The scalar flux is consequently + +.. math:: + + \phi(y,t) + =\frac{1}{T} + \int_{y/(vt)}^1 + \exp\left(-\frac{\Sigma_ty}{\mu}\right)d\mu, + \qquad y\leq vt, + +and :math:`\phi(y,t)=0` for :math:`y>vt`. +Let :math:`b=\Sigma_ty` and substitute :math:`u=b/\mu`. +Using :math:`E_1(u)=\int_u^\infty e^{-s}/s\,ds` gives + +.. math:: + + \int_{y/(vt)}^1e^{-b/\mu}\,d\mu + =b\left[E_1(\Sigma_tvt)-E_1(b)\right] + +e^{-b} + -\frac{y}{vt}e^{-\Sigma_tvt}. + +Therefore, + +.. math:: + + \phi(y,t) + =\frac{1}{T}\left[ + \Sigma_ty\left[E_1(\Sigma_tvt)-E_1(\Sigma_ty)\right] + +e^{-\Sigma_ty} + -\frac{y}{vt}e^{-\Sigma_tvt} + \right]. + +For spatial cell :math:`j` and time interval :math:`k`, the comparison uses + +.. math:: + + \overline{\phi}_{k,j} + =\frac{1}{\Delta t_k\Delta y_j} + \int_{t_k}^{t_{k+1}} + \int_{y_j}^{y_{j+1}} + \phi(y,t)\,dy\,dt, + +which is evaluated by adaptive quadrature with the causal zero condition applied pointwise. + +Results +------- + +.. grid:: 1 2 2 2 + :gutter: 2 + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--convergence--slab_isobeam_td_flux.png + :alt: Flux convergence for the time-dependent isotropic-beam slab. + + Relative space-time flux error over the source-particle study. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--fixed_source--comparison--slab_isobeam_td_flux.gif + :alt: Animated flux comparison for the time-dependent isotropic-beam slab. + + Highest-statistics MC/DC and analytical flux throughout the transient. + +The error follows the expected statistical trend, and the animation shows that MC/DC reproduces both the moving causal front and the attenuated profile behind it. diff --git a/docs/source/project/vvp/verification/analytical/neutron/k_eigenvalue/inf_shem361_subcritical.rst b/docs/source/project/vvp/verification/analytical/neutron/k_eigenvalue/inf_shem361_subcritical.rst new file mode 100644 index 000000000..81b91f729 --- /dev/null +++ b/docs/source/project/vvp/verification/analytical/neutron/k_eigenvalue/inf_shem361_subcritical.rst @@ -0,0 +1,86 @@ +.. _project_vvp_k_eigenvalue_inf_shem361_subcritical: + +===================================== +Subcritical Infinite-Medium SHEM-361 +===================================== + +**VVP map:** :doc:`Verification <../../../index>` → Analytical → Neutron → k-eigenvalue suite → Infinite-medium SHEM-361 variants → Subcritical + +**Case files:** `MC/DC-VVP case folder `_ + +Problem setup +------------- + +This case solves the fundamental mode of the effectively infinite, homogeneous 361-group pin-cell medium used by the fixed-source SHEM-361 cases. +Every capture cross section is increased by 50 percent, producing a subcritical reference system. +Reflecting boundaries suppress leakage, and the initial source is isotropic in group 361. + +Each cycle uses one million particles, with 20 inactive cycles followed by the varied number of active cycles. +The tally records the complete energy-dependent fundamental spectrum. + +Exercised features +------------------ + +- :math:`k`-eigenvalue transport with 361 energy groups in an infinite medium. +- Group-to-group scattering and fission production in a subcritical medium. +- Reflecting boundaries for an effectively infinite homogeneous system. +- Fission-source banking, population control, and inactive-cycle convergence. +- Energy-dependent fundamental-mode tallying and multiplication-factor uncertainty estimation. + +Mathematical derivation +----------------------- + +The subcritical case uses :math:`\alpha=1.5` in the following derivation. + +.. include:: ../../../_derivations/shem361_eigenvalue.inc + +The resulting reference multiplication factor is approximately 0.89372. + +Results +------- + +.. grid:: 1 2 3 3 + :gutter: 2 + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--k_eigenvalue--convergence--inf_shem361_subcritical_flux.png + :alt: Spectrum convergence for subcritical infinite-medium SHEM-361. + + Relative fundamental-spectrum error. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--k_eigenvalue--convergence--inf_shem361_subcritical_k-effective.png + :alt: Multiplication-factor convergence for subcritical infinite-medium SHEM-361. + + Relative multiplication-factor error. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--k_eigenvalue--convergence--inf_shem361_subcritical_k-effective_errorbar.png + :alt: Multiplication-factor estimates and uncertainties for subcritical infinite-medium SHEM-361. + + MC/DC estimates, reported uncertainties, and the matrix reference. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--k_eigenvalue--comparison--inf_shem361_subcritical_flux.png + :alt: Fundamental spectrum comparison for subcritical infinite-medium SHEM-361. + + Highest-statistics normalized spectrum and generalized-eigenvalue reference. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--k_eigenvalue--comparison--inf_shem361_subcritical_k_history.png + :alt: Cycle-by-cycle multiplication-factor history for subcritical infinite-medium SHEM-361. + + Inactive and active cycle history, active mean, uncertainty, and reference. + +Both the spectrum and multiplication factor approach the matrix solution as active sampling increases. +The uncertainty intervals contract around the subcritical reference, with ordinary nonmonotonic fluctuations between individual campaigns. + +Reference +--------- + +- A. Hébert and A. Santamarina, *Refinement of the Santamarina-Hfaiedh Energy Mesh Between 22.5 eV and 11.4 keV*, PHYSOR 2008, 2008. diff --git a/docs/source/project/vvp/verification/analytical/neutron/k_eigenvalue/inf_shem361_supercritical.rst b/docs/source/project/vvp/verification/analytical/neutron/k_eigenvalue/inf_shem361_supercritical.rst new file mode 100644 index 000000000..70612489b --- /dev/null +++ b/docs/source/project/vvp/verification/analytical/neutron/k_eigenvalue/inf_shem361_supercritical.rst @@ -0,0 +1,86 @@ +.. _project_vvp_k_eigenvalue_inf_shem361_supercritical: + +======================================= +Supercritical Infinite-Medium SHEM-361 +======================================= + +**VVP map:** :doc:`Verification <../../../index>` → Analytical → Neutron → k-eigenvalue suite → Infinite-medium SHEM-361 variants → Supercritical + +**Case files:** `MC/DC-VVP case folder `_ + +Problem setup +------------- + +This case solves the fundamental mode of the effectively infinite, homogeneous 361-group pin-cell medium with its original capture data. +Removing the 50 percent capture increase used in :doc:`inf_shem361_subcritical` produces a supercritical system while leaving the scattering and fission data unchanged. +Reflecting boundaries suppress leakage, and the initial source is isotropic in group 361. + +Each cycle uses one million particles, with 20 inactive cycles followed by the varied number of active cycles. +The tally records the complete energy-dependent fundamental spectrum. + +Exercised features +------------------ + +- :math:`k`-eigenvalue transport with 361 energy groups in an infinite medium. +- Group-to-group scattering and fission production in a supercritical medium. +- Reflecting boundaries for an effectively infinite homogeneous system. +- Fission-source banking, population control, and inactive-cycle convergence. +- Energy-dependent fundamental-mode tallying and multiplication-factor uncertainty estimation. + +Mathematical derivation +----------------------- + +The supercritical case uses :math:`\alpha=1` in the following derivation. + +.. include:: ../../../_derivations/shem361_eigenvalue.inc + +The resulting reference multiplication factor is approximately 1.16018. + +Results +------- + +.. grid:: 1 2 3 3 + :gutter: 2 + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--k_eigenvalue--convergence--inf_shem361_supercritical_flux.png + :alt: Spectrum convergence for supercritical infinite-medium SHEM-361. + + Relative fundamental-spectrum error. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--k_eigenvalue--convergence--inf_shem361_supercritical_k-effective.png + :alt: Multiplication-factor convergence for supercritical infinite-medium SHEM-361. + + Relative multiplication-factor error. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--k_eigenvalue--convergence--inf_shem361_supercritical_k-effective_errorbar.png + :alt: Multiplication-factor estimates and uncertainties for supercritical infinite-medium SHEM-361. + + MC/DC estimates, reported uncertainties, and the matrix reference. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--k_eigenvalue--comparison--inf_shem361_supercritical_flux.png + :alt: Fundamental spectrum comparison for supercritical infinite-medium SHEM-361. + + Highest-statistics normalized spectrum and generalized-eigenvalue reference. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--k_eigenvalue--comparison--inf_shem361_supercritical_k_history.png + :alt: Cycle-by-cycle multiplication-factor history for supercritical infinite-medium SHEM-361. + + Inactive and active cycle history, active mean, uncertainty, and reference. + +The multiplication-factor uncertainty narrows around the supercritical matrix reference and the normalized energy spectrum converges toward the dominant mode. +Together with the subcritical variant, the result exercises the same multigroup operator on both sides of unity. + +Reference +--------- + +- A. Hébert and A. Santamarina, *Refinement of the Santamarina-Hfaiedh Energy Mesh Between 22.5 eV and 11.4 keV*, PHYSOR 2008, 2008. diff --git a/docs/source/project/vvp/verification/analytical/neutron/k_eigenvalue/kornreich.rst b/docs/source/project/vvp/verification/analytical/neutron/k_eigenvalue/kornreich.rst new file mode 100644 index 000000000..f409c4d99 --- /dev/null +++ b/docs/source/project/vvp/verification/analytical/neutron/k_eigenvalue/kornreich.rst @@ -0,0 +1,169 @@ +.. _project_vvp_k_eigenvalue_kornreich: + +========================= +Kornreich-Parsons Slab +========================= + +**VVP map:** :doc:`Verification <../../../index>` → Analytical → Neutron → k-eigenvalue suite → Finite-slab criticality problems → Kornreich-Parsons slab + +**Case files:** `MC/DC-VVP case folder `_ + +Problem setup +------------- + +This one-group finite slab alternates four beryllium reflector regions with three uranium fuel regions, with every region one material mean free path thick and vacuum boundaries at both ends. +The reflector has :math:`(\Sigma_t,\Sigma_s,\nu\Sigma_f)=(0.371,0.334,0)` cm\ :sup:`-1`, while the fuel has :math:`(0.415,0.334,0.178)` cm\ :sup:`-1`. +MC/DC assigns the fuel removal not attributed to scattering to fission and selects the neutron yield to preserve the published :math:`\nu\Sigma_f`. + +The initial source is uniform and isotropic. +Each region is divided into 50 tally cells, and each cycle uses 10,000 particles with 20 inactive cycles before active sampling begins. + +Exercised features +------------------ + +- One-group :math:`k`-eigenvalue transport in a finite heterogeneous slab. +- Repeated fuel-reflector interfaces and vacuum leakage. +- Fission-source banking and population control across cycles. +- Inactive-cycle source convergence and active-cycle estimation. +- Fine-mesh fundamental-mode flux tallying across seven material regions. + +Mathematical derivation +----------------------- + +Introduce optical distance + +.. math:: + + \tau(x)=\int_0^x\Sigma_t(s)\,ds. + +Every physical region is one mean free path thick, so the seven-region slab becomes a uniform interval in :math:`\tau`. +Define the material-dependent ratios + +.. math:: + + c_s(\tau)=\frac{\Sigma_s}{\Sigma_t}, + \qquad + c_f(\tau)=\frac{\nu\Sigma_f}{\Sigma_t}, + +where :math:`c_f=0` in reflector regions. +Angular integration of the vacuum-boundary transport equation gives + +.. math:: + + \phi(\tau) + =\frac{1}{2}\int_0^7 + E_1(|\tau-\tau'|) + \left[c_s(\tau') + +\frac{c_f(\tau')}{k}\right] + \phi(\tau')\,d\tau'. + +Let + +.. math:: + + (Kq)(\tau) + =\frac{1}{2}\int_0^7E_1(|\tau-\tau'|)q(\tau')\,d\tau'. + +The eigenproblem can then be rearranged as + +.. math:: + + (I-KC_s)\phi=\frac{1}{k}KC_f\phi, + +or + +.. math:: + + M\phi=k\phi, + \qquad + M=(I-KC_s)^{-1}KC_f. + +One application of :math:`M` first forms the fission source :math:`KC_f\phi` and then solves the fixed-source scattering equation + +.. math:: + + \phi^{(m+1)}=KC_f\phi^{(n)}+KC_s\phi^{(m)} + +to convergence. +Outer power iteration on this operator supplies the dominant multiplication factor and flux mode. + +The reference uses equal optical-width cells :math:`h_\tau` and a symmetric Toeplitz kernel. +Its cell-integrated first column is + +.. math:: + + K_0=1-E_2(h_\tau/2), + +.. math:: + + K_j=\frac{1}{2} + \left[ + E_2((j-\tfrac12)h_\tau) + -E_2((j+\tfrac12)h_\tau) + \right], + \qquad j\geq1. + +The optical mesh is refined by a factor of eight relative to the tally mesh. +The numerical dominant eigenvalue is required to reproduce the published value + +.. math:: + + k=1.17361 + +within a relative tolerance of :math:`10^{-6}`. +Finally, physical cell widths are :math:`\Delta x_j=h_\tau/\Sigma_{t,j}`, the fine mode is normalized by + +.. math:: + + \sum_j\phi_j\Delta x_j=1, + +and groups of eight fine cells are averaged to obtain the MC/DC tally reference. + +Results +------- + +.. grid:: 1 2 3 3 + :gutter: 2 + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--k_eigenvalue--convergence--kornreich_flux.png + :alt: Flux-shape convergence for the Kornreich-Parsons slab. + + Relative fundamental-mode flux-shape error. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--k_eigenvalue--convergence--kornreich_k-effective.png + :alt: Multiplication-factor convergence for the Kornreich-Parsons slab. + + Relative multiplication-factor error. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--k_eigenvalue--convergence--kornreich_k-effective_errorbar.png + :alt: Multiplication-factor estimates and uncertainties for the Kornreich-Parsons slab. + + MC/DC estimates, reported uncertainties, and the published reference. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--k_eigenvalue--comparison--kornreich_flux.png + :alt: Fundamental-mode flux comparison for the Kornreich-Parsons slab. + + Highest-statistics normalized flux and collision-integral reference. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--k_eigenvalue--comparison--kornreich_k_history.png + :alt: Cycle-by-cycle multiplication-factor history for the Kornreich-Parsons slab. + + Inactive and active cycle history, active mean, uncertainty, and reference. + +The flux-shape error and eigenvalue bias decrease overall, although individual sampling levels fluctuate around the ideal guide. +The largest campaign remains slightly below the published multiplication factor, so future campaigns can monitor whether longer active histories remove the residual difference. + +Reference +--------- + +- D. E. Kornreich and D. K. Parsons, `The Green's Function Method for Effective Multiplication Benchmark Calculations in Multi-Region Slab Geometry `_, Annals of Nuclear Energy, 2004. diff --git a/docs/source/project/vvp/verification/analytical/neutron/k_eigenvalue/one_group_slab.rst b/docs/source/project/vvp/verification/analytical/neutron/k_eigenvalue/one_group_slab.rst new file mode 100644 index 000000000..eacb8d9e4 --- /dev/null +++ b/docs/source/project/vvp/verification/analytical/neutron/k_eigenvalue/one_group_slab.rst @@ -0,0 +1,150 @@ +.. _project_vvp_k_eigenvalue_one_group_slab: + +====================================== +Homogeneous One-Group Slab Criticality +====================================== + +**VVP map:** :doc:`Verification <../../../index>` → Analytical → Neutron → k-eigenvalue suite → Finite-slab criticality problems → Homogeneous one-group slab criticality + +**Case files:** `MC/DC-VVP case folder `_ + +Problem setup +------------- + +This one-group multiplying medium occupies a 10 cm slab oriented along the :math:`z` axis with vacuum boundaries. +Its capture, scattering, and fission cross sections are 0.25, 0.50, and 0.25 cm\ :sup:`-1`, respectively, and its prompt neutron yield is 2.519421. +The value of the yield selects a reference multiplication factor of 1.2 for the finite, leakage-dependent system. + +The initial fission source is uniform and isotropic, and the fundamental flux shape is tallied over 100 spatial cells. +Every cycle uses 10,000 particles, with 10 inactive cycles followed by the varied number of active cycles. + +Exercised features +------------------ + +- One-group :math:`k`-eigenvalue transport in finite geometry. +- Leakage through opposing vacuum boundaries. +- Fission-source banking and population control across cycles. +- Inactive-cycle source convergence and active-cycle estimation. +- Spatial fundamental-mode flux tallying and multiplication-factor uncertainty estimation. + +Mathematical derivation +----------------------- + +The one-group transport eigenproblem is + +.. math:: + + \mu\frac{\partial\psi}{\partial z} + +\Sigma_t\psi + =\frac{1}{2} + \left(\Sigma_s+\frac{\nu\Sigma_f}{k}\right)\phi, + \qquad + \phi(z)=\int_{-1}^{1}\psi(z,\mu)\,d\mu, + +with vacuum incidence at :math:`z=0` and :math:`z=L`. +Solving along characteristics from both boundaries and integrating over direction gives the collision-integral equation + +.. math:: + + \phi(z) + =\frac{a}{2} + \int_0^L + E_1\left(\Sigma_t|z-z'|\right) + \phi(z')\,dz', + \qquad + a=\Sigma_s+\frac{\nu\Sigma_f}{k}. + +Define the positive integral operator + +.. math:: + + (K\phi)(z) + =\int_0^L E_1\left(\Sigma_t|z-z'|\right)\phi(z')\,dz'. + +If :math:`K\phi=\lambda_K\phi` for its dominant symmetric eigenmode, then the transport equation requires + +.. math:: + + 1=\frac{a\lambda_K}{2}, + \qquad + a=\frac{2}{\lambda_K}. + +Solving the definition of :math:`a` for the multiplication factor gives + +.. math:: + + k=\frac{\nu\Sigma_f}{2/\lambda_K-\Sigma_s}. + +The reference discretizes :math:`K` on a uniform fine mesh of width :math:`h`. +Because the kernel depends only on separation, the matrix is symmetric Toeplitz. +Using :math:`dE_2(x)/dx=-E_1(x)`, its first-column entries are + +.. math:: + + K_0=\frac{2}{\Sigma_t} + \left[1-E_2\left(\frac{\Sigma_th}{2}\right)\right] + +for the logarithmically singular diagonal cell and + +.. math:: + + K_j=\frac{1}{\Sigma_t} + \left[ + E_2\left(\Sigma_t(j-\tfrac12)h\right) + -E_2\left(\Sigma_t(j+\tfrac12)h\right) + \right], + \qquad j\geq1. + +Power iteration computes :math:`\lambda_K` and its positive mode on a mesh 40 times finer than the tally mesh. +The selected neutron yield gives :math:`k=1.2` from the equation above. +The fine flux is normalized by + +.. math:: + + \sum_j\phi_jh=1, + +then averaged in blocks of 40 cells to form the MC/DC cell-wise reference. + +Results +------- + +.. grid:: 1 2 3 3 + :gutter: 2 + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--k_eigenvalue--convergence--one_group_slab_flux.png + :alt: Flux-shape convergence for the homogeneous one-group slab criticality problem. + + Relative fundamental-mode flux-shape error. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--k_eigenvalue--convergence--one_group_slab_k-effective.png + :alt: Multiplication-factor convergence for the homogeneous one-group slab criticality problem. + + Relative multiplication-factor error. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--k_eigenvalue--convergence--one_group_slab_k-effective_errorbar.png + :alt: Multiplication-factor estimates and uncertainties for the homogeneous one-group slab criticality problem. + + MC/DC estimates, reported uncertainties, and the reference value. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--k_eigenvalue--comparison--one_group_slab_flux.png + :alt: Fundamental-mode flux comparison for the homogeneous one-group slab criticality problem. + + Highest-statistics normalized flux and semi-analytical reference. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--analytical--neutron--k_eigenvalue--comparison--one_group_slab_k_history.png + :alt: Cycle-by-cycle multiplication-factor history for the homogeneous one-group slab criticality problem. + + Inactive and active cycle history, active mean, uncertainty, and reference. + +The multiplication factor converges closely to 1.2 and its uncertainty contracts as active cycles are added. +The flux error is statistically noisier but decreases overall, and the highest-statistics solution reproduces the symmetric leakage-shaped fundamental mode. diff --git a/docs/source/project/vvp/verification/code_to_code/neutron/c5g7-4phase.rst b/docs/source/project/vvp/verification/code_to_code/neutron/c5g7-4phase.rst new file mode 100644 index 000000000..00d31db7f --- /dev/null +++ b/docs/source/project/vvp/verification/code_to_code/neutron/c5g7-4phase.rst @@ -0,0 +1,89 @@ +.. _project_vvp_code_to_code_neutron_c5g7_4phase: + +========================== +C5G7 Four-Phase Transient +========================== + +**VVP map:** :doc:`Verification <../../index>` → Code-to-code → Neutron suite → C5G7 four-phase transient + +**Case files:** `MC/DC-VVP case folder `_ + +Problem setup +------------- + +This seven-group problem adapts the heterogeneous C5G7 time-dependent benchmark into four source- and control-rod-driven phases over a 20-second calculation. +The modeled quadrant contains four 17-by-17 fuel assemblies—two uranium-dioxide and two mixed-oxide assemblies—surrounded on its outer sides and bottom by moderator reflectors. +Symmetry planes are reflective, while the exterior radial and axial boundaries are vacuum. + +The pin pitch is 1.26 cm, the fuel radius is 0.54 cm, the active core height is 128.52 cm, and the reflector thickness is 21.42 cm. +The material set contains uranium-dioxide fuel, three mixed-oxide enrichments, guide tubes, fission chambers, control rods, and moderator. +Four control-rod banks follow independent piecewise-linear insertion histories, exercising continuously moving surfaces throughout the transient. + +An isotropic highest-energy-group source occupies the central active pin of the fourth assembly from time zero through 15 seconds. +The quantity of interest is the seven-group fission rate tallied from zero through 20 seconds in 200 time intervals on a 34-by-34-by-102 pin-pitch-resolved spatial mesh. + +Exercised features +------------------ + +- Three-dimensional seven-group time-dependent transport. +- Nested pin-cell, lattice, assembly, and reflector geometry. +- Continuously moving control-rod surfaces with independent motion schedules. +- Prompt and delayed fission-neutron physics. +- Time-dependent localized source sampling. +- Pin-pitch-resolved space-time fission-rate tallying. +- Reflective symmetry and vacuum leakage boundaries. + +Comparison data +--------------- + +MC/DC and OpenMC use equivalent benchmark definitions and 30 batches at five particle levels. +The configured particles per batch range from :math:`10^5` through :math:`10^7`, corresponding to :math:`3\times10^6` through :math:`3\times10^8` total histories. +The archived OpenMC results and benchmark definition are preserved in the associated Zenodo record. + +The fixed normalization field is the arithmetic mean of the largest MC/DC and OpenMC fission-rate arrays. +All lower-sampling comparisons use that same field, preventing the reference itself from changing with particle count. + +Comparison derivation +--------------------- + +.. include:: ../../_derivations/code_to_code.inc + +Results +------- + +.. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--code_to_code--neutron--convergence--c5g7-4phase_convergence_fission.png + :alt: MC/DC and OpenMC fission-rate convergence for the C5G7 four-phase transient. + + Relative 2-norm and maximum fission-rate differences as the common sampling effort increases. + +.. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--code_to_code--neutron--reference--c5g7-4phase_reference_fission.gif + :alt: Animated fixed fission-rate reference for the C5G7 four-phase transient. + + Fixed largest-sample reference formed by averaging the MC/DC and OpenMC fission-rate estimates, shown through its orthogonal projections together with the integrated fission-rate history. + +.. grid:: 1 2 2 2 + :gutter: 2 + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--code_to_code--neutron--comparison--c5g7-4phase_comparison.gif + :alt: Animated MC/DC and OpenMC fission-rate comparison for the C5G7 four-phase transient. + + Orthogonal fission-rate projections from the largest shared sample. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--code_to_code--neutron--comparison--c5g7-4phase_difference.gif + :alt: Animated relative fission-rate differences for the C5G7 four-phase transient. + + Spatial relative differences and their root-mean-square history. + +The reference animation presents the common space-time solution against which the convergence metrics are normalized. +Both difference metrics decline with increasing histories at approximately the expected statistical rate. +The animations show how the fission-rate field responds to the four independently moving rod banks and expose where the remaining MC/DC–OpenMC differences are concentrated at each time. + +References +---------- + +- I. Variansyah, `Four-Phase C5G7 Transient Benchmark for Neutron Transport `_, Zenodo, 2025. +- J. Hou, K. N. Ivanov, V. F. Boyarinov, and P. A. Fomichenko, `OECD/NEA Benchmark for Time-Dependent Neutron Transport Calculations Without Spatial Homogenization `_, Nuclear Engineering and Design, 2017. diff --git a/docs/source/project/vvp/verification/code_to_code/neutron/kobayashi.rst b/docs/source/project/vvp/verification/code_to_code/neutron/kobayashi.rst new file mode 100644 index 000000000..870f08be0 --- /dev/null +++ b/docs/source/project/vvp/verification/code_to_code/neutron/kobayashi.rst @@ -0,0 +1,99 @@ +.. _project_vvp_code_to_code_neutron_kobayashi: + +================================ +Kobayashi Dog-Leg Transient +================================ + +**VVP map:** :doc:`Verification <../../index>` → Code-to-code → Neutron suite → Kobayashi dog-leg transient + +**Case files:** `MC/DC-VVP case folder `_ + +Problem setup +------------- + +This one-group problem adapts the Kobayashi three-dimensional shielding benchmark by pulsing a source into a low-density dog-leg channel. +The first octant spans 60 by 100 by 60 cm, with reflection on the three symmetry planes and vacuum on the outer boundaries. +The shield material has capture and scattering cross sections of 0.05 cm\ :sup:`-1`, while both values are :math:`5\times10^{-5}` cm\ :sup:`-1` in the nominal void. + +The source occupies the 10 cm cube at the origin and emits isotropically from time zero through 50. +Four connected rectangular channel segments turn first through the :math:`x`–:math:`y` plane and then upward in :math:`z`, producing severe streaming and large attenuation away from the source. + +The space-time flux is tallied from zero through 200 in 100 time intervals on a uniform 1 cm mesh containing 60 by 100 by 60 cells. +A second tally records the total neutron-density history over the same time grid. + +Exercised features +------------------ + +- Three-dimensional one-group time-dependent transport. +- Streaming through connected low-density channel segments. +- Pulsed isotropic volume-source sampling. +- Reflective symmetry and vacuum outer boundaries. +- Large structured-mesh space-time flux tallying. +- Global neutron-density tallying. + +Comparison data +--------------- + +MC/DC and OpenMC use equivalent benchmark definitions and 30 batches at five particle levels. +The configured particles per batch range from :math:`10^8` through :math:`10^{10}`, corresponding to :math:`3\times10^9` through :math:`3\times10^{11}` total histories. +The large history counts are required to resolve particles that stream through the channel and reach remote regions. + +The archived OpenMC calculations are preserved in the associated Zenodo record. +For each scored quantity, the arithmetic mean of the largest MC/DC and OpenMC arrays supplies the fixed normalization reference used at all sampling levels. + +Comparison derivation +--------------------- + +.. include:: ../../_derivations/code_to_code.inc + +Results +------- + +.. grid:: 1 2 2 2 + :gutter: 2 + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--code_to_code--neutron--convergence--kobayashi_convergence_flux.png + :alt: MC/DC and OpenMC flux convergence for the Kobayashi transient. + + Relative 2-norm and maximum space-time flux differences. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--code_to_code--neutron--convergence--kobayashi_convergence_density.png + :alt: MC/DC and OpenMC neutron-density convergence for the Kobayashi transient. + + Relative 2-norm and maximum neutron-density-history differences. + +.. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--code_to_code--neutron--reference--kobayashi_reference_flux.gif + :alt: Animated fixed flux reference for the Kobayashi transient. + + Fixed largest-sample reference formed by averaging the MC/DC and OpenMC flux estimates, shown through its orthogonal projections together with the corresponding reference neutron-density history. + +.. grid:: 1 2 2 2 + :gutter: 2 + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--code_to_code--neutron--comparison--kobayashi_comparison.gif + :alt: Animated MC/DC and OpenMC flux comparison for the Kobayashi transient. + + Orthogonal flux projections and neutron-density histories from the largest shared sample. + + .. grid-item:: + + .. figure:: https://github.com/mcdc-project/mcdc/releases/download/vvp-results/verification--code_to_code--neutron--comparison--kobayashi_difference.gif + :alt: Animated relative differences for the Kobayashi transient. + + Spatial flux differences and neutron-density differences throughout the transient. + +The reference animation presents the common space-time solution against which the convergence metrics are normalized. +The flux differences decrease cleanly at approximately the inverse-square-root rate across the five sampling levels. +The density differences decrease through most of the campaign but fluctuate at the largest level, illustrating why the complete trend and spatial animations are more informative than any single scalar comparison. + +References +---------- + +- I. Variansyah, `Time-Dependent Kobayashi Dog-Leg Benchmark for Neutron Transport `_, Zenodo, 2025. +- K. Kobayashi, N. Sugimura, and Y. Nagaya, `3D Radiation Transport Benchmark Problems and Results for Simple Geometries with Void Region `_, Progress in Nuclear Energy, 2001. diff --git a/docs/source/project/vvp/verification/index.rst b/docs/source/project/vvp/verification/index.rst new file mode 100644 index 000000000..79e7b0d63 --- /dev/null +++ b/docs/source/project/vvp/verification/index.rst @@ -0,0 +1,108 @@ +.. _project_vvp_verification: + +============ +Verification +============ + +Verification assesses whether MC/DC correctly solves its stated mathematical and numerical problems. +:doc:`Unit tests <../../../developer_guide/contributing/unit_testing>` verify individual components, interfaces, and edge cases, while VVP uses analytical and code-to-code comparisons to test complete simulations through full-transport problems. +These separate activities provide verification evidence at complementary scales. + +Verification suites and cases +----------------------------- + +The current VVP verification program is organized first by verification method, then by particle type, suite, and case. + +- **Analytical verification** — Provides the strongest direct test when an analytical, manufactured, or accurately converged semi-analytical reference is available. + + - **Neutron** — Covers fixed-source and :math:`k`-eigenvalue neutron transport. + + - **Fixed-source suite** — Tests error convergence as the source-particle count increases. + + - **Slab problems** — Exercise one-dimensional geometry, materials, sources, energy groups, and time dependence. + + - :doc:`Absorbium slab ` + - :doc:`Manufactured two-group slab ` + - :doc:`Time-dependent isotropic-beam slab ` + - :doc:`Reed's slab problem ` + + - **AZURV1 variants** — Test criticality, censuses, tally recombination, and variance reduction on one transient problem. + + - :doc:`Base critical problem ` + - :doc:`Subcritical medium ` + - :doc:`Supercritical medium ` + - :doc:`Time censuses ` + - :doc:`Census-based tallying ` + - :doc:`Basic variance reduction ` + - :doc:`Weight windows ` + + - **Infinite-medium SHEM-361 variants** — Test 361-group steady-state and transient transport, weight windows, and censuses without spatial leakage. + + - :doc:`Steady-state ` + - :doc:`Steady-state with weight windows ` + - :doc:`Transient ` + - :doc:`Transient with time censuses ` + + - **k-eigenvalue suite** — Tests multiplication-factor and fundamental-mode convergence with active cycles. + + - **Finite-slab criticality problems** — Test leakage-dependent modes in homogeneous and heterogeneous one-group slabs. + + - :doc:`Homogeneous one-group slab criticality ` + - :doc:`Kornreich-Parsons slab ` + + - **Infinite-medium SHEM-361 variants** — Test 361-group eigenpairs below and above criticality without spatial leakage. + + - :doc:`Subcritical ` + - :doc:`Supercritical ` + +- **Code-to-code verification** — Extends verification to complex problems without tractable analytical references and tests whether differences between independent codes decrease at the expected statistical rate. + Convergence increases confidence in the implementations and helps expose modeling or numerical discrepancies. + Agreement does not establish correctness because the codes may share assumptions, defects, or biases. + + - **Neutron suite** — Covers multidimensional reactor and shielding transients. + + - :doc:`C5G7 four-phase transient ` + - :doc:`Kobayashi dog-leg transient ` + +Reading verification results +---------------------------- + +Monte Carlo estimates fluctuate statistically, so a single close comparison is not sufficient evidence of convergence. +The verification suites repeat each case over a sequence of sampling levels and compare the observed error or difference with the expected inverse-square-root behavior. +For a source-particle count :math:`N`, ordinary Monte Carlo sampling predicts errors proportional to :math:`N^{-1/2}` when statistical uncertainty dominates. +The fixed-source suites therefore vary the number of source particles and report a relative 2-norm together with a maximum relative error or difference. + +The :math:`k`-eigenvalue suite instead varies the number of active cycles while holding the particles per cycle and inactive cycles fixed within each case. +Its convergence plots test the corresponding :math:`N_\mathrm{active}^{-1/2}` behavior, while its uncertainty plots show whether the reference multiplication factor is consistent with the reported MC/DC uncertainty. + +Solution plots use the task with the largest sampling effort to show where MC/DC agrees with or departs from the reference. +Time-dependent solution comparisons animate spatial or energy-dependent behavior throughout the transient. + +For code-to-code cases, the arithmetic mean of the participating-code estimates at the largest common sampling level defines one fixed comparison reference for the entire convergence study. +The pairwise relative differences at every sampling level are normalized by that reference. +Decay proportional to :math:`N^{-1/2}` indicates that the codes are approaching the same solution at the expected statistical rate, whereas a persistent plateau may indicate a modeling discrepancy, implementation bias, or insufficiently resolved reference. + +.. toctree:: + :hidden: + + analytical/neutron/fixed_source/slab_absorbium + analytical/neutron/fixed_source/mms_two_group_slab + analytical/neutron/fixed_source/slab_isobeam_td + analytical/neutron/fixed_source/reed + analytical/neutron/fixed_source/azurv1 + analytical/neutron/fixed_source/azurv1_sub + analytical/neutron/fixed_source/azurv1_super + analytical/neutron/fixed_source/azurv1-census + analytical/neutron/fixed_source/azurv1-census-tally + analytical/neutron/fixed_source/azurv1-basic_techniques + analytical/neutron/fixed_source/azurv1-weight_windows + analytical/neutron/fixed_source/inf_shem361 + analytical/neutron/fixed_source/inf_shem361-weight_windows + analytical/neutron/fixed_source/inf_shem361_td + analytical/neutron/fixed_source/inf_shem361_td-census + analytical/neutron/k_eigenvalue/one_group_slab + analytical/neutron/k_eigenvalue/kornreich + analytical/neutron/k_eigenvalue/inf_shem361_subcritical + analytical/neutron/k_eigenvalue/inf_shem361_supercritical + code_to_code/neutron/c5g7-4phase + code_to_code/neutron/kobayashi