merged Pauls changes and added in appropriate output format for CMFD

This commit is contained in:
Bryan Herman 2012-04-13 13:40:03 -07:00
commit a2502d30bd
3 changed files with 96 additions and 79 deletions

View file

@ -4,7 +4,7 @@ module criticality
use global
use intercycle, only: shannon_entropy, calculate_keff, synchronize_bank, &
count_source_for_ufs
use output, only: write_message, header
use output, only: write_message, header, print_columns
use physics, only: transport
use source, only: get_source_particle
use string, only: to_str
@ -31,31 +31,7 @@ contains
allocate(p)
! Display column titles
if (entropy_on) then
if (cmfd_on) then
message = " Cycle k(batch) Entropy Average k CMFD k CMFD Ent."
call write_message(1)
message = " ===== ======== ======= =================== ========== ========="
call write_message(1)
else
message = " Cycle k(batch) Entropy Average k"
call write_message(1)
message = " ===== ======== ======= ==================="
call write_message(1)
end if
else
if (cmfd_on) then
message = " Cycle k(batch) Average k CMFD k"
call write_message(1)
message = " ===== ======== =================== =========="
call write_message(1)
else
message = " Cycle k(batch) Average k"
call write_message(1)
message = " ===== ======== ==================="
call write_message(1)
end if
end if
call print_columns()
! ==========================================================================
! LOOP OVER BATCHES
@ -143,8 +119,6 @@ contains
subroutine finalize_batch()
use cmfd_execute, only: execute_cmfd
! Collect tallies
if (tallies_on) then
call timer_start(time_ic_tallies)
@ -158,11 +132,6 @@ contains
! Collect results and statistics
call calculate_keff()
! run cmfd
if (current_batch > n_inactive .and. cmfd_on) then
call execute_cmfd()
end if
! Turn tallies on once inactive cycles are complete
if (current_batch == n_inactive) then
tallies_on = .true.

View file

@ -2,11 +2,12 @@ module intercycle
use, intrinsic :: ISO_FORTRAN_ENV
use cmfd_execute, only: execute_cmfd
use error, only: fatal_error, warning
use global
use mesh, only: count_bank_sites
use mesh_header, only: StructuredMesh
use output, only: write_message
use output, only: write_message, print_batch_keff
use random_lcg, only: prn, set_particle_seed, prn_skip
use search, only: binary_search
use string, only: to_str
@ -350,7 +351,7 @@ contains
!===============================================================================
! CALCULATE_KEFF calculates the single batch estimate of keff as well as the
! mean and standard deviation of the mean for active batches and displays them
! mean and standard deviation of the mean for active batches
!===============================================================================
subroutine calculate_keff()
@ -430,47 +431,13 @@ contains
end if
end if
! Display output for this batch
if (master) then
if (current_batch > n_inactive + 1) then
if (entropy_on) then
if (cmfd_on) then
write(UNIT=OUTPUT_UNIT, FMT=104) current_batch, k_batch, &
entropy, keff, keff_std, cmfd%keff, cmfd%entropy
else
write(UNIT=OUTPUT_UNIT, FMT=103) current_batch, k_batch, &
entropy, keff, keff_std
end if
else
if (cmfd_on) then
write(UNIT=OUTPUT_UNIT, FMT=105) current_batch, k_batch, &
keff, keff_std, cmfd%keff
else
write(UNIT=OUTPUT_UNIT, FMT=101) current_batch, k_batch, &
keff, keff_std
end if
end if
else
if (entropy_on) then
write(UNIT=OUTPUT_UNIT, FMT=102) current_batch, k_batch, entropy
else
write(UNIT=OUTPUT_UNIT, FMT=100) current_batch, k_batch
end if
end if
end if
! perform CMFD calculation if on
if (cmfd_on) call execute_cmfd()
else
! =======================================================================
! INACTIVE BATCHES
! Display output for inactive batch
if (master) then
if (entropy_on) then
write(UNIT=OUTPUT_UNIT, FMT=102) current_batch, k_batch, entropy
else
write(UNIT=OUTPUT_UNIT, FMT=100) current_batch, k_batch
end if
end if
! Set keff
keff = k_batch
@ -478,18 +445,14 @@ contains
global_tallies(:) % value = ZERO
end if
! Display output
if (master) call print_batch_keff()
#ifdef MPI
! Broadcast new keff value to all processors
call MPI_BCAST(keff, 1, MPI_REAL8, 0, MPI_COMM_WORLD, mpi_err)
#endif
100 format (2X,I5,2X,F8.5)
101 format (2X,I5,2X,F8.5,5X,F8.5," +/-",F8.5)
102 format (2X,I5,2X,F8.5,3X,F8.5)
103 format (2X,I5,2X,F8.5,3X,F8.5,3X,F8.5," +/-",F8.5)
104 format (2X,I5,2X,F8.5,3X,F8.5,3X,F8.5," +/-",F8.5,2X,F8.5,4X,F8.5)
105 format (2X,I5,2X,F8.5,5X,F8.5," +/-",F8.5,2X,F8.5)
end subroutine calculate_keff
!===============================================================================

