Skip to content

Commit b3be206

Browse files
committed
move some global vars from settings.cpp to simulation.cpp
- is_initial_condition - current_timetstep
1 parent d745b50 commit b3be206

9 files changed

Lines changed: 55 additions & 43 deletions

File tree

include/openmc/settings.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -203,11 +203,6 @@ extern double weight_survive; //!< Survival weight after Russian roulette
203203
// Timestep variables for kinetic simulation
204204
extern int n_timesteps; //!< number of timesteps
205205
extern double dt; //!< fixed timestep size
206-
extern int current_timestep; //!< current timestep index
207-
extern bool
208-
is_initial_condition; //!< if eigenvalue/fixed source sim is an initial
209-
// condition for a time-dependent simulation
210-
211206
} // namespace settings
212207

213208
//==============================================================================

include/openmc/simulation.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,11 @@ extern vector<int64_t> work_index;
5151

5252
//-----------------------------------------------------------------------------
5353
// Global variables for kinetic simulations
54-
extern double current_time;
54+
extern bool
55+
is_initial_condition; //!< if eigenvalue/fixed source sim is an initial
56+
// condition for a kinetic simulation
57+
extern int current_timestep; // !< current time step in kinetic simulation
58+
extern double current_time; // !< current time in kinetic simulation
5559

5660
} // namespace simulation
5761

