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], {}
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], {}
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"
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"
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))
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
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)
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
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,
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)
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])
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
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,
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,
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"
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,
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)))
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(
""" 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
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])
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))
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))
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, **{
""" 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
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([
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
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.
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,
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)
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,
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))
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))
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, **{