Пример #1
0
def non_equilibium_setup():
    args, _ = setup()
    params = args[0]

    photon = Particle(**SMP.photon)
    neutrino_e = Particle(**SMP.leptons.neutrino_e)
    neutrino_mu = Particle(**SMP.leptons.neutrino_mu)
    neutrino_self_scattering = SMI.neutrino_scattering(neutrino_e, neutrino_e)

    universe = Universe(params=params)
    universe.add_particles([photon, neutrino_e, neutrino_mu])
    universe.interactions += [neutrino_self_scattering]

    return [params, universe], {}
Пример #2
0
def non_equilibium_setup():
    args, _ = setup()
    params = args[0]

    photon = Particle(**SMP.photon)
    neutrino_e = Particle(**SMP.leptons.neutrino_e)
    neutrino_mu = Particle(**SMP.leptons.neutrino_mu)
    neutrino_self_scattering = SMI.neutrino_scattering(neutrino_e, neutrino_e)

    universe = Universe(params=params, plotting=False)
    universe.add_particles([photon, neutrino_e, neutrino_mu])
    universe.interactions += [neutrino_self_scattering]

    return [params, universe], {}
Пример #3
0
def four_particle_decay_test(params):
    os.environ['SPLIT_COLLISION_INTEGRAL'] = ''

    photon = Particle(**SMP.photon)
    neutrino_e = Particle(**SMP.leptons.neutrino_e)
    sterile = Particle(**NuP.dirac_sterile_neutrino(mass=200 * UNITS.MeV))

    theta = 1e-4
    thetas = defaultdict(float, {
        'electron': theta,
    })

    interaction = NuI.sterile_leptons_interactions(
        thetas=thetas, sterile=sterile,
        neutrinos=[neutrino_e],
        leptons=[],
        kind = CollisionIntegralKind.F_f_vacuum_decay
    )

    for inter in interaction:
        inter.integrals = [integral for integral in inter.integrals
                            if sum(reactant.side for reactant in integral.reaction) in [2]]

    universe = Universe(params=params)
    universe.add_particles([photon, neutrino_e, sterile])
    universe.interactions += interaction

    params.update(universe.total_energy_density(), universe.total_entropy())

    universe.update_particles()
    universe.init_interactions()

    collision_integral = sterile.collision_integrals[0].integrate(sterile.grid.TEMPLATE)

    theo_value = (CONST.G_F * theta)**2 * sterile.mass**5 / (192 * numpy.pi**3) / UNITS.MeV

    decay_rate = -(collision_integral * sterile.params.H \
                * sterile.conformal_energy(sterile.grid.TEMPLATE) / sterile.conformal_mass \
                / sterile._distribution) / UNITS.MeV

    ratio = decay_rate / theo_value

    assert any(numpy.abs(val) - 1 < 1e-2 for val in ratio), "Four-particle decay test failed"
Пример #4
0
def three_particle_decay_test(params):
    os.environ['SPLIT_COLLISION_INTEGRAL'] = ''

    photon = Particle(**SMP.photon)
    neutrino_e = Particle(**SMP.leptons.neutrino_e)
    sterile = Particle(**NuP.dirac_sterile_neutrino(mass=200 * UNITS.MeV))
    neutral_pion = Particle(**SMP.hadrons.neutral_pion)

    theta = 1e-2
    thetas = defaultdict(float, {
        'electron': theta,
    })

    interaction = NuI.sterile_hadrons_interactions(
        thetas = thetas, sterile=sterile,
        neutrinos = [neutrino_e],
        leptons = [],
        mesons = [neutral_pion],
        kind = CollisionIntegralKind.F_f_vacuum_decay
    )

    universe = Universe(params=params)
    universe.add_particles([photon, neutrino_e, sterile, neutral_pion])
    universe.interactions += interaction

    params.update(universe.total_energy_density(), universe.total_entropy())

    universe.update_particles()
    universe.init_interactions()

    collision_integral = sterile.collision_integrals[0].integrate(sterile.grid.TEMPLATE)

    theo_value = (CONST.G_F * theta * neutral_pion.decay_constant)**2 \
                * sterile.mass**3 * (1 - (neutral_pion.mass / sterile.mass)**2)**2 \
                / (16 * numpy.pi) / UNITS.MeV

    decay_rate = -(collision_integral * sterile.params.H \
                * sterile.conformal_energy(sterile.grid.TEMPLATE) / sterile.conformal_mass \
                / sterile._distribution) / UNITS.MeV

    ratio = decay_rate / theo_value

    assert any(numpy.abs(val) - 1 < 1e-2 for val in ratio), "Three-particle decay test failed"
