I would like to generate an isotropic gaussian random field described by a power spectrum $P(k)$ on a 3D grid which represents spherical polar coordinates (i.e., the angular separation between pixels at each slice in the radial direction is equal and each pixel represents a solid angle).
I am currently generating a random field on a cartesian grid by
- Filling a 3D grid in Fourier space $(k_x, k_y, k_z)$ with random numbers drawn from a normal distribution with standard deviation $\sigma = \frac{P(k)}{2}$ where $k = \sqrt{k_x^2 + k_y^2 + k_z^2}$
- Imposing hermitian symmetry to ensure a real field
- Fourier transforming into real space
My only thought is that I could do this process on a high resolution cartesian grid and average into spherical bins, though this seems convoluted.
Is there a more efficient way that I could generate this directly?