lesgourg / class_public

Public repository of the Cosmic Linear Anisotropy Solving System (master for the most recent version of the standard code; GW_CLASS to include Cosmic Gravitational Wave Background anisotropies; classnet branch for acceleration with neutral networks; ExoCLASS branch for exotic energy injection; class_matter branch for FFTlog)
225 stars 282 forks source link

Discontinuous effective equation of state (EoS) of Dark Enegry #372

Open deltasata opened 3 years ago

deltasata commented 3 years ago

w_eff.pdf I am new to CLASS+Montepython combination. As far as I know the easiest way to modify the background according to a model is to change w_fld(a), dwfld/da and the integration of 3(1+w{fld})/a. But there are many models for which the EoS is discontinuous, for example the normal branch of DGP braneworld and the screened DE models. The infinite discontinuity in the EoS poses no physical issue since the former is a derived quantity in the first place and not a physical observable quantity (all the observables are finite always in these models). A typical w_eff vs a plot for such a model has been attached.

To incorporate these models into CLASS what should I do? Is there an alternate way of modifying the background without using EoS?

Note that I will not touch the perturbation part.

P.S. I can analytically calculate w_fld(a), dwfld/da and the integration of 3(1+w{fld})/a for this model. I am worried if CLASS tries to integrate any of these quantities internally it will fail or arrive to a wrong result. P.S.2: Another problem in this set up is that the (effective) Dark energy density (\rhoDE) was negative in the far past. That means the integration of 3(1+w{fld})/a should be a complex number for a=1e-14. Lot of issues which should have been easily avoided if we move from this EoS approach.

deltasata commented 3 years ago

No answer? At least tell me if this is doable. Otherwise I will not waste time here.

ThomasTram commented 3 years ago

Hi

This is doable, but you will need to modify the code. If you can describe the model using a single scalar field φ in some potential V(φ) all you need is to pass the model parameters in scf_parameters and change the functions defining V(φ) and its derivatives inside background.c.

If your model is more complicated than that you will need to make a larger modification. Perhaps your model is already implemented in the HI_CLASS extension of CLASS, which would be an option in that case. Good luck!

Cheers, Thomas

deltasata commented 3 years ago

Thanks for the quick help. I am talking about normal branch of DGP braneworld (nDGP, also known as phantom braneworld) which is not implemented in hi_class. The model cannot be passed as a scalar field one.

If I only interested in the background quantities can I minimally modify the H(z) if that is implemented somewhere? I think for background calculations w_eff(z) and its derivative won't be required.

Another question: can you please tell me how class calculates z_drag?

ThomasTram commented 3 years ago

The baryon drag epoch is computed in the usual way as the time when the baryon optical depth tau_d = 1. There is no way of hacking the Hubble rate H(z) directly, and certainly no way which would give physical results! I think your best bet would be to follow your original plan and then modify background_w_fld() directly, but add some e.g. tanh(a/delta) functions to remove the discontinuities...

deltasata commented 3 years ago

Thanks again. I am trying to replace the pole by a known function as you suggested.

Regarding z_drag: Can I calculate z_drag(H_0, Omega_m0, Omega_b0) outside of CLASS? Clearly the Eisenstein and Hu 1998 formula should not be used.