mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-28 06:05:58 -04:00
removed new energy deposition scores
This commit is contained in:
parent
41272a3aa4
commit
beb2c40a06
7 changed files with 7 additions and 379 deletions
|
|
@ -318,7 +318,7 @@ module constants
|
|||
EVENT_ABSORB = 2
|
||||
|
||||
! Tally score type
|
||||
integer, parameter :: N_SCORE_TYPES = 36
|
||||
integer, parameter :: N_SCORE_TYPES = 24
|
||||
integer, parameter :: &
|
||||
SCORE_FLUX = -1, & ! flux
|
||||
SCORE_TOTAL = -2, & ! total reaction rate
|
||||
|
|
@ -341,21 +341,9 @@ module constants
|
|||
SCORE_DELAYED_NU_FISSION = -19, & ! delayed neutron production rate
|
||||
SCORE_PROMPT_NU_FISSION = -20, & ! prompt neutron production rate
|
||||
SCORE_INVERSE_VELOCITY = -21, & ! flux-weighted inverse velocity
|
||||
SCORE_HEATING = -22, & ! prompt fission Q-value
|
||||
SCORE_FISS_Q_RECOV = -23, & ! recoverable fission Q-value
|
||||
SCORE_FISS_Q_PROMPT = -24, & ! prompt fission Q-value
|
||||
SCORE_FISS_Q_PROMPT_NEUTRONS = -25, & ! fission prompt neutrons Q-value
|
||||
SCORE_FISS_Q_DELAYED_NEUTRONS = -26, & ! fission delayed neutrons Q-value
|
||||
SCORE_FISS_Q_FRAGMENTS = -27, & ! fission fragments Q-value
|
||||
SCORE_FISS_Q_BETAS = -28, & ! fission betas Q-value
|
||||
SCORE_FISS_Q_PROMPT_PHOTONS = -29, & ! fission prompt photons Q-value
|
||||
SCORE_FISS_Q_DELAYED_PHOTONS = -30, & ! fission delayed phtons Q-value
|
||||
SCORE_FISS_Q_NEUTRINOS = -31, & ! fission neutrinos Q-value
|
||||
SCORE_Q_PHOTONS = -32, & ! photon energy deposition
|
||||
SCORE_Q_ELECTRONS = -33, & ! electron energy deposition
|
||||
SCORE_Q_POSITRONS = -34, & ! positron energy deposition
|
||||
SCORE_Q_ELASTIC = -35, & ! elastic scattering energy deposition
|
||||
SCORE_DECAY_RATE = -36 ! delayed neutron precursor decay rate
|
||||
SCORE_FISS_Q_RECOV = -22, & ! recoverable fission Q-value
|
||||
SCORE_FISS_Q_PROMPT = -23, & ! prompt fission Q-value
|
||||
SCORE_DECAY_RATE = -24 ! delayed neutron precursor decay rate
|
||||
|
||||
! Maximum scattering order supported
|
||||
integer, parameter :: MAX_ANG_ORDER = 10
|
||||
|
|
|
|||
18
src/endf.F90
18
src/endf.F90
|
|
@ -66,24 +66,6 @@ contains
|
|||
string = "fission-q-prompt"
|
||||
case (SCORE_FISS_Q_RECOV)
|
||||
string = "fission-q-recoverable"
|
||||
case (SCORE_FISS_Q_FRAGMENTS)
|
||||
string = "fission-q-fragments"
|
||||
case (SCORE_FISS_Q_BETAS)
|
||||
string = "fission-q-betas"
|
||||
case (SCORE_FISS_Q_PROMPT_PHOTONS)
|
||||
string = "fission-q-prompt-photons"
|
||||
case (SCORE_FISS_Q_DELAYED_PHOTONS)
|
||||
string = "fission-q-delayed-photons"
|
||||
case (SCORE_FISS_Q_NEUTRINOS)
|
||||
string = "fission-q-neutrinos"
|
||||
case (SCORE_Q_ELASTIC)
|
||||
string = "q-elastic"
|
||||
case (SCORE_Q_PHOTONS)
|
||||
string = "q-photons"
|
||||
case (SCORE_Q_ELECTRONS)
|
||||
string = "q-electrons"
|
||||
case (SCORE_Q_POSITRONS)
|
||||
string = "q-positrons"
|
||||
|
||||
! Normal ENDF-based reactions
|
||||
case (TOTAL_XS)
|
||||
|
|
|
|||
|
|
@ -3883,32 +3883,6 @@ contains
|
|||
t % score_bins(j) = SCORE_FISS_Q_PROMPT
|
||||
case ('fission-q-recoverable')
|
||||
t % score_bins(j) = SCORE_FISS_Q_RECOV
|
||||
case ('fission-q-prompt-neutrons')
|
||||
t % score_bins(j) = SCORE_FISS_Q_PROMPT_NEUTRONS
|
||||
case ('fission-q-delayed-neutrons')
|
||||
t % score_bins(j) = SCORE_FISS_Q_DELAYED_NEUTRONS
|
||||
case ('fission-q-fragments')
|
||||
t % score_bins(j) = SCORE_FISS_Q_FRAGMENTS
|
||||
case ('fission-q-betas')
|
||||
t % score_bins(j) = SCORE_FISS_Q_BETAS
|
||||
case ('fission-q-prompt-photons')
|
||||
t % score_bins(j) = SCORE_FISS_Q_PROMPT_PHOTONS
|
||||
case ('fission-q-delayed-photons')
|
||||
t % score_bins(j) = SCORE_FISS_Q_DELAYED_PHOTONS
|
||||
case ('fission-q-neutrinos')
|
||||
t % score_bins(j) = SCORE_FISS_Q_NEUTRINOS
|
||||
case ('q-electrons')
|
||||
t % score_bins(j) = SCORE_Q_ELECTRONS
|
||||
t % estimator = ESTIMATOR_ANALOG
|
||||
case ('q-positrons')
|
||||
t % score_bins(j) = SCORE_Q_POSITRONS
|
||||
t % estimator = ESTIMATOR_ANALOG
|
||||
case ('q-elastic')
|
||||
t % score_bins(j) = SCORE_Q_ELASTIC
|
||||
t % estimator = ESTIMATOR_ANALOG
|
||||
case ('heating')
|
||||
t % score_bins(j) = SCORE_HEATING
|
||||
t % estimator = ESTIMATOR_ANALOG
|
||||
case ('current')
|
||||
t % score_bins(j) = SCORE_CURRENT
|
||||
t % type = TALLY_SURFACE_CURRENT
|
||||
|
|
|
|||
|
|
@ -92,15 +92,8 @@ module nuclide_header
|
|||
! array; used at tally-time
|
||||
|
||||
! Fission energy release
|
||||
class(Function1D), allocatable :: fission_q_prompt ! fragments and prompt neutrons, gammas
|
||||
class(Function1D), allocatable :: fission_q_recov ! fragments, neutrons, gammas, betas
|
||||
class(Function1D), allocatable :: fission_q_fragments ! fragments
|
||||
class(Function1D), allocatable :: fission_q_betas ! betas
|
||||
class(Function1D), allocatable :: fission_q_neutrinos ! neutrinos
|
||||
class(Function1D), allocatable :: fission_q_delayed_neutrons ! delayed neutrons
|
||||
class(Function1D), allocatable :: fission_q_prompt_neutrons ! prompt neutrons
|
||||
class(Function1D), allocatable :: fission_q_delayed_photons ! delayed photons
|
||||
class(Function1D), allocatable :: fission_q_prompt_photons ! prompt photons
|
||||
class(Function1D), allocatable :: fission_q_prompt ! fragments and prompt neutrons, gammas
|
||||
class(Function1D), allocatable :: fission_q_recov ! fragments, neutrons, gammas, betas
|
||||
|
||||
contains
|
||||
procedure :: clear => nuclide_clear
|
||||
|
|
@ -482,111 +475,6 @@ contains
|
|||
call fatal_error('Unrecognized fission recoverable energy release format.')
|
||||
end if
|
||||
|
||||
! Q-FRAGMENTS
|
||||
fer_dset = open_dataset(fer_group, 'fragments')
|
||||
call read_attribute(temp_str, fer_dset, 'type')
|
||||
if (temp_str == 'Polynomial') then
|
||||
allocate(Polynomial :: this % fission_q_fragments)
|
||||
call this % fission_q_fragments % from_hdf5(fer_dset)
|
||||
call close_dataset(fer_dset)
|
||||
else if (temp_str == 'Tabulated1D') then
|
||||
allocate(Tabulated1D :: this % fission_q_fragments)
|
||||
call this % fission_q_fragments % from_hdf5(fer_dset)
|
||||
call close_dataset(fer_dset)
|
||||
else
|
||||
call fatal_error('Unrecognized fission fragments energy release format.')
|
||||
end if
|
||||
|
||||
! Q-BETAS
|
||||
fer_dset = open_dataset(fer_group, 'betas')
|
||||
call read_attribute(temp_str, fer_dset, 'type')
|
||||
if (temp_str == 'Polynomial') then
|
||||
allocate(Polynomial :: this % fission_q_betas)
|
||||
call this % fission_q_betas % from_hdf5(fer_dset)
|
||||
call close_dataset(fer_dset)
|
||||
else if (temp_str == 'Tabulated1D') then
|
||||
allocate(Tabulated1D :: this % fission_q_betas)
|
||||
call this % fission_q_betas % from_hdf5(fer_dset)
|
||||
call close_dataset(fer_dset)
|
||||
else
|
||||
call fatal_error('Unrecognized fission betas energy release format.')
|
||||
end if
|
||||
|
||||
! Q-NEUTRINOS
|
||||
fer_dset = open_dataset(fer_group, 'neutrinos')
|
||||
call read_attribute(temp_str, fer_dset, 'type')
|
||||
if (temp_str == 'Polynomial') then
|
||||
allocate(Polynomial :: this % fission_q_neutrinos)
|
||||
call this % fission_q_neutrinos % from_hdf5(fer_dset)
|
||||
call close_dataset(fer_dset)
|
||||
else if (temp_str == 'Tabulated1D') then
|
||||
allocate(Tabulated1D :: this % fission_q_neutrinos)
|
||||
call this % fission_q_neutrinos % from_hdf5(fer_dset)
|
||||
call close_dataset(fer_dset)
|
||||
else
|
||||
call fatal_error('Unrecognized fission neutrinos energy release format.')
|
||||
end if
|
||||
|
||||
! Q-DELAYED-NEUTRONS
|
||||
fer_dset = open_dataset(fer_group, 'delayed_neutrons')
|
||||
call read_attribute(temp_str, fer_dset, 'type')
|
||||
if (temp_str == 'Polynomial') then
|
||||
allocate(Polynomial :: this % fission_q_delayed_neutrons)
|
||||
call this % fission_q_delayed_neutrons % from_hdf5(fer_dset)
|
||||
call close_dataset(fer_dset)
|
||||
else if (temp_str == 'Tabulated1D') then
|
||||
allocate(Tabulated1D :: this % fission_q_delayed_neutrons)
|
||||
call this % fission_q_delayed_neutrons % from_hdf5(fer_dset)
|
||||
call close_dataset(fer_dset)
|
||||
else
|
||||
call fatal_error('Unrecognized fission delayed neutron energy release format.')
|
||||
end if
|
||||
|
||||
! Q-PROMPT-NEUTRONS
|
||||
fer_dset = open_dataset(fer_group, 'prompt_neutrons')
|
||||
call read_attribute(temp_str, fer_dset, 'type')
|
||||
if (temp_str == 'Polynomial') then
|
||||
allocate(Polynomial :: this % fission_q_prompt_neutrons)
|
||||
call this % fission_q_prompt_neutrons % from_hdf5(fer_dset)
|
||||
call close_dataset(fer_dset)
|
||||
else if (temp_str == 'Tabulated1D') then
|
||||
allocate(Tabulated1D :: this % fission_q_prompt_neutrons)
|
||||
call this % fission_q_prompt_neutrons % from_hdf5(fer_dset)
|
||||
call close_dataset(fer_dset)
|
||||
else
|
||||
call fatal_error('Unrecognized fission energy release format.')
|
||||
end if
|
||||
|
||||
! Q-DELAYED-PHOTONS
|
||||
fer_dset = open_dataset(fer_group, 'delayed_photons')
|
||||
call read_attribute(temp_str, fer_dset, 'type')
|
||||
if (temp_str == 'Polynomial') then
|
||||
allocate(Polynomial :: this % fission_q_delayed_photons)
|
||||
call this % fission_q_delayed_photons % from_hdf5(fer_dset)
|
||||
call close_dataset(fer_dset)
|
||||
else if (temp_str == 'Tabulated1D') then
|
||||
allocate(Tabulated1D :: this % fission_q_delayed_photons)
|
||||
call this % fission_q_delayed_photons % from_hdf5(fer_dset)
|
||||
call close_dataset(fer_dset)
|
||||
else
|
||||
call fatal_error('Unrecognized fission delayed photon energy release format.')
|
||||
end if
|
||||
|
||||
! Q-PROMPT-PHOTONS
|
||||
fer_dset = open_dataset(fer_group, 'prompt_photons')
|
||||
call read_attribute(temp_str, fer_dset, 'type')
|
||||
if (temp_str == 'Polynomial') then
|
||||
allocate(Polynomial :: this % fission_q_prompt_photons)
|
||||
call this % fission_q_prompt_photons % from_hdf5(fer_dset)
|
||||
call close_dataset(fer_dset)
|
||||
else if (temp_str == 'Tabulated1D') then
|
||||
allocate(Tabulated1D :: this % fission_q_prompt_photons)
|
||||
call this % fission_q_prompt_photons % from_hdf5(fer_dset)
|
||||
call close_dataset(fer_dset)
|
||||
else
|
||||
call fatal_error('Unrecognized fission prompt photon energy release format.')
|
||||
end if
|
||||
|
||||
call close_group(fer_group)
|
||||
end if
|
||||
|
||||
|
|
|
|||
|
|
@ -751,18 +751,6 @@ contains
|
|||
score_names(abs(SCORE_INVERSE_VELOCITY)) = "Flux-Weighted Inverse Velocity"
|
||||
score_names(abs(SCORE_FISS_Q_PROMPT)) = "Prompt fission power"
|
||||
score_names(abs(SCORE_FISS_Q_RECOV)) = "Recoverable fission power"
|
||||
score_names(abs(SCORE_FISS_Q_PROMPT_NEUTRONS)) = "Prompt neutron power"
|
||||
score_names(abs(SCORE_FISS_Q_DELAYED_NEUTRONS)) = "Delayed neutron power"
|
||||
score_names(abs(SCORE_FISS_Q_FRAGMENTS)) = "Fission fragment power"
|
||||
score_names(abs(SCORE_FISS_Q_BETAS)) = "Fission betas power"
|
||||
score_names(abs(SCORE_FISS_Q_PROMPT_PHOTONS)) = "Prompt photon power"
|
||||
score_names(abs(SCORE_FISS_Q_DELAYED_PHOTONS)) = "Delayed photon power"
|
||||
score_names(abs(SCORE_FISS_Q_NEUTRINOS)) = "Fission neutrino power"
|
||||
score_names(abs(SCORE_Q_PHOTONS)) = "Photon power"
|
||||
score_names(abs(SCORE_Q_ELECTRONS)) = "Electron power"
|
||||
score_names(abs(SCORE_Q_POSITRONS)) = "Positron power"
|
||||
score_names(abs(SCORE_Q_ELASTIC)) = "Elastic scattering power"
|
||||
score_names(abs(SCORE_HEATING)) = "Heating power"
|
||||
|
||||
! Create filename for tally output
|
||||
filename = trim(path_output) // "tallies.out"
|
||||
|
|
|
|||
|
|
@ -206,11 +206,6 @@ contains
|
|||
prob = prob + micro_photon_xs(i_element) % incoherent
|
||||
if (prob > cutoff) then
|
||||
call compton_scatter(elm, alpha, alpha_out, mu, .true.)
|
||||
|
||||
! Create secondary electron
|
||||
|
||||
|
||||
|
||||
p % E = alpha_out*MASS_ELECTRON
|
||||
p % coord(1) % uvw = rotate_angle(p % coord(1) % uvw, mu)
|
||||
p % event_MT = INCOHERENT
|
||||
|
|
|
|||
189
src/tally.F90
189
src/tally.F90
|
|
@ -1076,10 +1076,7 @@ contains
|
|||
end if
|
||||
end if
|
||||
|
||||
case (SCORE_FISS_Q_PROMPT, SCORE_FISS_Q_RECOV, SCORE_FISS_Q_FRAGMENTS, &
|
||||
SCORE_FISS_Q_PROMPT_NEUTRONS, SCORE_FISS_Q_DELAYED_NEUTRONS, &
|
||||
SCORE_FISS_Q_PROMPT_PHOTONS, SCORE_FISS_Q_DELAYED_PHOTONS, &
|
||||
SCORE_FISS_Q_NEUTRINOS, SCORE_FISS_Q_BETAS)
|
||||
case (SCORE_FISS_Q_PROMPT, SCORE_FISS_Q_RECOV)
|
||||
|
||||
if (material_xs % absorption == ZERO) cycle SCORE_LOOP
|
||||
|
||||
|
|
@ -1097,20 +1094,6 @@ contains
|
|||
xs = nuc % fission_q_prompt % evaluate(p % last_E)
|
||||
else if (score_bin == SCORE_FISS_Q_RECOV) then
|
||||
xs = nuc % fission_q_recov % evaluate(p % last_E)
|
||||
else if (score_bin == SCORE_FISS_Q_FRAGMENTS) then
|
||||
xs = nuc % fission_q_fragments % evaluate(p % last_E)
|
||||
else if (score_bin == SCORE_FISS_Q_PROMPT_NEUTRONS) then
|
||||
xs = nuc % fission_q_prompt_neutrons % evaluate(p % last_E)
|
||||
else if (score_bin == SCORE_FISS_Q_DELAYED_NEUTRONS) then
|
||||
xs = nuc % fission_q_delayed_neutrons % evaluate(p % last_E)
|
||||
else if (score_bin == SCORE_FISS_Q_PROMPT_PHOTONS) then
|
||||
xs = nuc % fission_q_prompt_photons % evaluate(p % last_E)
|
||||
else if (score_bin == SCORE_FISS_Q_DELAYED_PHOTONS) then
|
||||
xs = nuc % fission_q_delayed_photons % evaluate(p % last_E)
|
||||
else if (score_bin == SCORE_FISS_Q_NEUTRINOS) then
|
||||
xs = nuc % fission_q_neutrinos % evaluate(p % last_E)
|
||||
else if (score_bin == SCORE_FISS_Q_BETAS) then
|
||||
xs = nuc % fission_q_betas % evaluate(p % last_E)
|
||||
end if
|
||||
|
||||
score = p % absorb_wgt * xs * flux &
|
||||
|
|
@ -1132,20 +1115,6 @@ contains
|
|||
xs = nuc % fission_q_prompt % evaluate(p % last_E)
|
||||
else if (score_bin == SCORE_FISS_Q_RECOV) then
|
||||
xs = nuc % fission_q_recov % evaluate(p % last_E)
|
||||
else if (score_bin == SCORE_FISS_Q_FRAGMENTS) then
|
||||
xs = nuc % fission_q_fragments % evaluate(p % last_E)
|
||||
else if (score_bin == SCORE_FISS_Q_PROMPT_NEUTRONS) then
|
||||
xs = nuc % fission_q_prompt_neutrons % evaluate(p % last_E)
|
||||
else if (score_bin == SCORE_FISS_Q_DELAYED_NEUTRONS) then
|
||||
xs = nuc % fission_q_delayed_neutrons % evaluate(p % last_E)
|
||||
else if (score_bin == SCORE_FISS_Q_PROMPT_PHOTONS) then
|
||||
xs = nuc % fission_q_prompt_photons % evaluate(p % last_E)
|
||||
else if (score_bin == SCORE_FISS_Q_DELAYED_PHOTONS) then
|
||||
xs = nuc % fission_q_delayed_photons % evaluate(p % last_E)
|
||||
else if (score_bin == SCORE_FISS_Q_NEUTRINOS) then
|
||||
xs = nuc % fission_q_neutrinos % evaluate(p % last_E)
|
||||
else if (score_bin == SCORE_FISS_Q_BETAS) then
|
||||
xs = nuc % fission_q_betas % evaluate(p % last_E)
|
||||
end if
|
||||
|
||||
score = p % last_wgt * xs * flux &
|
||||
|
|
@ -1170,20 +1139,6 @@ contains
|
|||
xs = nuc % fission_q_prompt % evaluate(E)
|
||||
else if (score_bin == SCORE_FISS_Q_RECOV) then
|
||||
xs = nuc % fission_q_recov % evaluate(E)
|
||||
else if (score_bin == SCORE_FISS_Q_FRAGMENTS) then
|
||||
xs = nuc % fission_q_fragments % evaluate(E)
|
||||
else if (score_bin == SCORE_FISS_Q_PROMPT_NEUTRONS) then
|
||||
xs = nuc % fission_q_prompt_neutrons % evaluate(E)
|
||||
else if (score_bin == SCORE_FISS_Q_DELAYED_NEUTRONS) then
|
||||
xs = nuc % fission_q_delayed_neutrons % evaluate(E)
|
||||
else if (score_bin == SCORE_FISS_Q_PROMPT_PHOTONS) then
|
||||
xs = nuc % fission_q_prompt_photons % evaluate(E)
|
||||
else if (score_bin == SCORE_FISS_Q_DELAYED_PHOTONS) then
|
||||
xs = nuc % fission_q_delayed_photons % evaluate(E)
|
||||
else if (score_bin == SCORE_FISS_Q_NEUTRINOS) then
|
||||
xs = nuc % fission_q_neutrinos % evaluate(E)
|
||||
else if (score_bin == SCORE_FISS_Q_BETAS) then
|
||||
xs = nuc % fission_q_betas % evaluate(E)
|
||||
end if
|
||||
|
||||
score = micro_xs(i_nuclide) % fission * atom_density * flux * xs
|
||||
|
|
@ -1202,20 +1157,6 @@ contains
|
|||
xs = nuc % fission_q_prompt % evaluate(E)
|
||||
else if (score_bin == SCORE_FISS_Q_RECOV) then
|
||||
xs = nuc % fission_q_recov % evaluate(E)
|
||||
else if (score_bin == SCORE_FISS_Q_FRAGMENTS) then
|
||||
xs = nuc % fission_q_fragments % evaluate(E)
|
||||
else if (score_bin == SCORE_FISS_Q_PROMPT_NEUTRONS) then
|
||||
xs = nuc % fission_q_prompt_neutrons % evaluate(E)
|
||||
else if (score_bin == SCORE_FISS_Q_DELAYED_NEUTRONS) then
|
||||
xs = nuc % fission_q_delayed_neutrons % evaluate(E)
|
||||
else if (score_bin == SCORE_FISS_Q_PROMPT_PHOTONS) then
|
||||
xs = nuc % fission_q_prompt_photons % evaluate(E)
|
||||
else if (score_bin == SCORE_FISS_Q_DELAYED_PHOTONS) then
|
||||
xs = nuc % fission_q_delayed_photons % evaluate(E)
|
||||
else if (score_bin == SCORE_FISS_Q_NEUTRINOS) then
|
||||
xs = nuc % fission_q_neutrinos % evaluate(E)
|
||||
else if (score_bin == SCORE_FISS_Q_BETAS) then
|
||||
xs = nuc % fission_q_betas % evaluate(E)
|
||||
end if
|
||||
|
||||
score = score + micro_xs(i_nuc) % fission * atom_density_ &
|
||||
|
|
@ -1227,134 +1168,6 @@ contains
|
|||
end if
|
||||
end if
|
||||
|
||||
case (SCORE_Q_ELECTRONS)
|
||||
|
||||
! Electron energy deposition
|
||||
if (p % type == ELECTRON .and. electron_treatment == ELECTRON_LED) then
|
||||
score = p % last_wgt * p % last_E
|
||||
end if
|
||||
|
||||
case (SCORE_Q_POSITRONS)
|
||||
|
||||
! Positron energy deposition
|
||||
if (p % type == POSITRON .and. electron_treatment == ELECTRON_LED) then
|
||||
score = p % last_wgt * p % last_E
|
||||
end if
|
||||
|
||||
case (SCORE_Q_PHOTONS)
|
||||
|
||||
! Photon energy deposition
|
||||
if (p % type == PHOTON .and. p % last_E < energy_cutoff(PHOTON)) then
|
||||
score = p % last_wgt * p % last_E
|
||||
end if
|
||||
|
||||
case (SCORE_Q_ELASTIC)
|
||||
|
||||
! Elastic scattering
|
||||
if (p % event_MT == ELASTIC) then
|
||||
score = p % last_wgt * (p % last_E - p % E)
|
||||
end if
|
||||
|
||||
case (SCORE_HEATING)
|
||||
|
||||
! Elastic scattering
|
||||
if (p % event_MT == ELASTIC) then
|
||||
score = p % last_wgt * (p % last_E - p % E)
|
||||
|
||||
! Photon energy deposition
|
||||
else if (p % type == PHOTON) then
|
||||
if(p % last_E < energy_cutoff(PHOTON)) then
|
||||
score = p % last_wgt * p % last_E
|
||||
end if
|
||||
|
||||
! Electron energy deposition
|
||||
else if (p % type == ELECTRON) then
|
||||
if(electron_treatment == ELECTRON_LED) then
|
||||
score = p % last_wgt * p % last_E
|
||||
end if
|
||||
|
||||
! Positron energy deposition
|
||||
else if (p % type == POSITRON) then
|
||||
if (electron_treatment == ELECTRON_LED) then
|
||||
score = p % last_wgt * p % last_E
|
||||
end if
|
||||
|
||||
! Fission fragments, betas, and gammas (if photon_transport off)
|
||||
else
|
||||
|
||||
if (material_xs % absorption == ZERO) cycle SCORE_LOOP
|
||||
|
||||
score = ZERO
|
||||
|
||||
if (survival_biasing) then
|
||||
! No fission events occur if survival biasing is on -- need to
|
||||
! calculate fraction of absorptions that would have resulted in
|
||||
! fission scaled by Q-value
|
||||
associate (nuc => nuclides(p % event_nuclide))
|
||||
score = ZERO
|
||||
|
||||
if (micro_xs(p % event_nuclide) % absorption > ZERO .and. &
|
||||
allocated(nuc % fission_q_betas)) then
|
||||
|
||||
score = score + p % absorb_wgt &
|
||||
* nuc % fission_q_fragments % evaluate(p % last_E) &
|
||||
* micro_xs(p % event_nuclide) % fission &
|
||||
/ micro_xs(p % event_nuclide) % absorption * flux
|
||||
|
||||
score = score + p % absorb_wgt &
|
||||
* nuc % fission_q_betas % evaluate(p % last_E) &
|
||||
* micro_xs(p % event_nuclide) % fission &
|
||||
/ micro_xs(p % event_nuclide) % absorption * flux
|
||||
|
||||
if (.not. photon_transport) then
|
||||
score = score + p % absorb_wgt &
|
||||
* nuc % fission_q_prompt_photons % evaluate(p % last_E) &
|
||||
* micro_xs(p % event_nuclide) % fission &
|
||||
/ micro_xs(p % event_nuclide) % absorption * flux
|
||||
|
||||
score = score + p % absorb_wgt &
|
||||
* nuc % fission_q_delayed_photons % evaluate(p % last_E) &
|
||||
* micro_xs(p % event_nuclide) % fission &
|
||||
/ micro_xs(p % event_nuclide) % absorption * flux
|
||||
end if
|
||||
end if
|
||||
end associate
|
||||
else
|
||||
! Skip any non-absorption events
|
||||
if (p % event /= EVENT_ABSORB) cycle SCORE_LOOP
|
||||
! All fission events will contribute, so again we can use
|
||||
! particle's weight entering the collision as the estimate for
|
||||
! the fission energy production rate
|
||||
associate (nuc => nuclides(p % event_nuclide))
|
||||
if (micro_xs(p % event_nuclide) % absorption > ZERO .and. &
|
||||
allocated(nuc % fission_q_betas)) then
|
||||
|
||||
score = score + p % last_wgt &
|
||||
* nuc % fission_q_fragments % evaluate(p % last_E) &
|
||||
* micro_xs(p % event_nuclide) % fission &
|
||||
/ micro_xs(p % event_nuclide) % absorption * flux
|
||||
|
||||
score = score + p % last_wgt &
|
||||
* nuc % fission_q_betas % evaluate(p % last_E) &
|
||||
* micro_xs(p % event_nuclide) % fission &
|
||||
/ micro_xs(p % event_nuclide) % absorption * flux
|
||||
|
||||
if (.not. photon_transport) then
|
||||
score = score + p % last_wgt &
|
||||
* nuc % fission_q_prompt_photons % evaluate(p % last_E) &
|
||||
* micro_xs(p % event_nuclide) % fission &
|
||||
/ micro_xs(p % event_nuclide) % absorption * flux
|
||||
|
||||
score = score + p % last_wgt &
|
||||
* nuc % fission_q_delayed_photons % evaluate(p % last_E) &
|
||||
* micro_xs(p % event_nuclide) % fission &
|
||||
/ micro_xs(p % event_nuclide) % absorption * flux
|
||||
end if
|
||||
end if
|
||||
end associate
|
||||
end if
|
||||
end if
|
||||
|
||||
case default
|
||||
if (t % estimator == ESTIMATOR_ANALOG) then
|
||||
! Any other score is assumed to be a MT number. Thus, we just need
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue