43 auto [idxs_min, idxs_max] = Lattice::get_box_index_bounds(dr, box.first, box.second);
50 : context(context), dr(dr), box(box), generator(init_gen(dr, box)) {}
57 using namespace shamrock::patch;
60 std::vector<Tvec> pos_data;
64 u64 loc_gen_count = nmax;
66 auto gen_info = shamalgs::collective::fetch_view(loc_gen_count);
68 u64 skip_start = gen_info.head_offset;
69 u64 gen_cnt = loc_gen_count;
70 u64 skip_end = gen_info.total_byte_count - loc_gen_count - gen_info.head_offset;
73 "GeneratorLatticeCubic",
79 skip_start + gen_cnt + skip_end);
81 generator.skip(skip_start);
82 auto tmp = generator.next_n(gen_cnt);
83 generator.skip(skip_end);
86 if (Patch::is_in_patch_converted(r, box.
lower, box.
upper)) {
87 pos_data.push_back(r);
94 if (!pos_data.empty()) {
95 tmp.resize(pos_data.size());
99 u32 len = pos_data.size();
101 = tmp.get_field<Tvec>(sched.pdl_old().
get_field_idx<Tvec>(
"xyz"));
103 f.override(pos_data, len);
108 = tmp.get_field<Tscal>(sched.pdl_old().
get_field_idx<Tscal>(
"hpart"));