def METHOD_NAME(self, chunks, ptf):
    chunks = list(chunks)  # generator --> list
    p_idx = self.ds.index._particle_indices
    # shortcuts
    par_posx = self._group_particle["ParPosX"]
    par_posy = self._group_particle["ParPosY"]
    par_posz = self._group_particle["ParPosZ"]
    # currently GAMER does not support multiple particle types
    assert len(ptf) == 1
    ptype = list(ptf.keys())[0]
    for chunk in chunks:
        for g1, g2 in particle_sequences(chunk.objs):
            start = p_idx[g1.id]
            end = p_idx[g2.id + 1]
            x = np.asarray(par_posx[start:end], dtype=self._field_dtype)
            y = np.asarray(par_posy[start:end], dtype=self._field_dtype)
            z = np.asarray(par_posz[start:end], dtype=self._field_dtype)
            yield ptype, (x, y, z), 0.0