diff --git a/docs/source/usersguide/input.rst b/docs/source/usersguide/input.rst index c9aa8cc866..301f7f52de 100644 --- a/docs/source/usersguide/input.rst +++ b/docs/source/usersguide/input.rst @@ -1238,14 +1238,26 @@ Currently, it allows users to accelerate fission source convergence during inactive neutron batches. To run CMFD, the ```` element in ``settings.xml`` should be set to "true". -```` Element --------------------------- +```` Element +-------------------- -The ```` element controls the batch where CMFD tallies should be -reset. CMFD tallies should be reset before active batches so they are accumulated -without bias. +The ```` element specifies the absolute inner tolerance on the Gauss-Seidel +when performing CMFD calculations. It is only used in the standalone CMFD solver +and not when PETSc is active. + + *Default*: 1.e-10 + +```` Element +------------------- + +The ```` element controls whether exact neutron balance should be enforced +from CMFD tallies before creating CMFD matrices. This changes effective downscatter +cross section and thermal flux to create exact balance. It should be noted that +this option has led to instabilities when performing CMFD. It can be turned on +with "true" and off with "false". + + *Default*: false - *Default*: 0 ```` Element ------------------- @@ -1268,7 +1280,25 @@ The ```` element sets one additional CMFD output column. Options are: * "source" - prints the RMS [%] between the OpenMC fission source and CMFD fission source. - *Default*: None + *Default*: balance + +```` Element +------------------- + +The ```` element controls whether dhat nonlinear CMFD parameters +should be reset to zero before solving CMFD eigenproblem. It can be turned on with +"true" and off with "false". + + *Default*: false + +```` Element +------------------- + +The ```` element controls whether an effective downscatter cross +section should be used when using 2-group CMFD. It can be turned on with "true" +and off with "false". + + *Default*: false ```` Element ---------------------- @@ -1279,25 +1309,6 @@ It can be turned on with "true" and off with "false". *Default*: false -```` Element ----------------------- - -The ```` element controls if cmfd tallies should be accumulated -during inactive batches. For some applications, CMFD tallies may not be -needed until the start of active batches. This option can be turned on -with "true" and off with "false" - - *Default*: true - -```` Element ----------------------------- - -The ```` element controls when CMFD tallies are reset during -inactive batches. The integer set here is the interval at which this reset -occurs. The amout of resets is controlled with the ```` element. - - *Defualt*: 9999 - ```` Element ------------------------- @@ -1305,9 +1316,16 @@ The ```` element is used to view the convergence of linear GMRES iterations in PETSc. This option can be turned on with "true" and turned off with "false". - *Default*: false +```` Element +-------------------- + +The ```` element specifies the tolerance on the eigenvalue when performing +CMFD power iteration. + + *Default*: 1.e-8 + ```` Element ------------------ @@ -1376,14 +1394,6 @@ not impact the calculation. *Default*: 1.0 -```` Element -------------------------- - -The ```` element controls the number of CMFD tally resets that -occur during inactive CMFD batches. - - *Default*: 9999 - ```` Element --------------------------- @@ -1392,20 +1402,21 @@ This option can be turned on with "true" and turned off with "false". *Default*: false +```` Element +-------------------- + +The ```` element specifies the relative inner tolerance on the Gauss-Seidel +when performing CMFD calculations. It is only used in the standalone CMFD solver +and not when PETSc is active. + + *Default*: 1.e-5 + ```` Element ------------------------- The ```` element can be turned on with "true" to have an adjoint -calculation be performed on the last batch when CMFD is active. - - *Default*: false - -```` Element --------------------------- - -The ```` element is used to view the convergence of the nonlinear SNES -function in PETSc. This option can be turned on with "true" and turned off with "false". - +calculation be performed on the last batch when CMFD is active. OpenMC should be +compiled with PETSc when using this option. *Default*: false @@ -1418,6 +1429,41 @@ By setting "power", power iteration is used and by setting "jfnk", JFNK is used. *Default*: power +```` Element +-------------------- + +The ```` element specifies an optional Wielandt shift parameter for +accelerating power iterations. It can only be used when PETSc is not active. +It is by default very large so the impact of the shift is effectively zero. + + *Default*: 1e6 + +```` Element +-------------------- + +The ```` element specifies an optional spectral radius that can be set to +accelerate the convergence of Gauss-Seidel iterations during CMFD power iteration +solve. Note this is only used in the standalone CMFD solver and does not affect +the calculation when PETSc is active. + + *Default*: power + +```` Element +-------------------- + +The ```` element specifies the tolerance on the fission source when performing +CMFD power iteration. + + *Default*: 1.e-8 + +```` Element +-------------------- + +The ```` element contains a list of batch numbers in which CMFD tallies +should be reset. + + *Default*: None + ```` Element ---------------------------- diff --git a/src/cmfd_execute.F90 b/src/cmfd_execute.F90 index f89f8c3c46..fe19bd95b7 100644 --- a/src/cmfd_execute.F90 +++ b/src/cmfd_execute.F90 @@ -82,7 +82,7 @@ contains subroutine cmfd_init_batch() - use global, only: cmfd_begin, cmfd_on, cmfd_tally_on, & + use global, only: cmfd_begin, cmfd_on, & cmfd_reset, cmfd_run, & current_batch, cmfd_hold_weights @@ -91,7 +91,6 @@ contains ! accumulated if (cmfd_run .and. cmfd_begin == current_batch) then cmfd_on = .true. - cmfd_tally_on = .true. end if ! If this is a restart run and we are just replaying batches leave diff --git a/src/cmfd_input.F90 b/src/cmfd_input.F90 index 2cd3d1f619..0523325c9a 100644 --- a/src/cmfd_input.F90 +++ b/src/cmfd_input.F90 @@ -173,7 +173,7 @@ contains dhat_reset = .true. end if - ! Enforce perfect neutorn balance + ! Enforce perfect neutron balance if (check_for_node(doc, "balance")) then call get_node_value(doc, "balance", temp_str) call lower_case(temp_str) @@ -218,6 +218,10 @@ contains call get_node_value(doc, "run_adjoint", temp_str) call lower_case(temp_str) if (trim(temp_str) == 'true' .or. trim(temp_str) == '1') & +#ifndef PETSC + message = 'Must use PETSc when running adjoint option.' + call fatal_error() +#endif cmfd_run_adjoint = .true. end if @@ -225,14 +229,6 @@ contains if (check_for_node(doc, "begin")) & call get_node_value(doc, "begin", cmfd_begin) - ! Tally during inactive batches - if (check_for_node(doc, "inactive")) then - call get_node_value(doc, "inactive", temp_str) - call lower_case(temp_str) - if (trim(temp_str) == 'false' .or. trim(temp_str) == '0') & - cmfd_tally_on = .false. - end if - ! Check for cmfd tally resets if (check_for_node(doc, "tally_reset")) then n_cmfd_resets = get_arraysize_integer(doc, "tally_reset") diff --git a/src/global.F90 b/src/global.F90 index 02a87051f4..3b9b8bfeea 100644 --- a/src/global.F90 +++ b/src/global.F90 @@ -367,7 +367,6 @@ module global ! CMFD run logicals logical :: cmfd_on = .false. - logical :: cmfd_tally_on = .true. ! CMFD display info character(len=25) :: cmfd_display = 'balance'