Skip to content

Commit f28c57a

Browse files
committed
more explicitly prohibit void regions in kinetic simuations (for now)
1 parent 6f17182 commit f28c57a

File tree

2 files changed

+13
-19
lines changed

2 files changed

+13
-19
lines changed

src/random_ray/flat_source_domain.cpp

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -248,11 +248,8 @@ void FlatSourceDomain::set_flux_to_flux_plus_source(
248248
double scalar_flux_rhs_bd = source_regions_.scalar_flux_rhs_bd(sr, g);
249249
double A0 =
250250
(bd_coefficients_first_order_.at(RandomRay::bd_order_))[0] / settings::dt;
251-
252-
double sigma_t = 1.0;
253-
if (material != MATERIAL_VOID)
254-
sigma_t = sigma_t_[material * negroups_ + g];
255-
251+
// TODO: Add support for expicit void regions
252+
double sigma_t = sigma_t_[material * negroups_ + g];
256253
source_regions_.scalar_flux_new(sr, g) -=
257254
scalar_flux_rhs_bd * inverse_vbar / sigma_t;
258255
source_regions_.scalar_flux_new(sr, g) /= 1 + A0 * inverse_vbar / sigma_t;
@@ -1726,6 +1723,11 @@ SourceRegionHandle FlatSourceDomain::get_subdivided_source_region_handle(
17261723
}
17271724
}
17281725

1726+
if (settings::kinetic_simulation && material == MATERIAL_VOID) {
1727+
fatal_error("Explicit void treatment for kinetic simulations "
1728+
" is not currently supported.");
1729+
}
1730+
17291731
handle.material() = material;
17301732

17311733
// Store the mesh index (if any) assigned to this source region
@@ -1935,9 +1937,8 @@ void FlatSourceDomain::compute_single_phi_prime(SourceRegionHandle& srh)
19351937
int material = srh.material();
19361938
for (int g = 0; g < negroups_; g++) {
19371939
double inverse_vbar = inverse_vbar_[material * negroups_ + g];
1938-
double sigma_t = 1.0;
1939-
if (material != MATERIAL_VOID)
1940-
sigma_t = sigma_t_[material * negroups_ + g];
1940+
// TODO: add support for explicit void
1941+
double sigma_t = sigma_t_[material * negroups_ + g];
19411942

19421943
double scalar_flux_time_derivative =
19431944
A0 * srh.scalar_flux_old(g) + srh.scalar_flux_rhs_bd(g);
@@ -1955,9 +1956,8 @@ void FlatSourceDomain::compute_single_T1(SourceRegionHandle& srh)
19551956
int material = srh.material();
19561957
for (int g = 0; g < negroups_; g++) {
19571958
double inverse_vbar = inverse_vbar_[material * negroups_ + g];
1958-
double sigma_t = 1.0;
1959-
if (material != MATERIAL_VOID)
1960-
sigma_t = sigma_t_[material * negroups_ + g];
1959+
// TODO: add support for explicit void
1960+
double sigma_t = sigma_t_[material * negroups_ + g];
19611961

19621962
// Multiply out sigma_t to correctly compute the derivative term
19631963
float source_time_derivative =
@@ -2140,12 +2140,10 @@ void FlatSourceDomain::store_time_step_quantities(bool increment_not_initialize)
21402140
source_regions_.scalar_flux_final(sr, g), increment_not_initialize,
21412141
RandomRay::bd_order_ + j);
21422142
if (RandomRay::time_method_ == RandomRayTimeMethod::PROPAGATION) {
2143-
// TODO: add support for void regions
21442143
// Multiply out sigma_t to store the base source
21452144
int material = source_regions_.material(sr);
2146-
double sigma_t = 1.0;
2147-
if (material != MATERIAL_VOID)
2148-
sigma_t = sigma_t_[source_regions_.material(sr) * negroups_ + g];
2145+
// TODO: add support for explicit void regions
2146+
double sigma_t = sigma_t_[source_regions_.material(sr) * negroups_ + g];
21492147
float source = source_regions_.source_final(sr, g) * sigma_t;
21502148
add_value_to_bd_vector(source_regions_.source_bd(sr, g), source,
21512149
increment_not_initialize, RandomRay::bd_order_);

src/random_ray/random_ray_simulation.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,6 @@ void openmc_run_random_ray()
5353
// Second steady state simulation to correct the batchwise k-eff
5454
sim.kinetic_initial_condition();
5555

56-
warning(
57-
"Time-dependent explicit void treatment has not yet been "
58-
"implemented. Use caution when interpreting results from models with "
59-
"voids, as they may contain large inaccuracies.");
6056
// Timestepping loop
6157
for (int i = 0; i < settings::n_timesteps; i++)
6258
sim.kinetic_single_time_step(i);

0 commit comments

Comments
 (0)