2

Consider the following integro-differential equations (the unintegrated Boltzmann equations for ultrarelativistic particles in the expanding Universe):

$$ \left(\frac{\partial}{\partial t} - H p \frac{\partial}{\partial p}\right) f(i,p,t) = C_i \left[f(i,P,t), p\right] \\ C_i = \int \mathrm{d}p_2 \mathrm{d}p_3 \, F(f(i,P,t),f(j,P,t)) M(p,p_2,p_3) \\ H(t) \sim \sqrt{\int \sum_i f(i,p,t)p^3 \, \mathrm{d}p} $$

These are the Boltzmann equations for some massless species i in an expanding Universe. There, f[i,p,t] is the distribution function of the species i; F[f[i,P,t],f[j,P,t]] is a polynomial in f[i], f[j] (with different momenta labels P), M is some polynomial in the momenta p,p2,p3, t is time.

How can I solve this system in Mathematica for a reasonable amount of time? Probably, it is some kind of discretization in p, but since I am a newbie, it would go extremely slow.

Explicit expressions for the system (using NIntegrate)

I have three species "ve", "vm", "vt".

Preliminary definitions for F (Fval[pt,pt1,pt,pt1,p1,p2,p3,p4,t]):

Do[Fval[pt, pt, pt, pt, p1_, p2_, p3_, p4_, 
   t_] = (1 - f[pt, p1, t])*(1 - f[pt, p2, t])*f[pt, p3, t]*
    f[pt, p4, t] - 
   f[pt, p1, t]*
    f[pt, p2, t]*(1 - f[pt, p3, t])*(1 - f[pt, p4, t]), {pt, {"ve", "vm", "vt"}}]
GF = 1.167*10^-5.;
Gval = 6.7*10^-39;
ffd[p_, T_] = 1/(Exp[p/T] + 1);
tT[T_] = 
 5.68*10^-25 (t /. 
    Refine[Solve[1/(2 t) == Sqrt[(8 Pi*Gval)/3 Pi^2/30 3*T^4], t], 
      T > 0][[1]])

The maximal momentum pmax to be considered, collision integrals Icoll[species1,species2,species3,species4,p,t] and the Hubble factor hubble[t]:

pmax = 1;
J1[p1_, p2_, p3_] = 
  16/15 p3^3 (10 (p1 + p2)^2 - 15 (p1 + p2)*p3 + 6*p3^2);
J2[p1_, p2_] = 16/15 p2^3*(10*p1^2 + 5*p1*p2 + p2^2);
J3[p1_, p2_, p3_] = 
  16/15 ((p1 + p2)^5 - 10 (p1 + p2)^2*p3^3 + 15*(p1 + p2)*p3^4 - 
     6*p3^5);
Table[With[{pt = pt, pt1 = pt1},
   Icoll[pt, pt1, pt, pt1, p1_, t_] := 
    GF^2/((2 Pi)^3 p1^2) (NIntegrate[
        Fval[pt, pt1, pt, pt1, p1, p2, p3, p1 + p2 - p3, t]*
         J1[p1, p2, p3], {p3, 0, p2}, {p2, 0, p1}] + 
       NIntegrate[
        Fval[pt, pt1, pt, pt1, p1, p2, p3, p1 + p2 - p3, t]*
         J2[p1, p2], {p3, p2, p1}, {p2, 0, p1}] + 
       NIntegrate[
        Fval[pt, pt1, pt, pt1, p1, p2, p3, p1 + p2 - p3, t]*
         J3[p1, p2, p3], {p3, p1, p1 + p2}, {p2, 0, p1}] + 
       NIntegrate[
        Fval[pt, pt1, pt, pt1, p1, p2, p3, p1 + p2 - p3, t]*
         J1[p1, p2, p3], {p2, p1, pmax},{p3, 0, p1}] + 
       NIntegrate[
        Fval[pt, pt1, pt, pt1, p1, p2, p3, p1 + p2 - p3, t]*
         J2[p2, p1], {p2, p1,pmax},{p3, p1, p2}] + 
       NIntegrate[
        Fval[pt, pt1, pt, pt1, p1, p2, p3, p1 + p2 - p3, t]*
         J3[p1, p2, p3], {p2, p1,pmax},{p3, p2, p1 + p2}])
   ], {pt1, {"ve", "vm", "vt"}}, {pt, {"ve", "vm", "vt"}}];
