Gaussian density fields
Pylians provide a few routines to generate Gaussian density fields either in 2D or 3D. The ingredients needed are:
grid. The generated Gaussian density field will have grid x grid pixels in 2D or grid x grid x grid voxels in 3D.
k. 1D float32 numpy array containing the k-values of the input power spectrum.
Pk. 1D float32 numpy array containing the Pk-values of the input power spectrum.
Rayleigh_sampling. Where Rayleigh sampling the modes amplitudes when generating the Gaussian field. If
Rayleigh_sampling=0the Gaussian field will not have cosmic variance. Set
Rayleigh_sampling=1for standard Gaussian density fields.
seed. Integer for the random seed of the map.
BoxSize. Size of the region over which to generate the field. Units should be compatible with those of
threads. Number of openmp threads. Only used when FFT the field from Fourier space to configuration space.
verbose. Whether output some information.
An example on how to generate these fields in 2D and 3D is this:
import numpy as np import density_field_library as DFL grid = 128 #grid size BoxSize = 1000.0 #Mpc/h seed = 1 #value of the initial random seed Rayleigh_sampling = 0 #whether sampling the Rayleigh distribution for modes amplitudes threads = 1 #number of openmp threads verbose = True #whether to print some information # read power spectrum; k and Pk have to be floats, not doubles k, Pk = np.loadtxt('my_Pk.txt', unpack=True) k, Pk = k.astype(np.float32), Pk.astype(np.float32) # generate a 2D Gaussian density field df_2D = DFL.gaussian_field_2D(grid, k, Pk, Rayleigh_sampling, seed, BoxSize, threads, verbose) # generate a 3D Gaussian density field df_3D = DFL.gaussian_field_3D(grid, k, Pk, Rayleigh_sampling, seed, BoxSize, threads, verbose)