Add collision-est. scattering temperature deriv

This commit is contained in:
Sterling Harper 2016-04-18 15:46:02 -04:00
parent 4e9b2f09b9
commit 174ff92b33

View file

@ -3258,6 +3258,32 @@ contains
score = score * deriv % flux_deriv
end if
case (SCORE_SCATTER)
if (materials(p % material) % id == deriv % diff_material .and. &
(micro_xs(p % event_nuclide) % total &
- micro_xs(p % event_nuclide) % absorption) > ZERO) then
associate(mat => materials(p % material))
do l = 1, mat % n_nuclides
if (mat % nuclide(l) == p % event_nuclide) exit
end do
dsigT = ZERO
dsigA = ZERO
associate (nuc => nuclides(p % event_nuclide))
if (nuc % mp_present .and. &
p % last_E >= nuc % multipole % start_E/1.0e6_8 .and. &
p % last_E <= nuc % multipole % end_E/1.0e6_8) then
call multipole_deriv_eval(nuc % multipole, p % last_E, &
p % sqrtkT, dsigT, dsigA, dsigF)
end if
end associate
score = score * (deriv % flux_deriv + (dsigT - dsigA) &
* mat % atom_density(l) / &
(material_xs % total - material_xs % absorption))
end associate
else
score = score * deriv % flux_deriv
end if
case (SCORE_ABSORPTION)
if (materials(p % material) % id == deriv % diff_material .and. &
micro_xs(p % event_nuclide) % absorption > ZERO) then
@ -3379,6 +3405,48 @@ 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
cum_dsig = ZERO
associate(mat => materials(p % material))
do l = 1, mat % n_nuclides
associate (nuc => nuclides(mat % nuclide(l)))
if (nuc % mp_present .and. &
p % last_E >= nuc % multipole % start_E/1.0e6_8 .and. &
p % last_E <= nuc % multipole % end_E/1.0e6_8 .and. &
(micro_xs(mat % nuclide(l)) % total &
- micro_xs(mat % nuclide(l)) % absorption) > ZERO) then
call multipole_deriv_eval(nuc % multipole, p % last_E, &
p % sqrtkT, dsigT, dsigA, dsigF)
cum_dsig = cum_dsig &
+ (dsigT - dsigA) * mat % atom_density(l)
end if
end associate
end do
end associate
score = score * (deriv % flux_deriv + cum_dsig &
/ (material_xs % total - material_xs % absorption))
else if ( materials(p % material) % id == deriv % diff_material &
.and. (material_xs % total - material_xs % absorption) > ZERO)&
then
dsigT = ZERO
dsigA = ZERO
associate (nuc => nuclides(i_nuclide))
if (nuc % mp_present .and. &
p % last_E >= nuc % multipole % start_E/1.0e6_8 .and. &
p % last_E <= nuc % multipole % end_E/1.0e6_8) then
call multipole_deriv_eval(nuc % multipole, p % last_E, &
p % sqrtkT, dsigT, dsigA, dsigF)
end if
end associate
score = score * (deriv % flux_deriv + (dsigT - dsigA) &
/ (material_xs % total - material_xs % absorption))
else
score = score * deriv % flux_deriv
end if
case (SCORE_ABSORPTION)
if (i_nuclide == -1 .and. &
materials(p % material) % id == deriv % diff_material .and. &