yeah, the only reason for using std::array is that using `std::vector<double[MaxNumPhases]>` produces a compiler error...