ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
ERF_SBMFixtureValidation.H
Go to the documentation of this file.
1 #ifndef ERF_SBM_FIXTURE_VALIDATION_H_
2 #define ERF_SBM_FIXTURE_VALIDATION_H_
3 
4 #include "ERF_SBMRemapping.H"
5 
6 #include <vector>
7 
8 namespace erf_sbm {
9 
10 /** Result of the canonical-state check used for user/fixture initialization. */
12  bool canonical{false};
13  int population_id{-1};
14  int bin{-1};
16 };
17 
18 /**
19  * Apply the persisted-state admission rule to each bin before ERF accepts a
20  * user/fixture initial spectrum. Kept as the constructor's shared validation
21  * seam so unit tests can exercise the exact candidate-layout check.
22  */
23 inline FixtureInitialStateCanonicality
25  const SBMLayout& layout, const std::vector<amrex::Real>& state) noexcept
26 {
28  if (state.size() != static_cast<std::size_t>(layout.ncomp())) return result;
29 
30  result.canonical = true;
31  const int state_count = static_cast<int>(state.size());
32  for (const auto& population : layout.populations()) {
33  const auto view = population_remap_view(layout, population.population_id);
34  for (int bin = 0; bin < population.grid.nbins(); ++bin) {
36  view, bin, state.data(), state_count)) {
37  result.canonical = false;
38  result.population_id = population.population_id;
39  result.bin = bin;
40  result.moment_mode = population.moment_mode;
41  return result;
42  }
43  }
44  }
45  return result;
46 }
47 
48 } // namespace erf_sbm
49 
50 #endif // ERF_SBM_FIXTURE_VALIDATION_H_
Definition: ERF_SBMLayout.H:94
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool canonical_persisted_bin_state(const PopulationRemapView &population, const int bin, const amrex::Real *state, const int state_count) noexcept
Definition: ERF_SBMRemapping.H:475
Definition: ERF.H:108
MomentMode
Definition: ERF_SpectralGrid.H:19
FixtureInitialStateCanonicality validate_fixture_initial_state_canonicality(const SBMLayout &layout, const std::vector< amrex::Real > &state) noexcept
Definition: ERF_SBMFixtureValidation.H:24
PopulationRemapView population_remap_view(const SBMLayout &layout, const int population_id) noexcept
Definition: ERF_SBMRemapping.cpp:8
Definition: ERF_SBMFixtureValidation.H:11
int bin
Definition: ERF_SBMFixtureValidation.H:14
bool canonical
Definition: ERF_SBMFixtureValidation.H:12
MomentMode moment_mode
Definition: ERF_SBMFixtureValidation.H:15
int population_id
Definition: ERF_SBMFixtureValidation.H:13