.. _physics-powerSpectrumPrimordial: Primordial Power Spectrum ========================= Class providing the primordial power spectrum. The late-time power spectrum is typically computed from the specified primordial power spectrum and the :galacticus-class:`transferFunction` and normalized to a value of :math:`\sigma_8`. **Default implementation:** ``powerSpectrumPrimordialPowerLaw`` Methods ------- ``power`` → ``double precision`` Return the (unnormalized) power in the primordial power spectrum at the given ``wavenumber`` (specified in units of Mpc\ :math:`^{-1}`). * ``double precision, intent(in ) :: wavenumber`` ``logarithmicDerivative`` → ``double precision`` Return the logarithmic derivative with respect to wavenumber of the primordial power spectrum at the given ``wavenumber`` (specified in units of Mpc\ :math:`^{-1}`). * ``double precision, intent(in ) :: wavenumber`` .. _physics-powerSpectrumPrimordialCosmologicalCube: ``powerSpectrumPrimordialCosmologicalCube`` ------------------------------------------- A primordial power spectrum class which truncates a primordial power spectrum into a cosmological simulation cube. Specifically, it assumes that wave-vectors with all components (:math:`k_x,k_y,k_z`) smaller than :math:`\Delta k = 2 \pi f / L`, where :math:`L=`\ ``[lengthCube]`` is the simulation cube length, and :math:`f=`\ ``wavenumberMinimumFactor`` specifies the minimum wavenumber (in units of :math:`2 \pi / L`) to which the power spectrum is integrated, are missing from the power spectrum. For wavenumbers of magnitude :math:`k` the fraction of power missed due to these missing wavenumbers is computed. The total power at that wavenumber is then reduced by that amount. The fractional suppression in power, :math:`f(x)`, as a function of :math:`x=k/\Delta k` is given by: .. math:: f(x) = \left\{ \begin{array}{ll} 0 & \hbox{ for } x \le 1, \\ 3(1-x^{-1}) & \hbox{ for } 1 < x \le \sqrt{2}, \\ 3 x{-1} [ 1 + 2 \pi^{-1} x \sin^{-1}(\{x^2-1\}^{-1}) - 4 \pi^{-1} x \sin^{-1}(\{1-x^2\}^{-1/2}) ] & \hbox{ for } \sqrt{2} < x \le \sqrt{3}, \\ 1 & \hbox{ for } \sqrt{3} < x. \end{array} \right. For the :math:`1 < x \le \sqrt{2}` the solution is found by considering the 6 spherical caps of the sphere which protrude from the faces of the cube. The solution for :math:`\sqrt{2} < x \le \sqrt{3}` is more complicated and follows the solution given by :cite:t:`achille2013`. **Parameters** * ``[lengthCube]`` (real) — The length of the cosmological cube. * ``[wavenumberMinimumFactor]`` (real; default ``0.5d0``) — The minimum wavenumber (in units of :math:`2 \pi / L`) to which the power spectrum is integrated. .. _physics-powerSpectrumPrimordialPiecewisePowerLaw: ``powerSpectrumPrimordialPiecewisePowerLaw`` -------------------------------------------- Implements a piecewise power-law primordial power spectrum, possibly with a running index. The primordial power spectrum has the form: .. math:: P(k) \propto A_\mathrm{i} k^{n_\mathrm{eff,i}(k)}, where .. math:: n_\mathrm{eff,i}(k) = n_\mathrm{s,i} + {1\over 2}{\d n \over \d \ln k}_i \ln \left( {k \over k_\mathrm{ref,i}} \right) + {1\over 6}{\d^2 n \over \d \ln k^2}_i \left[ \ln \left( {k \over k_\mathrm{ref}} \right) \right]^2, where :math:`n_\mathrm{s,i}=`\ ``[index]`` is the power spectrum index at wavenumber :math:`k_\mathrm{ref,i}=`\ ``[wavenumberReference]``, :math:`\d n / \d \ln k_i=`\ ``[running]``, and :math:`\d^2 n / \d \ln k^2_i=`\ ``[runningRunning]`` describes the running of this index with wavenumber. The subscript "i", which runs from :math:`1` to :math:`N` refers to each interval of the piecewise power-law. Note that :math:`k_\mathrm{ref,i}` is defined only for :math:`i\ge 2`. For the first (:math:`i=1`) interval, the wavenumber ranges from :math:`0` to :math:`k_\mathrm{ref,2}`. The amplitudes, :math:`A_i`, are chosen to make the power spectrum continuous. **Methods** * ``indexEffective`` — Compute the local effective index of the power spectrum. * ``indices`` — Compute the indices corresponding to the given wavenumber. **Parameters** * ``[index]`` (real; default ``[0.9649d0,0.9649d0]``) — The index of the power-law primordial power spectrum. * ``[running]`` (real; default ``[0.0d0,0.0d0]``) — The running, :math:`\d n_\mathrm{s} / \d \ln k`, of the power spectrum index. * ``[runningRunning]`` (real; default ``[0.0d0,0.0d0]``) — The running-of-the-running, :math:`\d^2 n_\mathrm{s} / \d \ln k^2`, of the power spectrum index. * ``[wavenumberReference]`` (real; default ``[1.0d0]``) — When a running power spectrum index is used, this is the wavenumber, :math:`k_\mathrm{ref}`, at which the index is equal to ``[index]``. .. _physics-powerSpectrumPrimordialPowerLaw: ``powerSpectrumPrimordialPowerLaw`` ----------------------------------- Implements a power-law primordial power spectrum, possibly with a running index. The primordial power spectrum has the form: .. math:: P(k) \propto k^{n_\mathrm{eff}(k)}, where .. math:: n_\mathrm{eff}(k) = n_\mathrm{s} + {1\over 2}{\d n \over \d \ln k} \ln \left( {k \over k_\mathrm{ref}} \right) + {1\over 6}{\d^2 n \over \d \ln k^2} \left[ \ln \left( {k \over k_\mathrm{ref}} \right) \right]^2, where :math:`n_\mathrm{s}=`\ ``[index]`` is the power spectrum index at wavenumber :math:`k_\mathrm{ref}=`\ ``[wavenumberReference]``, :math:`\d n / \d \ln k=`\ ``[running]``, and :math:`\d^2 n / \d \ln k^2=`\ ``[runningRunning]`` describes the running of this index with wavenumber. **(Default implementation)** **Parameters** * ``[index]`` (real; default ``0.9649d0``) — The index of the power-law primordial power spectrum. * ``[running]`` (real; default ``0.0d0``) — The running, :math:`\d n_\mathrm{s} / \d \ln k`, of the power spectrum index. * ``[runningRunning]`` (real; default ``0.0d0``) — The running-of-the-running, :math:`\d^2 n_\mathrm{s} / \d \ln k^2`, of the power spectrum index. * ``[wavenumberReference]`` (real; default ``1.0d0``) — When a running power spectrum index is used, this is the wavenumber, :math:`k_\mathrm{ref}`, at which the index is equal to ``[index]``. * ``[runningSmallScalesOnly]`` (boolean; default ``.false.``) — If ``true`` then the index runs only for :math:`k > k_\mathrm{ref}`, for smaller :math:`k` the index is constant.