Пример #5
0
def three_particle_integral_light_test(params):
    """ If M_N < M_pi, there should be integrals for the reactions:

        N + anti-nu_e <--> pion
        nu_e + anti-N <--> pion
        pi^0 <--> anti-nu_e + N
        pi^0 <--> nu_e + anti-N
    """

    photon = Particle(**SMP.photon)
    neutrino_e = Particle(**SMP.leptons.neutrino_e)
    sterile = Particle(**NuP.dirac_sterile_neutrino(mass=100 * UNITS.MeV))
    neutral_pion = Particle(**SMP.hadrons.neutral_pion)

    theta = 1e-3
    thetas = defaultdict(float, {
        'electron': theta,
    })

    interaction = NuI.sterile_hadrons_interactions(
        thetas=thetas, sterile=sterile,
        neutrinos=[neutrino_e],
        leptons=[],
        mesons=[neutral_pion]
    )

    universe = Universe(params=params)
    universe.add_particles([photon, neutrino_e, sterile, neutral_pion])
    universe.interactions += interaction

    assert len(universe.interactions) == 2
    assert len(universe.interactions[0].integrals) == 2
    assert len(universe.interactions[1].integrals) == 2

    integral = universe.interactions[0].integrals[0]
    assert len(integral.Ms) == 1
    assert isinstance(integral.Ms[0].K, (int, float))
Пример #6
0
def three_particle_integral_test(params):

    photon = Particle(**SMP.photon)
    neutrino_e = Particle(**SMP.leptons.neutrino_e)
    sterile = Particle(**NuP.dirac_sterile_neutrino(mass=200 * UNITS.MeV))
    neutral_pion = Particle(**SMP.hadrons.neutral_pion)

    pion_interactions = NuI.sterile_pion_neutral(theta=1e-3, sterile=sterile,
                                                 active=neutrino_e, pion=neutral_pion)

    universe = Universe(params=params, plotting=False)
    universe.add_particles([photon, neutrino_e, sterile, neutral_pion])
    universe.interactions += pion_interactions

    params.update(universe.total_energy_density())

    print universe.interactions
    assert len(universe.interactions) == 2
    print universe.interactions[0].integrals
    print universe.interactions[1].integrals
    assert len(universe.interactions[0].integrals) == 2
    assert len(universe.interactions[1].integrals) == 3
    integral = universe.interactions[0].integrals[0]
    assert len(integral.Ms) == 1
Пример #7
0
parser.add_argument('--theta', default=0.001)
parser.add_argument('--comment', default='')
args = parser.parse_args()

mass = float(args.mass) * UNITS.MeV
theta = float(args.theta)

folder = utils.ensure_dir(
    os.path.split(__file__)[0], 'output',
    "mass={:e}_theta={:e}".format(mass / UNITS.MeV, theta) + args.comment)

T_initial = 50. * UNITS.MeV
T_final = 0.0008 * UNITS.MeV
params = Params(T=T_initial, dy=0.0003125)

universe = Universe(params=params, folder=folder)

linear_grid_s = LinearSpacedGrid(MOMENTUM_SAMPLES=51,
                                 MAX_MOMENTUM=20 * UNITS.MeV)
linear_grid = LinearSpacedGrid(MOMENTUM_SAMPLES=51,
                               MAX_MOMENTUM=50 * UNITS.MeV)
photon = Particle(**SMP.photon)

#electron = Particle(**SMP.leptons.electron)
#muon = Particle(**SMP.leptons.muon)
#tau = Particle(**SMP.leptons.tau)

neutrino_e = Particle(**SMP.leptons.neutrino_e, **{'grid': linear_grid})
#neutrino_mu = Particle(**SMP.leptons.neutrino_mu)
#neutrino_tau = Particle(**SMP.leptons.neutrino_tau)
Пример #8
0
import os
from particles import Particle
from library.SM import particles as SMP, interactions as SMI
from evolution import Universe
from common import UNITS, Params


folder = os.path.join(os.path.split(__file__)[0], 'output')

T_interaction_freezeout = 0.005 * UNITS.MeV
T_final = 0.0008 * UNITS.MeV
params = Params(T=10 * UNITS.MeV,
                dy=0.003125)

universe = Universe(params=params, folder=folder)

photon = Particle(**SMP.photon)
electron = Particle(**SMP.leptons.electron)

# Set linearly spaced grid for neutrinos (such that 3, 5 and 7 MeV are in the grid)
from common import LinearSpacedGrid
linear_grid = LinearSpacedGrid(MOMENTUM_SAMPLES=51, MAX_MOMENTUM=20*UNITS.MeV)

neutrino_e = Particle(**SMP.leptons.neutrino_e, **{'grid': linear_grid})
neutrino_mu = Particle(**SMP.leptons.neutrino_mu, **{'grid':linear_grid})
neutrino_tau = Particle(**SMP.leptons.neutrino_tau, **{'grid':linear_grid})
neutrino_e.decoupling_temperature = 8 * UNITS.MeV
neutrino_mu.decoupling_temperature = 8 * UNITS.MeV
neutrino_tau.decoupling_temperature = 8 * UNITS.MeV
Пример #9
0
from particles import Particle
from library.SM import particles as SMP, interactions as SMI
from library.NuMSM import particles as NuP, interactions as NuI
from evolution import Universe
from common import UNITS, Params


folder = os.path.join(os.path.split(__file__)[0], 'output')

