diff --git a/openmc/tallies.py b/openmc/tallies.py index 3d37da65b2..5a857d4e13 100644 --- a/openmc/tallies.py +++ b/openmc/tallies.py @@ -1565,8 +1565,8 @@ class Tally(object): return data - def get_pandas_dataframe(self, filters=True, nuclides=True, - scores=True, derivative=True, summary=None, + def get_pandas_dataframe(self, filters=True, nuclides=True, scores=True, + derivative=True, summary=None, float_format='{:.2e}'): """Build a Pandas DataFrame for the Tally data. diff --git a/src/state_point.F90 b/src/state_point.F90 index d4fb2c21de..1cbe59c9c6 100644 --- a/src/state_point.F90 +++ b/src/state_point.F90 @@ -353,6 +353,7 @@ contains tally_derivs(tally % deriv) % id) end if + ! Write scores. call write_dataset(tally_group, "n_score_bins", tally % n_score_bins) allocate(str_array(size(tally % score_bins))) do j = 1, size(tally % score_bins) diff --git a/src/tally.F90 b/src/tally.F90 index 072fb7c0c6..0a5b7b3b4e 100644 --- a/src/tally.F90 +++ b/src/tally.F90 @@ -3069,6 +3069,16 @@ contains score = score * deriv % flux_deriv end if + case (SCORE_SCATTER) + if (materials(p % material) % id == deriv % diff_material & + .and. material_xs % total - material_xs % absorption /= ZERO) & + then + score = score * (deriv % flux_deriv + ONE & + / materials(p % material) % density_gpcc) + else + score = score * deriv % flux_deriv + end if + case (SCORE_ABSORPTION) if (materials(p % material) % id == deriv % diff_material & .and. material_xs % absorption /= ZERO) then @@ -3147,6 +3157,22 @@ contains score = score * deriv % flux_deriv end if + case (SCORE_SCATTER) + if (i_nuclide == -1 .and. & + materials(p % material) % id == deriv % diff_material .and. & + material_xs % total - material_xs % absorption /= ZERO) then + score = score * (deriv % flux_deriv & + + (micro_xs(deriv % diff_nuclide) % total & + - micro_xs(deriv % diff_nuclide) % absorption) & + / (material_xs % total - material_xs % absorption)) + else if (scoring_diff_nuclide .and. & + (micro_xs(deriv % diff_nuclide) % total & + - micro_xs(deriv % diff_nuclide) % absorption) /= ZERO) then + score = score * (deriv % flux_deriv + ONE / atom_density) + else + score = score * deriv % flux_deriv + end if + case (SCORE_ABSORPTION) if (i_nuclide == -1 .and. & materials(p % material) % id == deriv % diff_material .and. & diff --git a/src/tally_header.F90 b/src/tally_header.F90 index 09cbf286c3..a2152bf9e0 100644 --- a/src/tally_header.F90 +++ b/src/tally_header.F90 @@ -139,12 +139,12 @@ module tally_header integer :: n_triggers = 0 ! # of triggers type(TriggerObject), allocatable :: triggers(:) ! Array of triggers - ! Index for the TallyDerivative for differential tallies. - integer :: deriv = NONE - ! Multi-Group Specific Information To Enable Rapid Tallying logical :: energy_matches_groups = .false. logical :: energyout_matches_groups = .false. + + ! Index for the TallyDerivative for differential tallies. + integer :: deriv = NONE end type TallyObject end module tally_header diff --git a/src/tracking.F90 b/src/tracking.F90 index d250197590..63b2de98b5 100644 --- a/src/tracking.F90 +++ b/src/tracking.F90 @@ -14,12 +14,12 @@ module tracking use physics_mg, only: collision_mg use random_lcg, only: prn use string, only: to_str + use tally, only: score_analog_tally, score_tracklength_tally, & + score_collision_tally, score_surface_current, & + score_track_derivative, & + score_collision_derivative, zero_flux_derivs use track_output, only: initialize_particle_track, write_particle_track, & add_particle_track, finalize_particle_track - use tally, only: score_analog_tally, score_tracklength_tally, & - score_collision_tally, score_surface_current, & - score_track_derivative, & - score_collision_derivative, zero_flux_derivs implicit none diff --git a/tests/test_diff_tally/results_true.dat b/tests/test_diff_tally/results_true.dat index 3071af772b..9d4af32e7f 100644 --- a/tests/test_diff_tally/results_true.dat +++ b/tests/test_diff_tally/results_true.dat @@ -1,97 +1,97 @@ d_material,d_nuclide,d_variable,score,mean,std. dev. -3,,density,flux,-5.12e+00,8.94e-01 -3,,density,flux,-1.07e+01,8.84e-01 -1,,density,flux,-3.14e-01,4.48e-02 -1,,density,flux,-2.73e-01,8.51e-02 -1,O-16.71c,nuclide_density,flux,-3.58e+00,7.77e+00 -1,O-16.71c,nuclide_density,flux,-7.64e+00,1.09e+01 -1,U-235.71c,nuclide_density,flux,-1.19e+03,1.18e+02 -1,U-235.71c,nuclide_density,flux,-1.25e+03,1.63e+02 -3,,density,total,-1.92e+00,4.49e-01 -3,,density,absorption,5.89e-02,6.68e-02 -3,,density,fission,8.55e-02,3.33e-02 -3,,density,nu-fission,2.20e-01,8.60e-02 -3,,density,total,4.49e-02,3.15e-02 -3,,density,absorption,6.66e-02,2.74e-02 -3,,density,fission,6.12e-02,2.24e-02 -3,,density,nu-fission,1.49e-01,5.45e-02 -3,,density,total,7.72e+00,9.45e-01 -3,,density,absorption,1.26e-01,2.24e-02 +3,,density,flux,-5.53e+00,8.45e-01 +3,,density,flux,-9.96e+00,1.01e+00 +1,,density,flux,-2.97e-01,5.83e-02 +1,,density,flux,-3.05e-01,7.69e-02 +1,O-16.71c,nuclide_density,flux,-1.10e+01,9.63e+00 +1,O-16.71c,nuclide_density,flux,-8.07e+00,7.78e+00 +1,U-235.71c,nuclide_density,flux,-1.06e+03,1.30e+02 +1,U-235.71c,nuclide_density,flux,-9.28e+02,9.72e+01 +3,,density,total,-2.21e+00,4.04e-01 +3,,density,absorption,6.24e-03,1.37e-01 +3,,density,fission,5.89e-02,7.93e-02 +3,,density,nu-fission,1.47e-01,2.06e-01 +3,,density,total,3.36e-02,6.32e-02 +3,,density,absorption,5.67e-02,6.01e-02 +3,,density,fission,5.46e-02,5.03e-02 +3,,density,nu-fission,1.33e-01,1.23e-01 +3,,density,total,8.38e+00,1.33e+00 +3,,density,absorption,1.30e-01,1.97e-02 3,,density,fission,0.00e+00,0.00e+00 3,,density,nu-fission,0.00e+00,0.00e+00 3,,density,total,0.00e+00,0.00e+00 3,,density,absorption,0.00e+00,0.00e+00 3,,density,fission,0.00e+00,0.00e+00 3,,density,nu-fission,0.00e+00,0.00e+00 -1,,density,total,3.79e-01,1.14e-02 -1,,density,absorption,1.27e-02,4.48e-03 -1,,density,fission,1.88e-03,1.96e-03 -1,,density,nu-fission,5.22e-03,5.08e-03 -1,,density,total,5.43e-03,1.67e-03 -1,,density,absorption,1.29e-03,1.64e-03 -1,,density,fission,3.13e-05,1.30e-03 -1,,density,nu-fission,1.12e-04,3.17e-03 -1,,density,total,-2.91e-01,9.67e-02 -1,,density,absorption,-5.40e-03,1.29e-03 +1,,density,total,3.84e-01,4.09e-02 +1,,density,absorption,1.77e-02,9.66e-03 +1,,density,fission,2.95e-03,4.95e-03 +1,,density,nu-fission,8.23e-03,1.30e-02 +1,,density,total,5.44e-03,4.18e-03 +1,,density,absorption,1.29e-03,3.79e-03 +1,,density,fission,2.91e-04,3.01e-03 +1,,density,nu-fission,7.52e-04,7.35e-03 +1,,density,total,-3.59e-01,8.82e-02 +1,,density,absorption,-7.04e-03,1.23e-03 1,,density,fission,0.00e+00,0.00e+00 1,,density,nu-fission,0.00e+00,0.00e+00 1,,density,total,0.00e+00,0.00e+00 1,,density,absorption,0.00e+00,0.00e+00 1,,density,fission,0.00e+00,0.00e+00 1,,density,nu-fission,0.00e+00,0.00e+00 -1,O-16.71c,nuclide_density,total,4.33e+01,3.24e+00 -1,O-16.71c,nuclide_density,absorption,6.59e-01,5.83e-01 -1,O-16.71c,nuclide_density,fission,4.31e-01,1.26e-01 -1,O-16.71c,nuclide_density,nu-fission,1.08e+00,3.25e-01 -1,O-16.71c,nuclide_density,total,4.52e-01,1.50e-01 -1,O-16.71c,nuclide_density,absorption,4.58e-01,1.12e-01 -1,O-16.71c,nuclide_density,fission,3.54e-01,9.55e-02 -1,O-16.71c,nuclide_density,nu-fission,8.62e-01,2.33e-01 -1,O-16.71c,nuclide_density,total,-4.58e-01,1.17e+01 -1,O-16.71c,nuclide_density,absorption,1.23e-01,1.75e-01 +1,O-16.71c,nuclide_density,total,3.94e+01,5.38e+00 +1,O-16.71c,nuclide_density,absorption,9.23e-02,8.39e-01 +1,O-16.71c,nuclide_density,fission,-1.87e-01,4.17e-01 +1,O-16.71c,nuclide_density,nu-fission,-5.04e-01,1.09e+00 +1,O-16.71c,nuclide_density,total,-1.54e-01,3.77e-01 +1,O-16.71c,nuclide_density,absorption,-1.13e-01,3.27e-01 +1,O-16.71c,nuclide_density,fission,-8.48e-02,2.51e-01 +1,O-16.71c,nuclide_density,nu-fission,-2.07e-01,6.11e-01 +1,O-16.71c,nuclide_density,total,-5.63e+00,9.03e+00 +1,O-16.71c,nuclide_density,absorption,-1.65e-01,1.27e-01 1,O-16.71c,nuclide_density,fission,0.00e+00,0.00e+00 1,O-16.71c,nuclide_density,nu-fission,0.00e+00,0.00e+00 1,O-16.71c,nuclide_density,total,0.00e+00,0.00e+00 1,O-16.71c,nuclide_density,absorption,0.00e+00,0.00e+00 1,O-16.71c,nuclide_density,fission,0.00e+00,0.00e+00 1,O-16.71c,nuclide_density,nu-fission,0.00e+00,0.00e+00 -1,U-235.71c,nuclide_density,total,-2.41e+02,5.64e+01 -1,U-235.71c,nuclide_density,absorption,1.11e+02,1.40e+01 -1,U-235.71c,nuclide_density,fission,1.79e+02,9.60e+00 -1,U-235.71c,nuclide_density,nu-fission,3.97e+02,2.44e+01 -1,U-235.71c,nuclide_density,total,4.56e+02,1.09e+01 -1,U-235.71c,nuclide_density,absorption,3.45e+02,1.09e+01 -1,U-235.71c,nuclide_density,fission,2.70e+02,8.42e+00 -1,U-235.71c,nuclide_density,nu-fission,6.59e+02,2.05e+01 -1,U-235.71c,nuclide_density,total,-2.29e+03,2.59e+02 -1,U-235.71c,nuclide_density,absorption,-5.31e+01,5.44e+00 +1,U-235.71c,nuclide_density,total,-1.95e+02,6.93e+01 +1,U-235.71c,nuclide_density,absorption,1.06e+02,2.33e+01 +1,U-235.71c,nuclide_density,fission,1.74e+02,1.67e+01 +1,U-235.71c,nuclide_density,nu-fission,3.84e+02,4.28e+01 +1,U-235.71c,nuclide_density,total,4.48e+02,1.64e+01 +1,U-235.71c,nuclide_density,absorption,3.37e+02,1.47e+01 +1,U-235.71c,nuclide_density,fission,2.66e+02,1.24e+01 +1,U-235.71c,nuclide_density,nu-fission,6.49e+02,3.02e+01 +1,U-235.71c,nuclide_density,total,-2.06e+03,2.21e+02 +1,U-235.71c,nuclide_density,absorption,-5.23e+01,6.36e+00 1,U-235.71c,nuclide_density,fission,0.00e+00,0.00e+00 1,U-235.71c,nuclide_density,nu-fission,0.00e+00,0.00e+00 1,U-235.71c,nuclide_density,total,0.00e+00,0.00e+00 1,U-235.71c,nuclide_density,absorption,0.00e+00,0.00e+00 1,U-235.71c,nuclide_density,fission,0.00e+00,0.00e+00 1,U-235.71c,nuclide_density,nu-fission,0.00e+00,0.00e+00 -3,,density,absorption,-3.29e-02,8.34e-02 -3,,density,absorption,1.21e-01,4.42e-02 -1,,density,absorption,1.51e-02,2.89e-03 -1,,density,absorption,-4.61e-03,2.30e-03 -1,O-16.71c,nuclide_density,absorption,2.87e-01,5.33e-01 -1,O-16.71c,nuclide_density,absorption,2.86e-01,3.59e-01 -1,U-235.71c,nuclide_density,absorption,1.14e+02,1.15e+01 -1,U-235.71c,nuclide_density,absorption,-5.10e+01,4.74e+00 -3,,density,nu-fission,4.24e-04,6.13e-02 -3,,density,nu-fission,2.40e-02,6.37e-02 +3,,density,absorption,-7.86e-03,9.22e-02 +3,,density,absorption,1.51e-01,2.10e-02 +1,,density,absorption,2.12e-02,6.60e-03 +1,,density,absorption,-4.94e-03,8.88e-04 +1,O-16.71c,nuclide_density,absorption,3.51e-01,6.90e-01 +1,O-16.71c,nuclide_density,absorption,1.74e-02,7.71e-02 +1,U-235.71c,nuclide_density,absorption,9.98e+01,2.40e+01 +1,U-235.71c,nuclide_density,absorption,-4.39e+01,7.07e+00 +3,,density,nu-fission,2.64e-02,7.36e-02 +3,,density,nu-fission,7.70e-02,1.28e-01 3,,density,nu-fission,0.00e+00,0.00e+00 3,,density,nu-fission,0.00e+00,0.00e+00 -1,,density,nu-fission,3.45e-03,8.06e-04 -1,,density,nu-fission,7.16e-03,3.66e-03 +1,,density,nu-fission,2.29e-03,4.63e-03 +1,,density,nu-fission,1.33e-02,1.06e-02 1,,density,nu-fission,0.00e+00,0.00e+00 1,,density,nu-fission,0.00e+00,0.00e+00 -1,O-16.71c,nuclide_density,nu-fission,1.70e-01,2.18e-01 -1,O-16.71c,nuclide_density,nu-fission,6.30e-01,5.11e-01 +1,O-16.71c,nuclide_density,nu-fission,-9.08e-02,5.90e-01 +1,O-16.71c,nuclide_density,nu-fission,1.48e-01,1.07e+00 1,O-16.71c,nuclide_density,nu-fission,0.00e+00,0.00e+00 1,O-16.71c,nuclide_density,nu-fission,0.00e+00,0.00e+00 -1,U-235.71c,nuclide_density,nu-fission,1.35e+02,7.94e+00 -1,U-235.71c,nuclide_density,nu-fission,2.47e+02,1.29e+01 +1,U-235.71c,nuclide_density,nu-fission,9.91e+01,2.80e+01 +1,U-235.71c,nuclide_density,nu-fission,2.64e+02,2.71e+01 1,U-235.71c,nuclide_density,nu-fission,0.00e+00,0.00e+00 1,U-235.71c,nuclide_density,nu-fission,0.00e+00,0.00e+00