double dark_entropy(double T, struct relicparam paramrelic) /* computes the dark entropy density at temperature T */ { if((paramrelic.sd0==0.)&&(paramrelic.Sigmad0==0.)) return 0.; if((paramrelic.Sigmad0==0.)&&(T<paramrelic.Tsend)) return 0.; if(paramrelic.Sigmad0==0.) { double s_rad_1MeV=2.*pi*pi/45.*heff(1.e-3,paramrelic)*1.e-9; return paramrelic.sd0*s_rad_1MeV*pow(T/1.e-3,paramrelic.nsd); } else { double lnT,dlnT,Ttmp; int ie,nmax; double integ=0.; nmax=50; lnT=log(1.e-15); dlnT=(log(T)-lnT)/nmax; for(ie=1;ie<nmax;ie++) { lnT+=dlnT; Ttmp=exp(lnT); integ+=sgStar(Ttmp,paramrelic)*dark_entropy_Sigmad(Ttmp,paramrelic)/sqrt(1.+dark_density(Ttmp,paramrelic)/(pi*pi/30.*geff(Ttmp,paramrelic)*pow(Ttmp,4.)))/pow(heff(Ttmp,paramrelic),2.)/pow(Ttmp,5.); } integ+=sgStar(T,paramrelic)*dark_entropy_Sigmad(T,paramrelic)/sqrt(1.+dark_density(T,paramrelic)/(pi*pi/30.*geff(T,paramrelic)*pow(T,4.)))/pow(heff(T,paramrelic),2.)/pow(T,5.)/2.; integ*=dlnT; double Mplanck=1.2209e19; return 3.*Mplanck*sqrt(5./4./pi/pi/pi)*heff(T,paramrelic)*T*T*T*integ; } }
double dark_entropy_Sigmad(double T, struct relicparam paramrelic) /* computes the dark entropy production at temperature T */ { if((paramrelic.sd0==0.)&&(paramrelic.Sigmad0==0.)) return 0.; if((paramrelic.Sigmad0==0.)&&(T<paramrelic.Tsend)) return 0.; double Mplanck=1.2209e19; if(paramrelic.Sigmad0==0.) { return 1./Mplanck*(sqrt(24.*pi*(pi*pi/30.*geff(T,paramrelic)*pow(T,4.)+dark_density(T,paramrelic)))*dark_entropy(T,paramrelic)-sqrt(4.*pi*pi*pi/45.)*heff(T,paramrelic)/sgStar(T,paramrelic)*pow(T,3)*sqrt(1.+dark_density(T,paramrelic)/(pi*pi/30.*geff(T,paramrelic)*pow(T,4.)))*dark_entropy_derivative(T,paramrelic)); } else { if(T<paramrelic.TSigmaend) return 0.; double s_rad_1MeV=2.*pi*pi/45.*heff(1.e-3,paramrelic)*1.e-9; double Sigma_rad_1MeV= 1./Mplanck*sqrt(4.*pi*pi*pi/5.*geff(1.e-3,paramrelic))*(1.e-6)*s_rad_1MeV; return paramrelic.Sigmad0*Sigma_rad_1MeV*pow(T/1.e-3,paramrelic.nSigmad); } }
double CosmologyModel::dark_entropy_Sigmad(double T) /* computes the dark entropy production at temperature T */ { if((sd0==0.)&&(Sigmad0==0.)) return 0.; if((Sigmad0==0.)&&(T<Tsend)) return 0.; double Mplanck=1.2209e19; if(Sigmad0==0.) { return 1./Mplanck*(sqrt(24.*pi*(pi*pi/30.*geff(T)*pow(T,4.)+dark_density(T)))*dark_entropy(T)-sqrt(4.*pi*pi*pi/45.)*heff(T)/sgStar(T)*pow(T,3)*sqrt(1.+dark_density(T)/(pi*pi/30.*geff(T)*pow(T,4.)))*dark_entropy_derivative(T)); } else { if(T<TSigmaend) return 0.; double s_rad_1MeV=2.*pi*pi/45.*heff(1.e-3)*1.e-9; double Sigma_rad_1MeV= 1./Mplanck*sqrt(4.*pi*pi*pi/5.*geff(1.e-3))*(1.e-6)*s_rad_1MeV; return Sigmad0*Sigma_rad_1MeV*pow(T/1.e-3,nSigmad); } }
double dark_entropy_derivative(double T, struct relicparam paramrelic) /* computes the dark energy entropy derivative at temperature T */ { if((paramrelic.sd0==0.)&&(paramrelic.Sigmad0==0.)) return 0.; if((paramrelic.Sigmad0==0.)&&(T<paramrelic.Tsend)) return 0.; if(paramrelic.Sigmad0==0.) { return (dark_entropy(T*1.001,paramrelic)-dark_entropy(T*0.999,paramrelic))/0.002/T; } else { double Mplanck=1.2209e19; return 3.*sgStar(T,paramrelic)/T/heff(T,paramrelic)*(sqrt(geff(T,paramrelic))*dark_entropy(T,paramrelic)-sqrt(5.*Mplanck/4./pi/pi/pi)/T/T*dark_entropy_Sigmad(T,paramrelic)/sqrt(1.+dark_density(T,paramrelic)/(pi*pi/30.*geff(T,paramrelic)*pow(T,4.)))); } }
double CosmologyModel::dark_entropy_derivative(double T) /* computes the dark energy entropy derivative at temperature T */ { if((sd0==0.)&&(Sigmad0==0.)) return 0.; if((Sigmad0==0.)&&(T<Tsend)) return 0.; if(Sigmad0==0.) { return (dark_entropy(T*1.001)-dark_entropy(T*0.999))/0.002/T; } else { double Mplanck=1.2209e19; return 3.*sgStar(T)/T/heff(T)*(sqrt(geff(T))*dark_entropy(T)-sqrt(5.*Mplanck/4./pi/pi/pi)/T/T*dark_entropy_Sigmad(T)/sqrt(1.+dark_density(T)/(pi*pi/30.*geff(T)*pow(T,4.)))); } }