@@ -144,10 +144,9 @@ void FlatSourceDomain::update_single_neutron_source(SourceRegionHandle& srh)
144144 nu_sigma_f = nu_sigma_f_[material * negroups_ + g_in];
145145 chi = chi_[material * negroups_ + g_out];
146146 }
147- nu_sigma_f *= density_mult;
148147 scatter_source += sigma_s * scalar_flux;
149148 if (settings::create_fission_neutrons) {
150- fission_source += nu_sigma_f * scalar_flux * chi;
149+ fission_source += nu_sigma_f * density_mult * scalar_flux * chi;
151150 }
152151 }
153152 total_source = (scatter_source + fission_source * inverse_k_eff);
@@ -233,6 +232,7 @@ void FlatSourceDomain::set_flux_to_flux_plus_source(
233232 int64_t sr, double volume, int g)
234233{
235234 int material = source_regions_.material (sr);
235+ double density_mult = source_regions_.density_mult (sr);
236236 if (material == MATERIAL_VOID) {
237237 source_regions_.scalar_flux_new (sr, g) /= volume;
238238 if (settings::run_mode == RunMode::FIXED_SOURCE) {
@@ -241,19 +241,17 @@ void FlatSourceDomain::set_flux_to_flux_plus_source(
241241 source_regions_.volume_sq (sr);
242242 }
243243 } else {
244- double sigma_t = sigma_t_[material * negroups_ + g] *
245- source_regions_.density_mult (sr);
244+ double sigma_t = sigma_t_[material * negroups_ + g] * density_mult;
246245 source_regions_.scalar_flux_new (sr, g) /= (sigma_t * volume);
247246 source_regions_.scalar_flux_new (sr, g) += source_regions_.source (sr, g);
248247 }
249248 if (settings::kinetic_simulation && !simulation::is_initial_condition) {
250- double inverse_vbar =
251- inverse_vbar_[source_regions_.material (sr) * negroups_ + g];
249+ double inverse_vbar = inverse_vbar_[material * negroups_ + g];
252250 double scalar_flux_rhs_bd = source_regions_.scalar_flux_rhs_bd (sr, g);
253251 double A0 =
254252 (bd_coefficients_first_order_.at (RandomRay::bd_order_))[0 ] / settings::dt;
255253 // TODO: Add support for expicit void regions
256- double sigma_t = sigma_t_[material * negroups_ + g];
254+ double sigma_t = sigma_t_[material * negroups_ + g] * density_mult ;
257255 source_regions_.scalar_flux_new (sr, g) -=
258256 scalar_flux_rhs_bd * inverse_vbar / sigma_t ;
259257 source_regions_.scalar_flux_new (sr, g) /= 1 + A0 * inverse_vbar / sigma_t ;
@@ -1469,12 +1467,12 @@ void FlatSourceDomain::set_adjoint_sources()
14691467#pragma omp parallel for
14701468 for (int64_t sr = 0 ; sr < n_source_regions (); sr++) {
14711469 int material = source_regions_.material (sr);
1470+ double density_mult = source_regions_.density_mult (sr);
14721471 if (material == MATERIAL_VOID) {
14731472 continue ;
14741473 }
14751474 for (int g = 0 ; g < negroups_; g++) {
1476- double sigma_t =
1477- sigma_t_[material * negroups_ + g] * source_regions_.density_mult (sr);
1475+ double sigma_t = sigma_t_[material * negroups_ + g] * density_mult;
14781476 source_regions_.external_source (sr, g) /= sigma_t ;
14791477 }
14801478 }
@@ -1951,10 +1949,12 @@ void FlatSourceDomain::compute_single_phi_prime(SourceRegionHandle& srh)
19511949 double A0 =
19521950 (bd_coefficients_first_order_.at (RandomRay::bd_order_))[0 ] / settings::dt;
19531951 int material = srh.material ();
1952+ double density_mult = srh.density_mult ();
19541953 for (int g = 0 ; g < negroups_; g++) {
19551954 double inverse_vbar = inverse_vbar_[material * negroups_ + g];
19561955 // TODO: add support for explicit void
1957- double sigma_t = sigma_t_[material * negroups_ + g];
1956+ double sigma_t = sigma_t_[material * negroups_ + g] * density_mult;
1957+ ;
19581958
19591959 double scalar_flux_time_derivative =
19601960 A0 * srh.scalar_flux_old (g) + srh.scalar_flux_rhs_bd (g);
@@ -1970,10 +1970,11 @@ void FlatSourceDomain::compute_single_T1(SourceRegionHandle& srh)
19701970 double B0 = (bd_coefficients_second_order_.at (RandomRay::bd_order_))[0 ] /
19711971 (settings::dt * settings::dt);
19721972 int material = srh.material ();
1973+ double density_mult = srh.density_mult ();
19731974 for (int g = 0 ; g < negroups_; g++) {
19741975 double inverse_vbar = inverse_vbar_[material * negroups_ + g];
19751976 // TODO: add support for explicit void
1976- double sigma_t = sigma_t_[material * negroups_ + g];
1977+ double sigma_t = sigma_t_[material * negroups_ + g] * density_mult ;
19771978
19781979 // Multiply out sigma_t to correctly compute the derivative term
19791980 float source_time_derivative =
@@ -1999,6 +2000,7 @@ void FlatSourceDomain::compute_single_delayed_fission_source(
19992000 }
20002001
20012002 int material = srh.material ();
2003+ double density_mult = srh.density_mult ();
20022004 if (material != MATERIAL_VOID) {
20032005 double inverse_k_eff = 1.0 / k_eff_;
20042006 for (int dg = 0 ; dg < ndgroups_; dg++) {
@@ -2008,7 +2010,8 @@ void FlatSourceDomain::compute_single_delayed_fission_source(
20082010 for (int g = 0 ; g < negroups_; g++) {
20092011 double scalar_flux = scalar_flux = srh.scalar_flux_new (g);
20102012 double nu_d_sigma_f = nu_d_sigma_f_[material * negroups_ * ndgroups_ +
2011- dg * negroups_ + g];
2013+ dg * negroups_ + g] *
2014+ density_mult;
20122015 srh.delayed_fission_source (dg) += nu_d_sigma_f * scalar_flux;
20132016 }
20142017 srh.delayed_fission_source (dg) *= inverse_k_eff;
@@ -2158,8 +2161,9 @@ void FlatSourceDomain::store_time_step_quantities(bool increment_not_initialize)
21582161 if (RandomRay::time_method_ == RandomRayTimeMethod::PROPAGATION) {
21592162 // Multiply out sigma_t to store the base source
21602163 int material = source_regions_.material (sr);
2164+ double density_mult = source_regions_.density_mult (sr);
21612165 // TODO: add support for explicit void regions
2162- double sigma_t = sigma_t_[source_regions_. material (sr) * negroups_ + g];
2166+ double sigma_t = sigma_t_[material * negroups_ + g] * density_mult ;
21632167 float source = source_regions_.source_final (sr, g) * sigma_t ;
21642168 add_value_to_bd_vector (source_regions_.source_bd (sr, g), source,
21652169 increment_not_initialize, RandomRay::bd_order_);
0 commit comments