def rates(self): forward_integral = numpy.vectorize(lambda p0: p0**2 / (2 * numpy.pi)**3 * self.integrate(p0, self.F_A)[0]) backward_integral = numpy.vectorize(lambda p0: p0**2 / (2 * numpy.pi)**3 * self.integrate(p0, self.F_B)[0]) grid = self.particle.grid forward_rate, _ = integrators.integrate_1D(forward_integral, (grid.MIN_MOMENTUM, grid.MAX_MOMENTUM)) backward_rate, _ = integrators.integrate_1D(backward_integral, (grid.MIN_MOMENTUM, grid.MAX_MOMENTUM)) return -forward_rate, backward_rate
def pressure(particle): """ \begin{equation} P = \int dp I_P \end{equation} """ pressure, _ = integrators.integrate_1D( lambda p: pressure_integrand(p, particle), (0, 20 * particle.T)) return pressure
def energy_density(particle): """ \begin{equation} \rho = \int dp I_\rho \end{equation} """ energy_density, _ = integrators.integrate_1D( lambda p: energy_density_integrand(p, particle), (0, 20 * particle.T)) return energy_density
def pressure(particle): """ \begin{equation} P = \int dp I_P \end{equation} """ pressure, _ = integrators.integrate_1D( lambda p: pressure_integrand(p, particle), (0, 20 * particle.T) ) return pressure
def energy_density(particle): """ \begin{equation} \rho = \int dp I_\rho \end{equation} """ energy_density, _ = integrators.integrate_1D( lambda p: energy_density_integrand(p, particle), (0, 20 * particle.T) ) return energy_density
def density(particle): """ ## Particle density \begin{equation} g \int \frac{p^2 dp}{2 \pi^2} f\left( \frac{p}{T} \right) \end{equation} """ density, _ = integrators.integrate_1D( lambda p: (particle.equilibrium_distribution_function( particle.energy(p) / particle.T) * p**2 * particle.dof / 2. / numpy .pi**2), (0, 20 * particle.T)) return density
def density(particle): """ ## Particle density \begin{equation} g \int \frac{p^2 dp}{2 \pi^2} f\left( \frac{p}{T} \right) \end{equation} """ density, _ = integrators.integrate_1D( lambda p: ( particle.equilibrium_distribution_function(particle.energy(p) / particle.T) * p**2 * particle.dof / 2. / numpy.pi**2 ), (0, 20 * particle.T) ) return density
def integrate(self, p0, fau=None, bounds=None): if p0 == 0: return self.rest_integral(fau) if bounds is None: bounds = (self.grids[0].MIN_MOMENTUM, self.grids[0].MAX_MOMENTUM) def prepared_integrand(p1): return self.integrand(p0, p1, fau) integral, error = integrators.integrate_1D(prepared_integrand, bounds=bounds) constant = self.particle.params.a / 16. / math.pi return constant * integral
def baryonic_rates(_a): global a a = _a grid = particles.neutrino.grid data = [] for integrand, bounds in [(_rate1, (grid.MIN_MOMENTUM, grid.MAX_MOMENTUM)), (_rate2, (grid.MIN_MOMENTUM, grid.MAX_MOMENTUM)), (_rate3, (grid.MIN_MOMENTUM, (q - m_e) * a)), (_rate4, (grid.MIN_MOMENTUM, (q - m_e) * a)), (_rate5, ((q + m_e) * a, grid.MAX_MOMENTUM)), (_rate6, ((q + m_e) * a, grid.MAX_MOMENTUM))]: if bounds[0] < bounds[1]: data.append(CONST.rate_normalization / particles.neutrino.params.a**5 * integrate_1D(integrand, bounds=bounds)[0]) else: data.append(0.) return data
def Int(particle, y_power=2): if environment.get('LAGUERRE_GAUSS_FOR_MASSIVE_EQUILIBRIUM_PARTICLES'): aT = particle.params.aT mat = particle.conformal_mass / aT laguerre = ( particle.dof / 2. / numpy.pi**2 * aT**(y_power + 1) * numpy.exp(-mat) * gauss_laguerre.integrate_1D(lambda eps: ( (eps + mat) * (eps * (eps + 2. * mat))**((y_power - 1.) / 2.) / (numpy.exp(-eps - mat) + particle.eta)**2))[0]) return laguerre else: legendre = particle.dof / 2. / numpy.pi**2 * integrators.integrate_1D( lambda y: (y**y_power * numpy.exp( particle.conformal_energy(y) / particle.params.aT) / (numpy.exp(particle.conformal_energy(y) / particle.params.aT) + particle.eta)**2), (particle.grid.MIN_MOMENTUM, particle.grid.MAX_MOMENTUM))[0] return legendre
def baryonic_rates(_a): global a a = _a grid = particles.neutrino.grid data = [] for integrand, bounds in [ (_rate1, (grid.MIN_MOMENTUM, grid.MAX_MOMENTUM)), (_rate2, (grid.MIN_MOMENTUM, grid.MAX_MOMENTUM)), (_rate3, (grid.MIN_MOMENTUM, (q - m_e)*a)), (_rate4, (grid.MIN_MOMENTUM, (q - m_e)*a)), (_rate5, ((q + m_e)*a, grid.MAX_MOMENTUM)), (_rate6, ((q + m_e)*a, grid.MAX_MOMENTUM))]: if bounds[0] < bounds[1]: data.append(CONST.rate_normalization / a**5 * integrate_1D(integrand, bounds=bounds)[0]) else: data.append(0.) return data
def Int(particle, y_power=2): if environment.get('LAGUERRE_GAUSS_FOR_MASSIVE_EQUILIBRIUM_PARTICLES'): aT = particle.params.aT mat = particle.conformal_mass / aT laguerre = ( particle.dof / 2. / numpy.pi**2 * aT**(y_power + 1) * numpy.exp(-mat) * gauss_laguerre.integrate_1D(lambda eps: ( (eps + mat) * (eps * (eps + 2. * mat))**((y_power - 1.) / 2.) / (numpy.exp(-eps - mat) + particle.eta)**2 ))[0] ) return laguerre else: legendre = particle.dof / 2. / numpy.pi**2 * integrators.integrate_1D( lambda y: ( y**y_power * numpy.exp(particle.conformal_energy(y) / particle.params.aT) / (numpy.exp(particle.conformal_energy(y) / particle.params.aT) + particle.eta)**2 ), (particle.grid.MIN_MOMENTUM, particle.grid.MAX_MOMENTUM) )[0] return legendre