module; #include export module mean_field:solver.fields; export namespace mean_field::solver { enum class FieldBlock : std::uint8_t { velocity = 0, density = 1, gravity_gradient = 2, gravity_potential = 3, displacement = 4, count = 5 }; [[nodiscard]] constexpr int block_index(const FieldBlock field) noexcept { return static_cast(field); } inline constexpr int field_block_count = block_index(FieldBlock::count); static_assert(block_index(FieldBlock::velocity) == 0); static_assert(block_index(FieldBlock::density) == 1); static_assert(block_index(FieldBlock::gravity_gradient) == 2); static_assert(block_index(FieldBlock::gravity_potential) == 3); static_assert(block_index(FieldBlock::displacement) == 4); static_assert(field_block_count == 5); } // namespace mean_field::solver