From 26aa8bd28540abb4ec5be449257f19d8e8280287 Mon Sep 17 00:00:00 2001 From: jaimerzp Date: Thu, 17 Oct 2024 10:05:29 +0100 Subject: [PATCH] no print --- src/theory.jl | 9 ++++++--- src/tracers.jl | 38 ++++++++++++++++++++++++-------------- test/test_output.npz | Bin 25674 -> 69358 bytes 3 files changed, 30 insertions(+), 17 deletions(-) diff --git a/src/theory.jl b/src/theory.jl index 44c7daf..6eb577e 100755 --- a/src/theory.jl +++ b/src/theory.jl @@ -2,7 +2,8 @@ function Theory(cosmology::Cosmology, names, types, pairs, idx, files; Nuisances=Dict(), - res_wl=350, res_gc=1000) + res_wl=350, res_gc=1000, + int_wl="linear", int_gc="linear") nui_type = eltype(valtype(Nuisances)) if !(nui_type <: Float64) & (nui_type != Any) @@ -23,7 +24,8 @@ function Theory(cosmology::Cosmology, zs = get(Nuisances, string(name, "_", "zs"), zs_mean) dz = get(Nuisances, string(name, "_", "dz"), 0.0) tracer = NumberCountsTracer(cosmology, zs .+ dz, nz; - b=b, res_gc=res_gc) + b=b, res=res_gc, + nz_interpolation=int_gc) elseif t_type == "galaxy_shear" zs_mean, nz_mean = files[string("nz_", name)] m = get(Nuisances, string(name, "_", "m"), 0.0) @@ -34,7 +36,8 @@ function Theory(cosmology::Cosmology, dz = get(Nuisances, string(name, "_", "dz"), 0.0) tracer = WeakLensingTracer(cosmology, zs .+ dz, nz; m=m, IA_params=IA_params, - res=res_wl) + res=res_wl, + nz_interpolation=int_wl) elseif t_type == "cmb_convergence" tracer = CMBLensingTracer(cosmology) diff --git a/src/tracers.jl b/src/tracers.jl index c2cfabc..77b87d8 100755 --- a/src/tracers.jl +++ b/src/tracers.jl @@ -27,7 +27,8 @@ Kwargs: Returns: - `NumberCountsTracer::NumberCountsTracer` : Number counts tracer structure. """ -NumberCountsTracer(cosmo::Cosmology, z_n, nz; b=1.0, res=1000) = begin +NumberCountsTracer(cosmo::Cosmology, z_n, nz; + b=1.0, res=1000, nz_interpolation="linear") = begin z_w, nz_w = nz_interpolate(z_n, nz, res) nz_norm = integrate(z_w, nz_w, SimpsonEven()) @@ -60,7 +61,8 @@ struct WeakLensingTracer <: Tracer end WeakLensingTracer(cosmo::Cosmology, z_n, nz; - IA_params = [0.0, 0.0], m=0.0, res=350, kwargs...) = begin + IA_params = [0.0, 0.0], m=0.0, + res=350, nz_interpolate="linear") = begin cosmo_type = cosmo.settings.cosmo_type z_w, nz_w = nz_interpolate(z_n, nz, res) res = length(z_w) @@ -152,17 +154,25 @@ function get_IA(cosmo::Cosmology, zs, IA_params) return @. A_IA*((1 + zs)/1.62)^alpha_IA * (0.0134 * cosmo.cpar.Ωm / cosmo.Dz(zs)) end -function nz_interpolate(z, nz, res=nothing) - dz = mean(z[2:end] - z[1:end-1]) - z_range = z[1]:dz:z[end] - nz_int = cubic_spline_interpolation(z_range, nz) - if res==nothing - dzz = dz/10 +function nz_interpolate(z, nz; mode="linear", res=nothing) + if mode!="none" + if mode=="linear" + nz_int = linear_interpolation(z, nz, extrapolation_bc=Line()) + if mode=="cubic" + dz = mean(z[2:end] - z[1:end-1]) + z_range = z[1]:dz:z[end] + nz_int = cubic_spline_interpolation(z_range, nz) + end + if res==nothing + dzz = dz/10 + else + L = z[end] - z[1] + dzz = L/res + end + zz_range = z[1]:dzz:z[end] + nzz = nz_int(zz_range) + return zz_range, nzz else - L = z[end] - z[1] - dzz = L/res + return z, nz end - zz_range = z[1]:dzz:z[end] - nzz = nz_int(zz_range) - return zz_range, nzz -end \ No newline at end of file +end diff --git a/test/test_output.npz b/test/test_output.npz index 477115349975a9cd317c63e5f82b380cd61ddaf6..eff0eab8b4c62f5e591200076d6686bbbc8ead76 100644 GIT binary patch delta 42338 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 a0B*g~TVE@2Gh(2MO!0dfOGx<^(B1<=tHDhG