src/random_ray/flat_source_domain.cpp

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ void FlatSourceDomain::batch_reset()
100100
#pragma omp parallel for
101101
for (int64_t se = 0; se < n_source_elements(); se++) {
102102
source_regions_.precursors_new(se) = 0.0;
103-
if (!settings::is_initial_condition)
103+
if (!simulation::is_initial_condition)
104104
source_regions_.scalar_flux_td_new(se) = 0.0;
105105
}
106106
}
@@ -156,7 +156,7 @@ void FlatSourceDomain::update_single_neutron_source(SourceRegionHandle& srh)
156156
}
157157
}
158158
// Set souce_td to source for IC calculation
159-
if (settings::is_initial_condition) {
159+
if (simulation::is_initial_condition) {
160160
#pragma omp parallel for
161161
for (int g = 0; g < negroups_; g++)
162162
srh.source_td(g) += srh.source(g);
@@ -191,7 +191,7 @@ void FlatSourceDomain::normalize_scalar_flux_and_volumes(
191191
#pragma omp parallel for
192192
for (int64_t se = 0; se < n_source_elements(); se++) {
193193
source_regions_.scalar_flux_new(se) *= normalization_factor;
194-
if (settings::kinetic_simulation && !settings::is_initial_condition)
194+
if (settings::kinetic_simulation && !simulation::is_initial_condition)
195195
source_regions_.scalar_flux_td_new(se) *= normalization_factor;
196196
}
197197

@@ -226,7 +226,7 @@ void FlatSourceDomain::set_flux_to_flux_plus_source(
226226
double sigma_t = sigma_t_[source_regions_.material(sr) * negroups_ + g];
227227
source_regions_.scalar_flux_new(sr, g) /= (sigma_t * volume);
228228
source_regions_.scalar_flux_new(sr, g) += source_regions_.source(sr, g);
229-
if (settings::kinetic_simulation && !settings::is_initial_condition) {
229+
if (settings::kinetic_simulation && !simulation::is_initial_condition) {
230230
double sigma_t_td =
231231
sigma_t_td_[source_regions_.material(sr) * negroups_ + g];
232232
source_regions_.scalar_flux_td_new(sr, g) /= (sigma_t_td * volume);
@@ -252,7 +252,7 @@ void FlatSourceDomain::set_flux_to_old_flux(int64_t sr, int g)
252252
{
253253
source_regions_.scalar_flux_new(sr, g) =
254254
source_regions_.scalar_flux_old(sr, g);
255-
if (settings::kinetic_simulation && !settings::is_initial_condition) {
255+
if (settings::kinetic_simulation && !simulation::is_initial_condition) {
256256
source_regions_.scalar_flux_td_new(sr, g) =
257257
source_regions_.scalar_flux_td_old(sr, g);
258258
}
@@ -261,7 +261,7 @@ void FlatSourceDomain::set_flux_to_old_flux(int64_t sr, int g)
261261
void FlatSourceDomain::set_flux_to_source(int64_t sr, int g)
262262
{
263263
source_regions_.scalar_flux_new(sr, g) = source_regions_.source(sr, g);
264-
if (settings::kinetic_simulation && !settings::is_initial_condition) {
264+
if (settings::kinetic_simulation && !simulation::is_initial_condition) {
265265
source_regions_.scalar_flux_td_new(sr, g) =
266266
source_regions_.source_td(sr, g);
267267
}
@@ -344,7 +344,7 @@ int64_t FlatSourceDomain::add_source_to_scalar_flux()
344344
}
345345
// Set time-dependent flux to unperturbed flux during the initial
346346
// condition calculation
347-
if (settings::is_initial_condition) {
347+
if (simulation::is_initial_condition) {
348348
source_regions_.scalar_flux_td_new(sr, g) =
349349
source_regions_.scalar_flux_new(sr, g);
350350
}
@@ -751,7 +751,7 @@ void FlatSourceDomain::random_ray_tally()
751751
double material = source_regions_.material(sr);
752752
for (int g = 0; g < negroups_; g++) {
753753
double flux;
754-
if (settings::kinetic_simulation && !settings::is_initial_condition) {
754+
if (settings::kinetic_simulation && !simulation::is_initial_condition) {
755755
flux = source_regions_.scalar_flux_td_new(sr, g) *
756756
source_normalization_factor;
757757
} else {
@@ -771,7 +771,8 @@ void FlatSourceDomain::random_ray_tally()
771771
case SCORE_TOTAL:
772772
if (material != MATERIAL_VOID) {
773773
double sigma_t;
774-
if (settings::kinetic_simulation && !settings::is_initial_condition)
774+
if (settings::kinetic_simulation &&
775+
!simulation::is_initial_condition)
775776
sigma_t = sigma_t_td_[material * negroups_ + g];
776777
else
777778
sigma_t = sigma_t_[material * negroups_ + g];
@@ -782,7 +783,8 @@ void FlatSourceDomain::random_ray_tally()
782783
case SCORE_FISSION:
783784
if (material != MATERIAL_VOID) {
784785
double sigma_f;
785-
if (settings::kinetic_simulation && !settings::is_initial_condition)
786+
if (settings::kinetic_simulation &&
787+
!simulation::is_initial_condition)
786788
sigma_f = sigma_f_td_[material * negroups_ + g];
787789
else
788790
sigma_f = sigma_f_[material * negroups_ + g];
@@ -793,7 +795,8 @@ void FlatSourceDomain::random_ray_tally()
793795
case SCORE_NU_FISSION:
794796
if (material != MATERIAL_VOID) {
795797
double nu_sigma_f;
796-
if (settings::kinetic_simulation && !settings::is_initial_condition)
798+
if (settings::kinetic_simulation &&
799+
!simulation::is_initial_condition)
797800
nu_sigma_f = nu_sigma_f_td_[material * negroups_ + g];
798801
else
799802
nu_sigma_f = nu_sigma_f_[material * negroups_ + g];
@@ -1804,7 +1807,7 @@ SourceRegionHandle FlatSourceDomain::get_subdivided_source_region_handle(
18041807

18051808
// Compute the combined source term
18061809
update_single_neutron_source(handle);
1807-
if (settings::kinetic_simulation && !settings::is_initial_condition) {
1810+
if (settings::kinetic_simulation && !simulation::is_initial_condition) {
18081811
update_single_neutron_source_td(handle);
18091812
if (RandomRay::time_method_ == RandomRayTimeMethod::PROPAGATION) {
18101813
compute_single_neutron_source_time_derivative(handle);
@@ -1907,7 +1910,7 @@ void FlatSourceDomain::apply_transport_stabilization()
19071910
}
19081911
// TODO: test this and td with mesh
19091912
// Duplicated stabilization for time-dependent simulations
1910-
if (settings::kinetic_simulation && !settings::is_initial_condition) {
1913+
if (settings::kinetic_simulation && !simulation::is_initial_condition) {
19111914
double sigma_s_td =
19121915
sigma_s_td_[material * negroups_ * negroups_ + g * negroups_ + g];
19131916
if (sigma_s_td < 0.0) {
@@ -2110,7 +2113,7 @@ void FlatSourceDomain::compute_single_delayed_fission_source(
21102113
if (lambda != 0.0) {
21112114
for (int g = 0; g < negroups_; g++) {
21122115
double scalar_flux;
2113-
if (settings::is_initial_condition) {
2116+
if (simulation::is_initial_condition) {
21142117
scalar_flux = srh.scalar_flux_new(g);
21152118
} else {
21162119
scalar_flux = srh.scalar_flux_td_new(g);
@@ -2138,7 +2141,7 @@ void FlatSourceDomain::compute_single_precursors(SourceRegionHandle& srh)
21382141
double lambda = lambda_[material * ndgroups_ + dg];
21392142
if (lambda != 0.0) {
21402143
double delayed_fission_source = srh.delayed_fission_source(dg);
2141-
if (settings::is_initial_condition) {
2144+
if (simulation::is_initial_condition) {
21422145
srh.precursors_new(dg) = delayed_fission_source / lambda;
21432146
} else {
21442147
double precursor_rhs_bd = srh.precursors_rhs_bd(dg);
@@ -2220,7 +2223,7 @@ void FlatSourceDomain::accumulate_iteration_quantities()
22202223
source_regions_.scalar_flux_td_final(sr, g) +=
22212224
source_regions_.scalar_flux_td_new(sr, g);
22222225
if (RandomRay::time_method_ == RandomRayTimeMethod::PROPAGATION) {
2223-
if (settings::is_initial_condition)
2226+
if (simulation::is_initial_condition)
22242227
source_regions_.source_final(sr, g) +=
22252228
source_regions_.source(sr, g);
22262229
else
@@ -2244,7 +2247,7 @@ void FlatSourceDomain::normalize_final_quantities()
22442247
double source_normalization_factor;
22452248
if (!settings::kinetic_simulation ||
22462249
settings::kinetic_simulation &&
2247-
settings::current_timestep == settings::n_timesteps)
2250+
simulation::current_timestep == settings::n_timesteps)
22482251
source_normalization_factor =
22492252
compute_fixed_source_normalization_factor() * normalization_factor;
22502253
else
@@ -2316,7 +2319,7 @@ void FlatSourceDomain::store_time_step_quantities(bool increment_not_initialize)
23162319
if (RandomRay::time_method_ == RandomRayTimeMethod::PROPAGATION) {
23172320
// Multiply out sigma_t to store the base source
23182321
double sigma_t;
2319-
if (settings::is_initial_condition) {
2322+
if (simulation::is_initial_condition) {
23202323
sigma_t = sigma_t_[source_regions_.material(sr) * negroups_ + g];
23212324
} else {
23222325
sigma_t = sigma_t_td_[source_regions_.material(sr) * negroups_ + g];

src/random_ray/random_ray.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -456,7 +456,7 @@ void RandomRay::attenuate_flux_flat_source(
456456
float new_delta_psi = (angular_flux_[g] - srh.source(g)) * exponential;
457457
delta_psi_[g] = new_delta_psi;
458458
angular_flux_[g] -= new_delta_psi;
459-
if (settings::kinetic_simulation && !settings::is_initial_condition) {
459+
if (settings::kinetic_simulation && !simulation::is_initial_condition) {
460460
float sigma_t_td = domain_->sigma_t_td_[material * negroups_ + g];
461461
float tau_td = sigma_t_td * distance;
462462
float exponential_td =
@@ -499,7 +499,7 @@ void RandomRay::attenuate_flux_flat_source(
499499
// this iteration
500500
for (int g = 0; g < negroups_; g++) {
501501
srh.scalar_flux_new(g) += delta_psi_[g];
502-
if (settings::kinetic_simulation && !settings::is_initial_condition)
502+
if (settings::kinetic_simulation && !simulation::is_initial_condition)
503503
srh.scalar_flux_td_new(g) += delta_psi_td_[g];
504504
}
505505

@@ -860,7 +860,7 @@ void RandomRay::initialize_ray(uint64_t ray_id, FlatSourceDomain* domain)
860860
for (int g = 0; g < negroups_; g++) {
861861
angular_flux_[g] = srh.source(g);
862862
}
863-
if (settings::kinetic_simulation && !settings::is_initial_condition) {
863+
if (settings::kinetic_simulation && !simulation::is_initial_condition) {
864864
for (int g = 0; g < negroups_; g++) {
865865
angular_flux_td_[g] = srh.source_td(g);
866866
}

src/random_ray/random_ray_simulation.cpp

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,16 @@ void openmc_run_random_ray()
3535
// TODO: no initial condition needed fof td fixed source simulations
3636
// Check if this simulation is to establish an initial condition
3737
if (settings::kinetic_simulation)
38-
settings::is_initial_condition = true;
38+
simulation::is_initial_condition = true;
3939

4040
// Configure the domain for forward simulation
4141
FlatSourceDomain::adjoint_ = false;
4242

43+
// If we're going to do a kinetic simulation, report that this is
44+
// the initial condition.
45+
if (settings::kinetic_simulation && mpi::master)
46+
header("KINETIC SIMULATION INITIAL CONDITION", 3);
47+
4348
// If we're going to do an adjoint simulation afterwards, report that this is
4449
// the initial forward flux solve.
4550
if (adjoint_needed && mpi::master)
@@ -91,16 +96,21 @@ void openmc_run_random_ray()
9196
// Timestepping loop
9297
// TODO: Add support for time-dependent restart
9398
for (int i = 0; i < settings::n_timesteps; i++) {
94-
settings::current_timestep = i + 1;
99+
simulation::current_timestep = i + 1;
95100

96101
// Print simulation information
97102
if (mpi::master) {
98103
std::string message = fmt::format(
99-
"KINETIC SIMULATION TIME STEP {0}", settings::current_timestep);
104+
"KINETIC SIMULATION TIME STEP {0}", simulation::current_timestep);
100105
const char* msg = message.c_str();
101106
header(msg, 3);
102107
}
103108

109+
// If we're going to do an adjoint simulation afterwards, report that this
110+
// is the initial forward flux solve.
111+
if (adjoint_needed && mpi::master)
112+
header("FORWARD FLUX SOLVE", 3);
113+
104114
reset_timers();
105115

106116
// Initialize OpenMC general data structures
@@ -133,9 +143,9 @@ void openmc_run_random_ray()
133143
sim.output_simulation_results();
134144

135145
// Rename statepoint and tallies file
136-
rename_statepoint_file(settings::current_timestep);
146+
rename_statepoint_file(simulation::current_timestep);
137147
if (settings::output_tallies) {
138-
rename_tallies_file(settings::current_timestep);
148+
rename_tallies_file(simulation::current_timestep);
139149
}
140150

141151
// Normalize and store final quantities for next time step
@@ -493,7 +503,7 @@ void write_random_ray_hdf5(hid_t group)
493503
RandomRay::total_geometric_intersections_ * data::mg.num_energy_groups_;
494504
write_dataset(random_ray_group, "n_integrations", n_integrations);
495505

496-
if (settings::kinetic_simulation && !settings::is_initial_condition) {
506+
if (settings::kinetic_simulation && !simulation::is_initial_condition) {
497507
write_dataset(random_ray_group, "bd_order", RandomRay::bd_order_);
498508
switch (RandomRay::time_method_) {
499509
case RandomRayTimeMethod::ISOTROPIC:
@@ -515,7 +525,7 @@ void write_random_ray_hdf5(hid_t group)
515525
void set_time_dependent_settings()
516526
{
517527
// Reset flags
518-
settings::is_initial_condition = false;
528+
simulation::is_initial_condition = false;
519529

520530
// Set current time
521531
simulation::current_time = settings::dt;
@@ -619,7 +629,7 @@ void RandomRaySimulation::simulate()
619629
// domain_->compute_neutron_source()
620630
// Update source term (scattering + fission)
621631
domain_->update_all_neutron_sources();
622-
if (settings::kinetic_simulation && !settings::is_initial_condition) {
632+
if (settings::kinetic_simulation && !simulation::is_initial_condition) {
623633
domain_->update_all_neutron_sources_td();
624634
}
625635

@@ -688,7 +698,7 @@ void RandomRaySimulation::simulate()
688698

689699
// Set phi_old = phi_new
690700
domain_->flux_swap();
691-
if (settings::kinetic_simulation && !settings::is_initial_condition) {
701+
if (settings::kinetic_simulation && !simulation::is_initial_condition) {
692702
domain_->flux_td_swap();
693703
domain_->precursors_swap();
694704
}
@@ -766,7 +776,7 @@ void RandomRaySimulation::print_results_random_ray() const
766776
time_transport.elapsed() - time_tallies.elapsed() -
767777
time_bank_sendrecv.elapsed();
768778

769-
if (settings::kinetic_simulation && !settings::is_initial_condition) {
779+
if (settings::kinetic_simulation && !simulation::is_initial_condition) {
770780
misc_time -= time_update_bd_vectors_td.elapsed();
771781
}
772782
header("Simulation Statistics", 4);
@@ -846,7 +856,7 @@ void RandomRaySimulation::print_results_random_ray() const
846856
} else {
847857
fmt::print(" Transport XS Stabilization Used = NO\n");
848858
}
849-
if (settings::kinetic_simulation && !settings::is_initial_condition) {
859+
if (settings::kinetic_simulation && !simulation::is_initial_condition) {
850860
std::string time_method =
851861
(RandomRay::time_method_ == RandomRayTimeMethod::ISOTROPIC)
852862
? "ISOTROPIC"
@@ -867,7 +877,7 @@ void RandomRaySimulation::print_results_random_ray() const
867877
"Precursor computation only", time_compute_precursors.elapsed(), 1);
868878
misc_time -= time_compute_precursors.elapsed();
869879

870-
if (!settings::is_initial_condition) {
880+
if (!simulation::is_initial_condition) {
871881
show_time(
872882
"Time-dependent source update only", time_update_src_td.elapsed(), 1);
873883
misc_time -= time_update_src_td.elapsed();

src/random_ray/source_region.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -412,7 +412,7 @@ void SourceRegionContainer::adjoint_reset()
412412
std::fill(flux_moments_t_.begin(), flux_moments_t_.end(),
413413
MomentArray {0.0, 0.0, 0.0});
414414
// Reset arrays for kinetic adjoint simulations
415-
if (settings::kinetic_simulation && !settings::is_initial_condition) {
415+
if (settings::kinetic_simulation && !simulation::is_initial_condition) {
416416
std::fill(scalar_flux_td_old_.begin(), scalar_flux_td_old_.end(), 0.0);
417417
std::fill(scalar_flux_td_new_.begin(), scalar_flux_td_new_.end(), 0.0);
418418
std::fill(

src/settings.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,8 +153,6 @@ double weight_survive {1.0};
153153
// Timestep variables for kinetic simulation
154154
int n_timesteps;
155155
double dt;
156-
int current_timestep;
157-
bool is_initial_condition {false};
158156

159157
} // namespace settings
160158

src/simulation.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,8 @@ const RegularMesh* ufs_mesh {nullptr};
323323
vector<double> k_generation;
324324
vector<int64_t> work_index;
325325

326+
bool is_initial_condition {false};
327+
int current_timestep;
326328
double current_time;
327329

328330
} // namespace simulation

src/state_point.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ extern "C" int openmc_statepoint_write(const char* filename, bool* write_source)
132132
hid_t timestep_group = create_group(file_id, "timestep_data");
133133
write_dataset(timestep_group, "dt", settings::dt);
134134
write_dataset(
135-
timestep_group, "current_timestep", settings::current_timestep);
135+
timestep_group, "current_timestep", simulation::current_timestep);
136136
write_dataset(timestep_group, "current_time", simulation::current_time);
137137
close_group(timestep_group);
138138
}

0 commit comments

Comments
 (0)