hubble[t_] := 
 Sqrt[(8*Pi*Gval)/3] Sqrt[
  NIntegrate[(f["ve", p, t] + f["vm", p, t] + f["vt", p, t]) p^3/(
    2 Pi^2), {p, 0, pmax}]]

Initial conditions and the final time for the system:

T0 = 3*10^-3;
t0 = tT[T0];
f0["vm", p_] = f0["vt", p_] = ffd[p, T0];
f0["ve", p_] = ffd[p, T0] + Exp[-(p - 0.05)^2/T0^2];
tmax = 10^3;
John Taylor
  • 5,701
  • 2
  • 12
  • 33
  • 1
    Why do you think you're a newbie? From your profile it follows that you have been on this site for 7 years and 3 months. – Alex Trounev Sep 25 '23 at 12:21
  • @AlexTrounev : I have some experience in performing arithmetic operations involving Compile, some geometric region evaluations, etc. However, I have almost zero experience in PDE solving, and in particular in solving integro-differential equations. – John Taylor Sep 25 '23 at 12:25
  • Is abbreviature {"ve", "vm", "vt"} connects to neutrino type? – Alex Trounev Sep 26 '23 at 14:18
  • Last integral has a typo (comma in the last position) NIntegrate[ Fval[pt, pt1, pt, pt1, p1, p2, p3, p1 + p2 - p3, t]* J3[p1, p2, p3], {p2, p1,pmax},{p3, p2, p1 + p2},]. – Alex Trounev Sep 26 '23 at 14:23
  • @AlexTrounev : thanks! I have corrected it. – John Taylor Sep 26 '23 at 15:53
  • @AlexTrounev : yes, for neutrino particles (and antiparticles if there is zero asymmetry). Overall, the equations in the question correspond to a piece of the collision integral for neutrino distribution functions in the early Universe. In a more real system (which I hope to handle by myself), there are also electrons-positrons and new physics particles injecting distortions in the neutrino distributions while decaying. – John Taylor Sep 26 '23 at 17:23
  • Is your model connects with this one https://arxiv.org/pdf/2210.10307.pdf ? – Alex Trounev Sep 29 '23 at 07:37
  • @AlexTrounev : I used the collision integrands from Appendices B-C of https://arxiv.org/pdf/1512.02205.pdf . But overall, these two papers should give the same results, up to neutrino oscillations (which I will need to include in the future). – John Taylor Sep 29 '23 at 07:57
  • @JohnTaylor, you seem to have a tendency to do sporadic minor, irrelevant changes to the question to bring it to the top of the active list. This is not encouraged here. If you want to promote your question, please make a bounty instead :) – Domen Nov 05 '23 at 15:13
  • @Domen : I have already tried, but it ended without success. So this was a kind of random promotion. But the point is clear. – John Taylor Nov 05 '23 at 16:19
  • 1
    Maybe consider introducing a more natural/adapted system of units. When you have quantities like 6.7*10^-39 and 5.68*10^-25 in your equations, things may go wrong in unexpected ways depending on how exactly the PDE solver treats "small" numbers. – Roman Nov 05 '23 at 17:14
  • @AlexTrounev : excuse me for bothering you, but may I please ask you what may be a generic strategy for solving this type of equations? – John Taylor Nov 13 '23 at 15:29
  • @JohnTaylor Usually in plasma the collision integral is approximated in the hydrodynamic approximation. See for example this post https://mathematica.stackexchange.com/questions/279837/how-do-i-pose-neumann-boundary-condition-to-suppress-particles-flux-into-zero-po – Alex Trounev Nov 14 '23 at 03:18
  • @AlexTrounev : from what I saw in the literature, for this specific task, the integral gets represented on the momentum grid (although some approximations may be made in some cases by fitting it with a simple function). Do you know if there is some package in Mathematica that automatically does this? – John Taylor Nov 15 '23 at 15:07
  • @JohnTaylor Have you had a chance to check how the collision integral is calculated using your code? – Alex Trounev Nov 16 '23 at 08:16
  • @AlexTrounev : so far, the only realistic way I see for this task is to discretize the momentum grid. I may perform the discretization manually and evaluate the integrals from my question in terms of the sum over the fixed momentum modes, but I am wondering whether there is some built-in discretization scheme for the integro-differential equations. – John Taylor Nov 16 '23 at 12:48

0 Answers0