1
0
Fork 0
mirror of https://github.com/Findus23/halo_comparison.git synced 2024-09-19 16:03:50 +02:00

look into spectra and HMF

This commit is contained in:
Lukas Winkler 2022-12-13 11:42:07 +01:00
parent cd84744a7a
commit ffdc64db74
Signed by: lukas
GPG key ID: 54DE4D798D244853
3 changed files with 139 additions and 6 deletions

View file

@ -2,9 +2,8 @@ from math import log
from pathlib import Path
import numpy as np
# from colossus.cosmology import cosmology
# from colossus.lss import mass_function
from colossus.cosmology import cosmology
from colossus.lss import mass_function
from matplotlib import pyplot as plt
from matplotlib.axes import Axes
from matplotlib.figure import Figure
@ -33,14 +32,30 @@ def monofonic_tests():
else:
resolutions.append(512)
for i, waveform in enumerate(["DB2", "shannon"]):
plank_cosmo = cosmology.cosmologies["planck18"]
our_cosmo = {
# "sigma8": 0.807,
"H0": 0.67742 * 100,
"Om0": 0.3099,
"Ob0": 0.048891054,
"ns": 0.96822,
}
cosmology.addCosmology("ourCosmo", params={**plank_cosmo, **our_cosmo})
cosmology.setCosmology("ourCosmo")
print(cosmology.getCurrent())
for i, waveform in enumerate(["DB2", "shannon", "shannon_rehalo"]):
for j, resolution in enumerate(resolutions):
if waveform == "shannon_rehalo" and resolution != 128:
continue
print(waveform, resolution)
dir = base_dir / f"{waveform}_{resolution}_100"
halos = read_velo_halos(dir)
# halos.to_csv("weird_halos.csv")
halo_masses: np.ndarray = halos["Mvir"].to_numpy()
halo_masses: np.ndarray = halos["Mvir"].to_numpy() * 1e10 * 0.67742
halo_masses = halo_masses[halo_masses > 0]
(
Ns,
@ -58,7 +73,7 @@ def monofonic_tests():
name = f"{waveform} {resolution}"
ax.step(
left_edges,
number_densities,
number_densities / (0.67742 ** 3),
where="post",
color=f"C{i}",
linestyle=linestyles[j],
@ -76,6 +91,13 @@ def monofonic_tests():
# break
# break
mfunc = mass_function.massFunction(
left_edges, 1, mdef="vir", model="tinker08", q_out="dndlnM"
)
ax.plot(left_edges, mfunc, label="tinker08", color="C4")
plt.legend()
fig.savefig(Path(f"~/tmp/halo_mass_function.pdf").expanduser())
plt.show()

28
hmf_test.py Normal file
View file

@ -0,0 +1,28 @@
import matplotlib.pyplot as plt
from velociraptor import load, tools
from paths import base_dir
from read_vr_files import read_velo_halos
from unyt import Mpc
import unyt
for i, waveform in enumerate(["DB2", "DB4", "DB8", "shannon"]):
for j, resolution in enumerate([128, 256, 512]):
print(waveform, resolution)
dir = base_dir / f"{waveform}_{resolution}_100"
data = load(str(dir)+"/vroutput.properties.0")
print(data)
masses_200crit = data.masses.mass_200crit
masses_200crit.convert_to_units("msun")
lowest_halo_mass = 1e9 * unyt.msun
highest_halo_mass = 8e15 * unyt.msun
bin_centers, mass_function, error = tools.create_mass_function(
masses_200crit, lowest_halo_mass, highest_halo_mass, (100*Mpc)**3
)
plt.loglog(bin_centers,mass_function)
# halos = read_velo_halos(dir)
#
# print(halos["Rvir"].sort_values(ascending=False)[:4].to_numpy())
plt.show()

83
spectra_test.py Normal file
View file

@ -0,0 +1,83 @@
import numpy as np
import pandas as pd
import scipy.special as sf
from matplotlib import pyplot as plt
from matplotlib.axes import Axes
from matplotlib.figure import Figure
def read_monofonic_file(file: str):
return pd.read_csv(
file,
sep=" ",
skipinitialspace=True,
header=None,
names=[
"k", "P_dtot", "P_dcdm", "P_dbar", "P_tcdm", "P_tbar", "..", "...", "....", "....."
],
skiprows=1,
)
def read_spectra_file(file: str):
return pd.read_csv(
# f"/home/lukas/cosmos_data/monofonic_tests/spectra/DB8_100/DB8_100_ics_256_256_cross_spectrum.txt",
file,
sep=" ",
skipinitialspace=True,
header=None,
names=[
"k",
"Pcross",
"P1",
"err. P1",
"P2",
"err. P2",
"P2-1",
"err. P2-1",
"modes in bin",
],
skiprows=1,
)
monofonic_spectra = read_monofonic_file(
f"/home/lukas/cosmoca/cosmoca-reproducibility/monofonic_tests/input_powerspec.txt")
print(monofonic_spectra)
def Dplus(lambda0, a):
return a * np.sqrt(1.0 + lambda0 * a ** 3) * \
sf.hyp2f1(3.0 / 2.0, 5.0 / 6.0, 11.0 / 6.0, -lambda0 * a ** 3)
OmegaLambda = 0.6901
OmegaM = 0.3099
lambda_0 = OmegaLambda / OmegaM
a_ini = 0.02
factor = Dplus(lambda_0, a_ini) ** 2 / Dplus(lambda_0, 1) ** 2
sim_spectra = read_spectra_file(
"/home/lukas/cosmoca/cosmoca-reproducibility/monofonic_tests/out.txt_cross_spectrum.txt")
sim_spectra_ics_new = read_spectra_file(
"/home/lukas/cosmoca/cosmoca-reproducibility/monofonic_tests/DB8_spectra.txt_cross_spectrum.txt")
sim_spectra_ics_old = read_spectra_file(
"/home/lukas/cosmos_data/monofonic_tests/spectra/DB8_100/DB8_100_ics_256_256_cross_spectrum.txt", )
sim_spectra = read_spectra_file(
"/home/lukas/cosmos_data/monofonic_tests/spectra/DB8_100/DB8_100_a4_256_256_cross_spectrum.txt", )
sim_spectra_new = read_spectra_file(
"/home/lukas/cosmoca/cosmoca-reproducibility/monofonic_tests/DB8_spectra_end_cross_spectrum.txt")
fig: Figure = plt.figure()
ax: Axes = fig.gca(
)
ax.loglog(sim_spectra.k, sim_spectra.P1*factor, label="sim")
ax.loglog(sim_spectra_new.k, sim_spectra_new.P1*factor, label="sim new")
ax.loglog(sim_spectra_ics_old.k, sim_spectra_ics_old.P1, label="ics old")
ax.loglog(sim_spectra_ics_new.k, sim_spectra_ics_new.P1, label="ics new")
ax.loglog(monofonic_spectra.k, monofonic_spectra.P_dtot, linestyle="dotted", label="ref")
# ax.loglog(monofonic_spectra.k, monofonic_spectra.P_dcdm, label="P_dcdm")
# ax.loglog(monofonic_spectra.k, monofonic_spectra.P_dbar, label="P_dbar")
plt.legend()
plt.show()