T_initial = 200 * UNITS.MeV
T_final = 50 * UNITS.MeV
params = Params(T=T_initial,
                dy=0.025)

universe = Universe(params=params, logfile=os.path.join(folder, 'log.txt'))

photon = Particle(**SMP.photon)

electron = Particle(**SMP.leptons.electron)

neutrino_e = Particle(**SMP.leptons.neutrino_e)

neutral_pion = Particle(**SMP.hadrons.neutral_pion)

sterile = Particle(**NuP.sterile_neutrino(300 * UNITS.MeV))
sterile.decoupling_temperature = T_initial

universe.add_particles([
    photon,
Пример #10
0
from collections import defaultdict

from particles import Particle
from library.SM import particles as SMP  # , interactions as SMI
from library.NuMSM import particles as NuP, interactions as NuI
from evolution import Universe
from common import UNITS, Params

folder = os.path.join(os.path.split(__file__)[0], 'output')

T_initial = 1.5 * UNITS.GeV
T_final = 100 * UNITS.MeV
params = Params(T=T_initial, dy=0.025)

universe = Universe(params=params, logfile=os.path.join(folder, 'log.txt'))

photon = Particle(**SMP.photon)

electron = Particle(**SMP.leptons.electron)
muon = Particle(**SMP.leptons.muon)
tau = Particle(**SMP.leptons.tau)

neutrino_e = Particle(**SMP.leptons.neutrino_e)
neutrino_mu = Particle(**SMP.leptons.neutrino_mu)
neutrino_tau = Particle(**SMP.leptons.neutrino_tau)

up = Particle(**SMP.quarks.up)
down = Particle(**SMP.quarks.down)
# charm = Particle(**SMP.quarks.charm)
strange = Particle(**SMP.quarks.strange)
Пример #11
0
import sys
from collections import Counter

from particles import Particle
from library.SM import particles as SMP, interactions as SMI
from evolution import Universe
from common import UNITS, Params
from common import LinearSpacedGrid


folder = os.path.join(os.path.split(__file__)[0], 'output')

T_final = 0.1 * UNITS.MeV
params = Params(T=10 * UNITS.MeV, dy=0.003125)

universe = Universe(params=params, folder=folder)

linear_grid = LinearSpacedGrid(MOMENTUM_SAMPLES=201, MAX_MOMENTUM=20 * UNITS.MeV)

photon = Particle(**SMP.photon)
electron = Particle(**SMP.leptons.electron)
neutrino_e = Particle(**SMP.leptons.neutrino_e, grid=linear_grid)
neutrino_mu = Particle(**SMP.leptons.neutrino_mu, grid=linear_grid)
neutrino_tau = Particle(**SMP.leptons.neutrino_tau, grid=linear_grid)

neutrino_e.decoupling_temperature = 10 * UNITS.MeV
neutrino_mu.decoupling_temperature = 10 * UNITS.MeV
neutrino_tau.decoupling_temperature = 10 * UNITS.MeV

universe.add_particles([photon, electron, neutrino_e, neutrino_mu, neutrino_tau])
Пример #12
0
lifetime = float(args.tau) * UNITS.s
# theta = 0.5 * numpy.arcsin(numpy.sqrt(4*5.7*10**(-4)/float(args.tau)))
theta = 0.031
T_dec = 50 * UNITS.MeV
print('theta=', theta, ' Tdec=', T_dec / UNITS.MeV)


folder = os.path.join(os.path.split(__file__)[0], "output", args.tau)

T_initial = T_dec
T_washout = 0.1 * UNITS.MeV
T_final = 0.0008 * UNITS.MeV
params = Params(T=T_initial,
                dy=0.003125 * 4)

universe = Universe(params=params, folder=folder)

photon = Particle(**SMP.photon)
electron = Particle(**SMP.leptons.electron)
muon = Particle(**SMP.leptons.muon)

from common import LogSpacedGrid
active_grid = LogSpacedGrid(MOMENTUM_SAMPLES=201, MAX_MOMENTUM=1.5 * mass / (T_washout / UNITS.MeV))
sterile_grid = LogSpacedGrid(MOMENTUM_SAMPLES=51, MAX_MOMENTUM=mass)

neutrino_e = Particle(**SMP.leptons.neutrino_e, grid=active_grid)
neutrino_mu = Particle(**SMP.leptons.neutrino_mu, grid=active_grid)
neutrino_tau = Particle(**SMP.leptons.neutrino_tau, grid=active_grid)
sterile = Particle(**NuP.dirac_sterile_neutrino(mass), grid=sterile_grid)

sterile.decoupling_temperature = T_initial
Пример #13
0
parser = argparse.ArgumentParser(
    description='Run simulation for given mass and mixing angle')
parser.add_argument('--mass', default='20')
parser.add_argument('--comment', default='')
args = parser.parse_args()

mass = float(args.mass) * UNITS.MeV

folder = os.path.join(
    os.path.split(__file__)[0], 'output', 'mass={}'.format(args.mass))

T_initial = 20. * UNITS.MeV
T_final = 0.015 * UNITS.MeV
params = Params(T=T_initial, dy=0.1)

universe = Universe(params=params, folder=folder)

photon = Particle(**SMP.photon)
electron = Particle(**SMP.leptons.electron)
neutrino_e = Particle(**SMP.leptons.neutrino_e)
neutrino_mu = Particle(**SMP.leptons.neutrino_mu)
neutrino_tau = Particle(**MNP.leptons.neutrino_tau)
neutrino_tau.mass = mass

neutrino_e.decoupling_temperature = T_initial
neutrino_mu.decoupling_temperature = T_initial
neutrino_tau.decoupling_temperature = T_initial

universe.add_particles([
    photon,
    electron,
Пример #14
0
from particles import Particle
from evolution import Universe
from common import CONST, UNITS, Params

params = Params(T=2 * UNITS.MeV, dy=0.025)

photon = Particle(**SMP.photon)
neutrino = Particle(**SMP.leptons.neutrino_e)

neutrino_scattering = CrossGeneratingInteraction(
    particles=((neutrino, neutrino), (neutrino, neutrino)),
    antiparticles=((False, True), (False, True)),
    Ms=(FourParticleM(K1=64 * CONST.G_F**2, order=(0, 1, 2, 3)), ),
    integral_type=FourParticleIntegral)

universe = Universe(params=params)
universe.PARALLELIZE = False
universe.add_particles([photon, neutrino])
universe.interactions += [neutrino_scattering]

import numpy
addition = numpy.vectorize(lambda x: 0.1 * numpy.exp(-(x / UNITS.MeV - 3)**2),
                           otypes=[numpy.float_])
neutrino._distribution += addition(neutrino.grid.TEMPLATE)

# def check(p=[]):
#     return neutrino_scattering.F_B(in_p=p[:2], out_p=p[2:]) * (1 - neutrino.distribution(p[0])) \
#         - neutrino_scattering.F_A(in_p=p[:2], out_p=p[2:]) * neutrino.distribution(p[0])

# # print [neutrino.distribution(p) - neutrino._distribution_interpolation(p)
# #        for p in numpy.linspace(neutrino.grid.MIN_MOMENTUM, neutrino.grid.MAX_MOMENTUM,
Пример #15
0
def three_particle_free_non_equilibrium_test(params):
    eps = 1e-14

    photon = Particle(**SMP.photon)
    neutrino_e = Particle(**SMP.leptons.neutrino_e)
    neutrino_mu = Particle(**SMP.leptons.neutrino_mu)
    sterile = Particle(**NuP.dirac_sterile_neutrino(mass=140 * UNITS.MeV))
    neutral_pion = Particle(**SMP.hadrons.neutral_pion)

    theta = 1e-3
    thetas = defaultdict(float, {
        'electron': theta,
    })

    interaction = NuI.sterile_hadrons_interactions(
        thetas = thetas, sterile=sterile,
        neutrinos = [neutrino_e],
        leptons = [],
        mesons = [neutral_pion]
    )

    universe = Universe(params=params)
    universe.add_particles([photon, neutrino_e, neutrino_mu, sterile, neutral_pion])
    universe.interactions += interaction

    params.update(universe.total_energy_density(), universe.total_entropy())

    universe.update_particles()
    universe.init_interactions()

    photon_distribution = photon._distribution
    neutrino_e_distribution = neutrino_e._distribution
    neutrino_mu_distribution = neutrino_mu._distribution
    sterile_distribution = sterile._distribution
    neutral_pion_distribution = neutral_pion._distribution

    universe.calculate_collisions()

    assert all(photon.collision_integral == 0), "Equilibrium particle integral is non-zero"
    assert all(numpy.abs(neutrino_e.collision_integral * params.h) < eps), "Integrals do not cancel"
    assert all(numpy.abs(sterile.collision_integral * params.h) < eps), "Integrals do not cancel"
    assert all(numpy.abs(neutral_pion.collision_integral * params.h) < eps), "Integrals do not cancel"
    assert all(neutrino_mu.collision_integral == 0), "Free particle integral is non-zero"

    universe.update_distributions()

    assert all(photon._distribution == photon_distribution),\
        "Equilibrium particle distribution changed"
    assert all(neutrino_e._distribution - neutrino_e_distribution < eps),\
        "Interacting particle distribution changed"
    assert all(sterile._distribution - sterile_distribution < eps),\
        "Interacting particle distribution changed"
    assert all(neutral_pion._distribution - neutral_pion_distribution < eps),\
        "Interacting particle distribution changed"
    assert all(neutrino_mu._distribution == neutrino_mu_distribution),\
        "Free particle distribution changed"
Пример #16
0
from particles import Particle
from library.SM import particles as SMP, interactions as SMI
from evolution import Universe
from common import UNITS, Params


folder = os.path.join(os.path.split(__file__)[0], 'output')

T_kawano = 10 * UNITS.MeV
T_simple = 0.05 * UNITS.MeV
T_final = 0.0008 * UNITS.MeV
params = Params(T=T_kawano,
                dy=0.0125)

universe = Universe(params=params, folder=folder)

photon = Particle(**SMP.photon)
electron = Particle(**SMP.leptons.electron)
neutrino_e = Particle(**SMP.leptons.neutrino_e)
neutrino_mu_tau = Particle(**SMP.leptons.neutrino_mu)
neutrino_mu_tau.dof = 4

neutron = Particle(**SMP.hadrons.neutron)
proton = Particle(**SMP.hadrons.proton)

universe.add_particles([
    photon,
    electron,
    neutrino_e,
    neutrino_mu_tau,
Пример #17
0
import os
import numpy

from particles import Particle
from evolution import Universe
from library.SM import particles as SMP
from common import Params, UNITS


folder = os.path.join(os.path.split(__file__)[0], 'output')

T_final = 100 * UNITS.keV
params = Params(T=100 * UNITS.MeV,
                dy=0.05)

universe = Universe(params=params, folder=folder)

photon = Particle(**SMP.photon)

universe.add_particles([photon])
universe.evolve(T_final)

initial_aT = universe.data['aT'][0]
print("a * T is conserved: {}".format(all([initial_aT == value for value in universe.data['aT']])))
initial_a = universe.data['a'][int(len(universe.data)/2)]
initial_t = universe.data['t'][int(len(universe.data)/2)] / UNITS.s
last_a = universe.data['a'][-1]
last_t = universe.data['t'][-1] / UNITS.s

print("a scaling discrepancy is: {:.2f}%"
      .format(100 * (last_a / initial_a / numpy.sqrt(last_t / initial_t) - 1)))
Пример #18
0
import os

from particles import Particle
from library.SM import particles as SMP, interactions as SMI
from evolution import Universe
from common import UNITS, Params

folder = os.path.join(os.path.split(__file__)[0], 'output')

T_kawano = 10 * UNITS.MeV
T_simple = 0.05 * UNITS.MeV
T_final = 0.0008 * UNITS.MeV
params = Params(T=T_kawano, dy=0.0125)

universe = Universe(params=params, folder=folder)

photon = Particle(**SMP.photon)
electron = Particle(**SMP.leptons.electron)
neutrino_e = Particle(**SMP.leptons.neutrino_e)
neutrino_mu_tau = Particle(**SMP.leptons.neutrino_mu)
neutrino_mu_tau.dof = 4

neutron = Particle(**SMP.hadrons.neutron)
proton = Particle(**SMP.hadrons.proton)

universe.add_particles(
    [photon, electron, neutrino_e, neutrino_mu_tau, neutron, proton])

# angles=(0.5905, 0.805404, 0.152346)
universe.init_oscillations(
Пример #19
0
"""

import os
from particles import Particle
from library.SM import particles as SMP, interactions as SMI
from evolution import Universe
from common import UNITS, Params

folder = os.path.join(os.path.split(__file__)[0], 'output')

T_interaction_freezeout = 0.1 * UNITS.MeV
T_final = 0.0008 * UNITS.MeV
params = Params(T=5. * UNITS.MeV, dy=0.003125)

universe = Universe(params=params, folder=folder)

photon = Particle(**SMP.photon)
electron = Particle(**SMP.leptons.electron)

# Set linearly spaced grid for neutrinos (such that 3, 5 and 7 MeV are in the grid)
from common import LinearSpacedGrid

linear_grid = LinearSpacedGrid(MOMENTUM_SAMPLES=51,
                               MAX_MOMENTUM=50 * UNITS.MeV)
neutrino_e = Particle(**SMP.leptons.neutrino_e, grid=linear_grid)
neutrino_mu = Particle(**SMP.leptons.neutrino_mu, grid=linear_grid)
neutrino_mu.dof = 4

neutrino_e.decoupling_temperature = 5. * UNITS.MeV
neutrino_mu.decoupling_temperature = 5. * UNITS.MeV
Пример #20
0
params = Params(T=2 * UNITS.MeV,
                dy=0.025)

photon = Particle(**SMP.photon)
neutrino = Particle(**SMP.leptons.neutrino_e)

neutrino_scattering = CrossGeneratingInteraction(
    particles=((neutrino, neutrino), (neutrino, neutrino)),
    antiparticles=((False, True), (False, True)),
    decoupling_temperature=0 * UNITS.MeV,
    Ms=(FourParticleM(K1=64 * CONST.G_F**2, order=(0, 1, 2, 3)),),
    integral_type=FourParticleIntegral
)

universe = Universe(params=params)
universe.PARALLELIZE = False
universe.add_particles([photon, neutrino])
universe.interactions += [neutrino_scattering]


import numpy
addition = numpy.vectorize(lambda x: 0.1 * numpy.exp(-(x/UNITS.MeV-3)**2),
                           otypes=[numpy.float_])
neutrino._distribution += addition(neutrino.grid.TEMPLATE)

# def check(p=[]):
#     return neutrino_scattering.F_B(in_p=p[:2], out_p=p[2:]) * (1 - neutrino.distribution(p[0])) \
#         - neutrino_scattering.F_A(in_p=p[:2], out_p=p[2:]) * neutrino.distribution(p[0])

Пример #21
0
args = parser.parse_args()

mass = float(args.mass) * UNITS.MeV
theta = float(args.theta)
lifetime = float(args.tau) * UNITS.s

folder = utils.ensure_dir(
    os.path.split(__file__)[0], 'output',
    "mass={:e}_tau={:e}_theta={:e}".format(
        mass / UNITS.MeV, lifetime / UNITS.s, theta) + args.comment)

T_initial = 400. * UNITS.MeV
T_final = 0.0008 * UNITS.MeV
params = Params(T=T_initial, dy=0.025)

universe = Universe(params=params, folder=folder)

photon = Particle(**SMP.photon)

electron = Particle(**SMP.leptons.electron)
muon = Particle(**SMP.leptons.muon)
tau = Particle(**SMP.leptons.tau)

neutrino_e = Particle(**SMP.leptons.neutrino_e)
neutrino_mu = Particle(**SMP.leptons.neutrino_mu)
neutrino_tau = Particle(**SMP.leptons.neutrino_tau)

neutral_pion = Particle(**SMP.hadrons.neutral_pion)
charged_pion = Particle(**SMP.hadrons.charged_pion)

sterile = Particle(**NuP.dirac_sterile_neutrino(mass))
Пример #22
0
T_final = 0.008 * UNITS.MeV


Particles = []
photon = Particle(**SMP.photon)
neutrino_e = Particle(**SMP.leptons.neutrino_e)
neutrino_mu = Particle(**SMP.leptons.neutrino_mu)
neutrino_tau = Particle(**SMP.leptons.neutrino_tau)
electron = Particle(**SMP.leptons.electron)

Particles += [
    photon,
    neutrino_e,
    neutrino_mu,
    neutrino_tau,
    electron,
]

universe = Universe(params=params, folder=folder)
universe.add_particles(Particles)
universe.init_kawano(electron=electron, neutrino=neutrino_e)

universe.evolve(T_final)


print ("""
    Cosmic photon background temperature is {:e} times bigger than cosmic neutrinos temperature.
    Relative error is {:e} %
    """.format(universe.params.aT / UNITS.MeV,
               (universe.params.aT / UNITS.MeV - 1.40102) / 1.40102 * 100))
Пример #23
0
from common import UNITS, Params, utils, LinearSpacedGrid, LogSpacedGrid
from scipy.integrate import simps
import numpy as np

mass = 150 * UNITS.MeV
theta = 1e-3

folder = utils.ensure_dir(
    os.path.split(__file__)[0], "output",
    "mass={:e}_theta={:e}_3p".format(mass / UNITS.MeV, theta))

T_initial = 5. * UNITS.MeV
T_final = 0.8 * UNITS.MeV
params = Params(T=T_initial, dy=0.003125)

universe = Universe(params=params, folder=folder)

from common import LinearSpacedGrid
linear_grid = LinearSpacedGrid(MOMENTUM_SAMPLES=1001,
                               MAX_MOMENTUM=500 * UNITS.MeV)
linear_grid_nu = LinearSpacedGrid(MOMENTUM_SAMPLES=1001,
                                  MAX_MOMENTUM=200 * UNITS.MeV)
linear_grid_s = LinearSpacedGrid(MOMENTUM_SAMPLES=51,
                                 MAX_MOMENTUM=20 * UNITS.MeV)

photon = Particle(**SMP.photon)
neutrino_e = Particle(**SMP.leptons.neutrino_e, **{
    'grid': linear_grid_nu,
    'thermal_dyn': False
})
neutral_pion = Particle(**SMP.hadrons.neutral_pion, **{
Пример #24
0
"""

import os
import numpy

from particles import Particle
from evolution import Universe
from library.SM import particles as SMP
from common import Params, UNITS

folder = os.path.join(os.path.split(__file__)[0], 'output')

T_final = 100 * UNITS.keV
params = Params(T=100 * UNITS.MeV, dy=0.05)

universe = Universe(params=params, folder=folder)

photon = Particle(**SMP.photon)
electron = Particle(**SMP.leptons.electron)

universe.add_particles([photon, electron])
universe.evolve(T_final)

initial_aT = universe.data['aT'][0]
print("a * T is not conserved: {}".format(
    any([initial_aT != value for value in universe.data['aT']])))
initial_a = universe.data['a'][int(len(universe.data) / 2)]
initial_t = universe.data['t'][int(len(universe.data) / 2)] / UNITS.s
last_a = universe.data['a'][-1]
last_t = universe.data['t'][-1] / UNITS.s
Пример #25
0
args = parser.parse_args()

mass = float(args.mass) * UNITS.MeV
theta = float(args.theta)

folder = utils.ensure_dir(os.path.split(__file__)[0],
                          "mass={:e}_theta={:e}".format(mass / UNITS.MeV, theta)
                          + args.comment)


T_initial = 100. * UNITS.MeV
T_final = 0.0008 * UNITS.MeV
params = Params(T=T_initial,
                dy=0.025)

universe = Universe(params=params, folder=folder)

photon = Particle(**SMP.photon)
electron = Particle(**SMP.leptons.electron)
muon = Particle(**SMP.leptons.muon)
neutrino_e = Particle(**SMP.leptons.neutrino_e)
neutrino_mu = Particle(**SMP.leptons.neutrino_mu)
neutrino_tau = Particle(**SMP.leptons.neutrino_tau)
sterile = Particle(**NuP.dirac_sterile_neutrino(mass))

sterile.decoupling_temperature = T_initial
neutrino_e.decoupling_temperature = 10 * UNITS.MeV
neutrino_mu.decoupling_temperature = 10 * UNITS.MeV
neutrino_tau.decoupling_temperature = 10 * UNITS.MeV

universe.add_particles([
Пример #26
0
theta = float(args.theta)
lifetime = float(args.tau) * UNITS.s
Tdec = float(args.Tdec) * UNITS.MeV

folder = utils.ensure_dir(
    op.split(__file__)[0],
    'output', "mass={:e}_theta={:e}_Tdec={:e}_tau={:e}".format(
        mass / UNITS.MeV, theta, Tdec / UNITS.MeV, lifetime / UNITS.s) +
    args.comment)

T_initial = Tdec
T_interactions_freeze_out = 0.005 * UNITS.MeV
T_final = 0.0008 * UNITS.MeV
params = Params(T=T_initial, dy=0.003125)

universe = Universe(params=params, folder=folder)

photon = Particle(**SMP.photon)
electron = Particle(**SMP.leptons.electron)
muon = Particle(**SMP.leptons.muon)
neutrino_e = Particle(**SMP.leptons.neutrino_e)
neutrino_mu = Particle(**SMP.leptons.neutrino_mu)
neutrino_tau = Particle(**SMP.leptons.neutrino_tau)
sterile = Particle(**NuP.dirac_sterile_neutrino(mass))

from common import LogSpacedGrid
linear_grid = LogSpacedGrid()

sterile.decoupling_temperature = T_initial
for neutrino in [neutrino_e, neutrino_mu, neutrino_tau]:
    neutrino.decoupling_temperature = 10 * UNITS.MeV
Пример #27
0
muon = Particle(**SMP.leptons.muon)
tau = Particle(**SMP.leptons.tau)

Particles += [
    photon,
    neutron,
    proton,
    neutrino_e,
    neutrino_mu,
    neutrino_tau,
    electron,
    muon,
    tau
]

universe = Universe(params=params, folder=folder)
universe.add_particles(Particles)
universe.init_kawano(electron=electron, neutrino=neutrino_e)
universe.step_monitor = step_monitor

T_final = 3 * UNITS.MeV
universe.evolve(T_final, export=False)
T_final = 0.0008 * UNITS.MeV
params.dy = 0.003125
universe.evolve(T_final)

from tests.plots import cosmic_neutrino_temperature
cosmic_neutrino_temperature(universe)

print """
    Cosmic photon background temperature is {:.3f} times bigger than cosmic neutrinos temperature.
Пример #28
0
parser = argparse.ArgumentParser(description='Run simulation for given mass and mixing angle')
parser.add_argument('--mass', default='20')
parser.add_argument('--comment', default='')
args = parser.parse_args()

mass = float(args.mass) * UNITS.MeV


folder = os.path.join(os.path.split(__file__)[0], 'output', 'mass={}'.format(args.mass))

T_initial = 20. * UNITS.MeV
T_final = 0.015 * UNITS.MeV
params = Params(T=T_initial,
                dy=0.1)

universe = Universe(params=params, folder=folder)

photon = Particle(**SMP.photon)
electron = Particle(**SMP.leptons.electron)
neutrino_e = Particle(**SMP.leptons.neutrino_e)
neutrino_mu = Particle(**SMP.leptons.neutrino_mu)
neutrino_tau = Particle(**MNP.leptons.neutrino_tau)
neutrino_tau.mass = mass

neutrino_e.decoupling_temperature = T_initial
neutrino_mu.decoupling_temperature = T_initial
neutrino_tau.decoupling_temperature = T_initial


universe.add_particles([
    photon,
Пример #29
0
from particles import Particle
from library.SM import particles as SMP  # , interactions as SMI
from library.NuMSM import particles as NuP, interactions as NuI
from evolution import Universe
from common import UNITS, Params


folder = os.path.join(os.path.split(__file__)[0], 'output')

T_initial = 1.5 * UNITS.GeV
T_final = 100 * UNITS.MeV
params = Params(T=T_initial,
                dy=0.025)

universe = Universe(params=params, logfile=os.path.join(folder, 'log.txt'))

photon = Particle(**SMP.photon)

electron = Particle(**SMP.leptons.electron)
muon = Particle(**SMP.leptons.muon)
tau = Particle(**SMP.leptons.tau)

neutrino_e = Particle(**SMP.leptons.neutrino_e)
neutrino_mu = Particle(**SMP.leptons.neutrino_mu)
neutrino_tau = Particle(**SMP.leptons.neutrino_tau)

up = Particle(**SMP.quarks.up)
down = Particle(**SMP.quarks.down)
# charm = Particle(**SMP.quarks.charm)
strange = Particle(**SMP.quarks.strange)
Пример #30
0
from plotting import RadiationParticleMonitor
from particles import Particle
from library.SM import particles as SMP, interactions as SMI
from evolution import Universe
from common import UNITS, Params


folder = os.path.split(__file__)[0]

T_interaction_freezeout = 0.05 * UNITS.MeV
T_final = 0.0008 * UNITS.MeV
params = Params(T=10. * UNITS.MeV,
                dy=0.025)

universe = Universe(params=params, folder=folder)

photon = Particle(**SMP.photon)
electron = Particle(**SMP.leptons.electron)
neutrino_e = Particle(**SMP.leptons.neutrino_e)
neutrino_mu = Particle(**SMP.leptons.neutrino_mu)
neutrino_mu.dof = 4

neutron = Particle(**SMP.hadrons.neutron)
proton = Particle(**SMP.hadrons.proton)

universe.add_particles([
    photon,
    electron,
    neutrino_e,
    neutrino_mu,
Пример #31
0
mass = float(args.mass) * UNITS.MeV
theta = float(args.theta)
#lifetime = float(args.tau) * UNITS.s

folder = utils.ensure_dir(
    os.path.split(__file__)[0],
    'output',
    "mass={:e}_theta={:e}".format(mass / UNITS.MeV,
                                  theta)  #, lifetime / UNITS.s)
    + args.comment)

T_initial = 200. * UNITS.MeV
T_final = 0.0008 * UNITS.MeV
params = Params(T=T_initial, dy=0.1)

universe = Universe(params=params, folder=folder)

photon = Particle(**SMP.photon)

electron = Particle(**SMP.leptons.electron)
muon = Particle(**SMP.leptons.muon)
tau = Particle(**SMP.leptons.tau)

neutrino_e = Particle(**SMP.leptons.neutrino_e)
neutrino_mu = Particle(**SMP.leptons.neutrino_mu)
neutrino_tau = Particle(**SMP.leptons.neutrino_tau)

neutral_pion = Particle(**SMP.hadrons.neutral_pion)
charged_pion = Particle(**SMP.hadrons.charged_pion)

sterile = Particle(**NuP.dirac_sterile_neutrino(mass))
Пример #32
0
mass = float(args.mass) * UNITS.MeV
theta = float(args.theta)
lifetime = float(args.tau) * UNITS.s

folder = utils.ensure_dir(
    os.path.split(__file__)[0],
    "mass={:e}_tau={:e}_theta={:e}".format(mass / UNITS.MeV, lifetime / UNITS.s, theta)
    + args.comment
)

T_initial = 400. * UNITS.MeV
T_final = 0.0008 * UNITS.MeV
params = Params(T=T_initial,
                dy=0.05)

universe = Universe(params=params, folder=folder)

photon = Particle(**SMP.photon)

electron = Particle(**SMP.leptons.electron)
muon = Particle(**SMP.leptons.muon)
tau = Particle(**SMP.leptons.tau)

neutrino_e = Particle(**SMP.leptons.neutrino_e)
neutrino_mu = Particle(**SMP.leptons.neutrino_mu)
neutrino_tau = Particle(**SMP.leptons.neutrino_tau)

neutral_pion = Particle(**SMP.hadrons.neutral_pion)
charged_pion = Particle(**SMP.hadrons.charged_pion)

sterile = Particle(**NuP.dirac_sterile_neutrino(mass))
Пример #33
0
from common import UNITS, Params, utils, LinearSpacedGrid
from scipy.integrate import simps
import numpy as np

mass = 150 * UNITS.MeV
theta = 1e-3

folder = utils.ensure_dir(
    os.path.split(__file__)[0], "output",
    "mass={:e}_theta={:e}".format(mass / UNITS.MeV, theta))

T_initial = 5 * UNITS.MeV
T_final = 0.0008 * UNITS.MeV
params = Params(T=T_initial, dy=0.003125)

universe = Universe(params=params, folder=folder)

linear_grid = LinearSpacedGrid(MOMENTUM_SAMPLES=301,
                               MAX_MOMENTUM=600 * UNITS.MeV)
linear_grid_s = LinearSpacedGrid(MOMENTUM_SAMPLES=51,
                                 MAX_MOMENTUM=20 * UNITS.MeV)

photon = Particle(**SMP.photon)

electron = Particle(**SMP.leptons.electron, **{'grid': linear_grid})
muon = Particle(**SMP.leptons.muon, **{
    'grid': linear_grid,
    'thermal_dyn': False
})

neutrino_e = Particle(**SMP.leptons.neutrino_e, **{