# Written 16/11/15 by Duncan Forgan
# Given an input power spectrum, generates fractal density grids in 1D
# Taken from Walch et al, arXiv:1109.3478

import numpy as np
import fractalmodule as fr

# Read in input data:

# fractalD - fractal dimension
# rhozero - density scaling parameter
# ngrid - Number of grid cells 
# boxlength - Half length of box in code units (e.g. dimensions (-L,L))
# filename - output filename

fractalD, npower, rhozero, seed, ngrid, boxlength, filename = fr.readInputs_Cube()

# Define the cubic Grid
x,dr = fr.create1DGrid(ngrid,boxlength)

# Create Wavenumbers
k = fr.constructWavenumbers(ngrid, boxlength, dr)

# Compute a 3D power spectrum (power law k^-npower)
powerspec = fr.compute1DPowerLawPowerSpectrum(npower, ngrid, k)

# The power spectrum has no phase data - must generate it before Fourier Transform
# Use random phases to reconstruct the Fourier Transform of the density

rho_fft = fr.PowerSpectrumToFT(seed, powerspec)
            
Example #2
0
# Written 16/11/15 by Duncan Forgan
# Given an input power spectrum, generates fractal density grids in 1D
# Taken from Walch et al, arXiv:1109.3478

import numpy as np
import fractalmodule as fr

# Read in input data:

# fractalD - fractal dimension
# rhozero - density scaling parameter
# ngrid - Number of grid cells
# boxlength - Half length of box in code units (e.g. dimensions (-L,L))
# filename - output filename

fractalD, npower, rhozero, seed, ngrid, boxlength, filename = fr.readInputs_Cube(
)

# Define the cubic Grid
x, dr = fr.create1DGrid(ngrid, boxlength)

# Create Wavenumbers
k = fr.constructWavenumbers(ngrid, boxlength, dr)

# Compute a 3D power spectrum (power law k^-npower)
powerspec = fr.compute1DPowerLawPowerSpectrum(npower, ngrid, k)

# The power spectrum has no phase data - must generate it before Fourier Transform
# Use random phases to reconstruct the Fourier Transform of the density

rho_fft = fr.PowerSpectrumToFT(seed, powerspec)
import fractalmodule as fr

# Read in input data:

print "-----"
print "UNIFORM DENSITY DISTRIBUTION IN A 3D CUBE"
print "(control for fractal simulations)"
print "-----"

# fractalD - fractal dimension
# rhozero - density scaling parameter
# ngrid - Number of grid cells per dimension (i.e. total ngrid^3)
# boxlength - Half length of box in code units (e.g. dimensions (-L,L))
# filename - output filename

fractalD, npower, deltarho, rhozero, seed, distkey, distunit, masskey, massunit, ngrid, boxlength, filename = fr.readInputs_Cube(
)

# Define the cubic Grid
x, y, z, dr = fr.createCube(ngrid, boxlength, distkey)

print "***"
print "***This script produces a control cube of uniform density: ignoring fractal calculations***"
print "***"

rho = np.zeros((ngrid, ngrid, ngrid))

rho[:, :, :] = 1.0

# Write density grid to file

fr.writeCubicGridToFile(x, y, z, ngrid, rho, dr, massunit, distunit, masskey,
print "-----"
print "FRACTAL DENSITY DISTRIBUTION IN A 3D CUBE"
print "-----"


# fractalD - fractal dimension
# deltarho - strength of density fluctuations
# rhozero - Mean density in the box
# ngrid - Number of grid cells per dimension (i.e. total ngrid^3)
# boxlength - Half length of box in code units (e.g. dimensions (-L,L))
# seed - random number seed
# masskey, massunit - string describing mass unit, value
# distkey, distunit - string describing distance unit, value
# filename - output filename

fractalD, npower, deltarho, rhozero, seed, distkey, distunit, masskey, massunit,ngrid, boxlength, filename = fr.readInputs_Cube()

# Define the cubic Grid
x,y,z,dr = fr.createCube(ngrid, boxlength,distkey)

# Create Wavenumbers
k = fr.constructWavenumbers(ngrid, boxlength, dr, distkey)

# Compute a 3D power spectrum (power law k^-npower)
powerspec = fr.computePowerLawPowerSpectrum(npower, ngrid, ngrid, ngrid, k, k, k)

# The power spectrum has no phase data - must generate it before Fourier Transform
# Use random phases to reconstruct the Fourier Transform of the density

rho_fft = fr.PowerSpectrumToFT(seed, powerspec)