View file

@ -933,6 +933,91 @@ contains
end subroutine print_summary
!===============================================================================
! PRINT_COLUMNS displays a header listing what physical values will displayed
! below them
!===============================================================================
subroutine print_columns()
if (entropy_on) then
if (cmfd_on) then
message = " Cycle k(batch) Entropy Average k CMFD k CMFD Ent."
call write_message(1)
message = " ===== ======== ======= =================== ========== ========="
call write_message(1)
else
message = " Cycle k(batch) Entropy Average k"
call write_message(1)
message = " ===== ======== ======= ==================="
call write_message(1)
end if
else
if (cmfd_on) then
message = " Cycle k(batch) Average k CMFD k"
call write_message(1)
message = " ===== ======== =================== =========="
call write_message(1)
else
message = " Cycle k(batch) Average k"
call write_message(1)
message = " ===== ======== ==================="
call write_message(1)
end if
end if
end subroutine print_columns
!===============================================================================
! PRINT_BATCH_KEFF displays the last batch's tallied value of the neutron
! multiplication factor as well as the average value if we're in active batches
!===============================================================================
subroutine print_batch_keff()
if (current_batch <= n_inactive) then
! ======================================================================
! INACTIVE BATCHES
if (entropy_on) then
write(UNIT=OUTPUT_UNIT, FMT=102) current_batch, k_batch, entropy
else
write(UNIT=OUTPUT_UNIT, FMT=100) current_batch, k_batch
end if
elseif (current_batch >= n_inactive + 1) then
! ======================================================================
! ACTIVE BATCHES
if (entropy_on) then
if (cmfd_on) then
write(UNIT=OUTPUT_UNIT, FMT=104) current_batch, k_batch, &
entropy, keff, keff_std, cmfd%keff, cmfd%entropy
else
write(UNIT=OUTPUT_UNIT, FMT=103) current_batch, k_batch, &
entropy, keff, keff_std
end if
else
if (cmfd_on) then
write(UNIT=OUTPUT_UNIT, FMT=105) current_batch, k_batch, &
keff, keff_std, cmfd%keff
else
write(UNIT=OUTPUT_UNIT, FMT=101) current_batch, k_batch, &
keff, keff_std
end if
end if
end if
100 format (2X,I5,2X,F8.5)
101 format (2X,I5,2X,F8.5,5X,F8.5," +/-",F8.5)
102 format (2X,I5,2X,F8.5,3X,F8.5)
103 format (2X,I5,2X,F8.5,3X,F8.5,3X,F8.5," +/-",F8.5)
104 format (2X,I5,2X,F8.5,3X,F8.5,3X,F8.5," +/-",F8.5,2X,F8.5,4X,F8.5)
105 format (2X,I5,2X,F8.5,5X,F8.5," +/-",F8.5,2X,F8.5)
end subroutine print_batch_keff
!===============================================================================
! PRINT_PLOT displays selected options for plotting
!===============================================================================