diff --git a/src/geometry_aux.cpp b/src/geometry_aux.cpp index d38b5f8f5..7442c8b2d 100644 --- a/src/geometry_aux.cpp +++ b/src/geometry_aux.cpp @@ -167,16 +167,25 @@ get_temperatures(std::vector>& nuc_temps, int i_material = cell->material_[j]; if (i_material == MATERIAL_VOID) continue; - // Get temperature of cell (rounding to nearest integer) - double sqrtkT = cell->sqrtkT_.size() == 1 ? - cell->sqrtkT_[j] : cell->sqrtkT_[0]; - double temperature = sqrtkT*sqrtkT / K_BOLTZMANN; + // Get temperature(s) of cell (rounding to nearest integer) + std::vector cell_temps; + if (cell->sqrtkT_.size() == 1) { + double sqrtkT = cell->sqrtkT_[0]; + cell_temps.push_back(sqrtkT*sqrtkT / K_BOLTZMANN); + } else if (cell->sqrtkT_.size() == cell->material_.size()) { + double sqrtkT = cell->sqrtkT_[j]; + cell_temps.push_back(sqrtkT*sqrtkT / K_BOLTZMANN); + } else { + for (double sqrtkT : cell->sqrtkT_) + cell_temps.push_back(sqrtkT*sqrtkT / K_BOLTZMANN); + } const auto& mat {model::materials[i_material]}; for (const auto& i_nuc : mat->nuclide_) { - // Add temperature if it hasn't already been added - if (!contains(nuc_temps[i_nuc], temperature)) { - nuc_temps[i_nuc].push_back(temperature); + for (double temperature : cell_temps) { + // Add temperature if it hasn't already been added + if (!contains(nuc_temps[i_nuc], temperature)) + nuc_temps[i_nuc].push_back(temperature); } } @@ -184,9 +193,10 @@ get_temperatures(std::vector>& nuc_temps, // Get index in data::thermal_scatt array int i_sab = table.index_table; - // Add temperature if it hasn't already been added - if (!contains(thermal_temps[i_sab], temperature)) { - thermal_temps[i_sab].push_back(temperature); + for (double temperature : cell_temps) { + // Add temperature if it hasn't already been added + if (!contains(thermal_temps[i_sab], temperature)) + thermal_temps[i_sab].push_back(temperature); } } }