grid_points = {
const [dxy, dz] = [size, dcmax - mindist];
let r = 4000;
const nxy = Math.round((r * dxy / dz * nsrc) ** (1/3));
const nz = Math.round(nsrc / nxy ** 2);
const xymax = (nxy - 1) / nxy * size / 2;
const xy = linspace(-xymax, xymax, nxy);
const rshift = 0.1 * Math.PI;
const x = xy.map(x => x - (rshift/2) * size / nxy);
const y = xy.map(y => y + rshift * size / nxy);
const z = linspace(mindist, dcmax, nz);
return prepare(meshgrid([x, x, z]).flat(2));
}