40 grid_dimensions_ = {grid_dimension_x, grid_dimension_y, grid_dimension_z};
41 grid_shifts_ = {shift_x, shift_y, shift_z};
43 int total_grid_points = grid_dimension_x * grid_dimension_y * grid_dimension_z;
44 Real weight = 2.0 / total_grid_points;
46 for (
int x_index = 0; x_index < grid_dimension_x; x_index++) {
47 for (
int y_index = 0; y_index < grid_dimension_y; y_index++) {
48 for (
int z_index = 0; z_index < grid_dimension_z; z_index++) {
50 coordinates.
x =
static_cast<Real>(x_index) / grid_dimension_x +
51 (shift_x ? 0.5 : 0.0) / grid_dimension_x;
52 coordinates.
y =
static_cast<Real>(y_index) / grid_dimension_y +
53 (shift_y ? 0.5 : 0.0) / grid_dimension_y;
54 coordinates.
z =
static_cast<Real>(z_index) / grid_dimension_z +
55 (shift_z ? 0.5 : 0.0) / grid_dimension_z;
58 coordinates.
x -= std::floor(coordinates.
x + 0.5);
59 coordinates.
y -= std::floor(coordinates.
y + 0.5);
60 coordinates.
z -= std::floor(coordinates.
z + 0.5);
65 kpoints_.push_back(kpoint);
145 std::array<int, 3> grid_dimensions_ = {0, 0, 0};
146 std::array<int, 3> grid_shifts_ = {0, 0, 0};