From 9f527f04cdd1c5dbfcc2e6003bc6a7a0cc57ed71 Mon Sep 17 00:00:00 2001 From: Paul Romano Date: Tue, 20 Nov 2012 15:41:12 -0500 Subject: [PATCH] Removed n_events from TallyScore and added 'events' score type. --- docs/source/releasenotes/notes_0.5.0.rst | 1 + docs/source/usersguide/input.rst | 3 +++ src/constants.F90 | 5 +++-- src/initialize.F90 | 2 +- src/input_xml.F90 | 3 +++ src/tally.F90 | 19 +++++++++++++++++-- src/tally_header.F90 | 1 - 7 files changed, 28 insertions(+), 6 deletions(-) diff --git a/docs/source/releasenotes/notes_0.5.0.rst b/docs/source/releasenotes/notes_0.5.0.rst index 5d5af8ef93..fd01037fcb 100644 --- a/docs/source/releasenotes/notes_0.5.0.rst +++ b/docs/source/releasenotes/notes_0.5.0.rst @@ -17,6 +17,7 @@ the problem at hand (mostly on the number of nuclides in the problem). New Features ------------ +- Added 'events' score that returns number of events that scored to a tally. - Restructured tally filter implementation and user input. - Source convergence acceleration via CMFD (implemented with PETSC). - Ability to read source files in parallel when number of particles is greater diff --git a/docs/source/usersguide/input.rst b/docs/source/usersguide/input.rst index 2a5b146899..0192f30dfe 100644 --- a/docs/source/usersguide/input.rst +++ b/docs/source/usersguide/input.rst @@ -824,6 +824,9 @@ The following responses can be tallied. :nu-fission: Total production of neutrons due to fission + :events: + Number of scoring events + ```` Element ------------------ diff --git a/src/constants.F90 b/src/constants.F90 index 6ebab532b3..eb4e5e7003 100644 --- a/src/constants.F90 +++ b/src/constants.F90 @@ -251,7 +251,7 @@ module constants EVENT_FISSION = 3 ! Tally score type - integer, parameter :: N_SCORE_TYPES = 17 + integer, parameter :: N_SCORE_TYPES = 18 integer, parameter :: & SCORE_FLUX = -1, & ! flux SCORE_TOTAL = -2, & ! total reaction rate @@ -269,7 +269,8 @@ module constants SCORE_ABSORPTION = -14, & ! absorption rate SCORE_FISSION = -15, & ! fission rate SCORE_NU_FISSION = -16, & ! neutron production rate - SCORE_CURRENT = -17 ! partial current + SCORE_CURRENT = -17, & ! partial current + SCORE_EVENTS = -18 ! number of events ! Tally map bin finding integer, parameter :: NO_BIN_FOUND = -1 diff --git a/src/initialize.F90 b/src/initialize.F90 index 53e7114fc2..cdf852a139 100644 --- a/src/initialize.F90 +++ b/src/initialize.F90 @@ -213,7 +213,7 @@ contains ! CREATE MPI_TALLYSCORE TYPE ! Determine displacements for MPI_BANK type - call MPI_GET_ADDRESS(ts % n_events, score_base_disp, mpi_err) + call MPI_GET_ADDRESS(ts % value, score_base_disp, mpi_err) call MPI_GET_ADDRESS(ts % sum, score_disp(1), mpi_err) ! Adjust displacements diff --git a/src/input_xml.F90 b/src/input_xml.F90 index 53cf6e6e6e..d387d9f772 100644 --- a/src/input_xml.F90 +++ b/src/input_xml.F90 @@ -1764,6 +1764,9 @@ contains OUT_RIGHT, IN_FRONT, OUT_FRONT, IN_TOP, OUT_TOP /) end if t % find_filter(FILTER_SURFACE) = t % n_filters + + case ('events') + t % score_bins(j) = SCORE_EVENTS case default message = "Unknown scoring function: " // & diff --git a/src/tally.F90 b/src/tally.F90 index 8bff2a8d40..9f39f5385a 100644 --- a/src/tally.F90 +++ b/src/tally.F90 @@ -304,6 +304,10 @@ contains end if + case (SCORE_EVENTS) + ! Simply count number of scoring events + score = ONE + case default message = "Invalid score type on tally " // to_str(t % id) // "." call fatal_error() @@ -505,6 +509,8 @@ contains case (SCORE_NU_FISSION) score = micro_xs(i_nuclide) % nu_fission * & atom_density * flux + case (SCORE_EVENTS) + score = ONE case default message = "Invalid score type on tally " // to_str(t % id) // "." call fatal_error() @@ -525,6 +531,8 @@ contains score = material_xs % fission * flux case (SCORE_NU_FISSION) score = material_xs % nu_fission * flux + case (SCORE_EVENTS) + score = ONE case default message = "Invalid score type on tally " // to_str(t % id) // "." call fatal_error() @@ -617,6 +625,8 @@ contains score = micro_xs(i_nuclide) % fission * atom_density * flux case (SCORE_NU_FISSION) score = micro_xs(i_nuclide) % nu_fission * atom_density * flux + case (SCORE_EVENTS) + score = ONE case default message = "Invalid score type on tally " // to_str(t % id) // "." call fatal_error() @@ -655,6 +665,8 @@ contains score = material_xs % fission * flux case (SCORE_NU_FISSION) score = material_xs % nu_fission * flux + case (SCORE_EVENTS) + score = ONE case default message = "Invalid score type on tally " // to_str(t % id) // "." call fatal_error() @@ -917,6 +929,8 @@ contains case (SCORE_NU_FISSION) score = micro_xs(i_nuclide) % nu_fission * & atom_density * flux + case (SCORE_EVENTS) + score = ONE case default message = "Invalid score type on tally " // & to_str(t % id) // "." @@ -938,6 +952,8 @@ contains score = material_xs % fission * flux case (SCORE_NU_FISSION) score = material_xs % nu_fission * flux + case (SCORE_EVENTS) + score = ONE case default message = "Invalid score type on tally " // & to_str(t % id) // "." @@ -1614,6 +1630,7 @@ contains score_name(abs(SCORE_ABSORPTION)) = "Absorption Rate" score_name(abs(SCORE_FISSION)) = "Fission Rate" score_name(abs(SCORE_NU_FISSION)) = "Nu-Fission Rate" + score_name(abs(SCORE_EVENTS)) = "Events" ! Create filename for tally output if (run_mode == MODE_TALLIES) then @@ -2037,7 +2054,6 @@ contains type(TallyScore), intent(inout) :: score real(8), intent(in) :: val - score % n_events = score % n_events + 1 score % value = score % value + val end subroutine add_to_score @@ -2095,7 +2111,6 @@ contains type(TallyScore), intent(inout) :: score - score % n_events = 0 score % value = ZERO score % sum = ZERO score % sum_sq = ZERO diff --git a/src/tally_header.F90 b/src/tally_header.F90 index 6948d943d1..492927eaed 100644 --- a/src/tally_header.F90 +++ b/src/tally_header.F90 @@ -39,7 +39,6 @@ module tally_header !=============================================================================== type TallyScore - integer :: n_events = 0 real(8) :: value = 0. real(8) :: sum = 0. real(8) :: sum_sq = 0.