00001 /* 00002 * Copyright (C) 2007 Robert Adam Mercer, Tania Regimbau 00003 * 00004 * This program is free software; you can redistribute it and/or modify 00005 * it under the terms of the GNU General Public License as published by 00006 * the Free Software Foundation; either version 2 of the License, or 00007 * (at your option) any later version. 00008 * 00009 * This program is distributed in the hope that it will be useful, 00010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00012 * GNU General Public License for more details. 00013 * 00014 * You should have received a copy of the GNU General Public License 00015 * along with with program; see the file COPYING. If not, write to the 00016 * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 00017 * MA 02111-1307 USA 00018 */ 00019 00020 00021 /* <lalVerbatim file="AstroOmegaCV"> 00022 Author: Regimbau T. 00023 $Id: AstroOmega.c,v 1.6 2007/06/08 14:41:54 bema Exp $ 00024 </lalVerbatim> */ 00025 00026 /*<lalLaTeX> 00027 00028 \subsection*{Module \texttt{AstroOmega.c}} 00029 00030 [compute the energy density spectrum of stochastic backgrounds produced 00031 by cosmological population of astrophysical sources] 00032 00033 \subsubsection*{Prototypes} 00034 %\input{AstroOmegaCP} 00035 \index{\texttt{LALAstroOmega()}} 00036 \subsubsection*{Description} 00037 The function of this module computes the energy density parameter $\Omega_{gw}(\nu_{o})$ for a given source and a given cosmological model. 00038 The spectral properties of the stochastic background are characterized by the dimensionless parameter 00039 \begin{equation} 00040 \Omega _{gw}=\frac{1}{\rho _{c}}\frac{d\rho _{gw}}{d\log \nu _{o}} 00041 \end{equation} 00042 where $\rho _{gw}$ is the gravitational energy density, $\nu _{o}$ the frequency in the 00043 observer frame and 00044 \begin{equation} 00045 \rho _{c}=\frac{3H_{o}^{2}}{8\pi G} 00046 \end{equation} 00047 the critical energy density to close the Universe today. 00048 00049 For a given cosmological model, a stochastic background of 00050 astrophysical origin is fully determined by the source formation rate as a function of redshift, 00051 $dR(z)$ and the gravitational spectral density of a single source, ${dE_{gw}}\over{d\nu}$. 00052 Following Ferrari et al. (1999): 00053 \begin{equation} 00054 \Omega _{gw}(\nu _{o})=\frac{1}{c^{3} \rho _{c}}{\nu _{o}}F_{\nu _{o}} 00055 \end{equation} 00056 where 00057 \begin{equation} 00058 F_{\nu _{o}}=\int_{0}^{z_{\max }}f_{\nu _{o}}dR(z) 00059 \end{equation} 00060 is the gravitational wave flux at the 00061 frequency $\nu _{o}$ integrated over all the sources. 00062 The gravitational flux of a single source located between z, z+dz is: 00063 \begin{equation} 00064 f_{\nu _{o}}=\frac{1}{4\pi d_{L}^{2}}\frac{dE_{gw}}{d\nu }(1+z) 00065 \end{equation} 00066 where $d_{L}=(1+z)r$ is the distance luminosity and $\nu=(1+z)\nu _{o}$ 00067 the frequency in the source frame. 00068 The event rate between z, z+dz as observed in our frame is given by: 00069 \begin{equation} 00070 dR(z)=\lambda _{p}\frac{R_{c}(z)}{1+z}{\frac{{dV}}{{dz}}}dz 00071 \end{equation} 00072 where $R_{c}(z)$ is the cosmic star formation rate and $\lambda_{p}$ 00073 is the mass fraction of the source progenitors. The 00074 term (1 +z) in the denominator accounts for the time dilatation by cosmic expansion of the 00075 observed rate. 00076 The element of the comoving volume is 00077 \begin{equation} 00078 dV = 4\pi r^2{{c}\over{H_o}}{{dz}\over{E(\Omega_i,z)}} 00079 \end{equation} 00080 where the function E$(\Omega_i,z)$ is 00081 defined by the equation: 00082 \begin{equation} 00083 E(\Omega_i,z) =[\Omega_m(1+z)^3 + \Omega_v]^{1/2} 00084 \end{equation} 00085 where $\Omega_m$ and $\Omega_v$ are respectively the density parameters 00086 due to matter (baryonic and non-baryonic) and the vacuum. 00087 The cosmic star formation rate is computed as: 00088 \begin{equation} 00089 R_{c}(z) = 00090 R_{SF2}(z) 00091 \frac{h_0}{0.65}\frac{E(\Omega_i,z)}{(1+z)^{3/2}}\; 00092 \mathrm{M}_{\odot}\,\mathrm{yr}^{-1}\,\mathrm{Mpc}^{-3} 00093 \end{equation} 00094 where 00095 \begin{equation} 00096 R_{SF2}(z) = \frac{0.15\,e^{3.4z}}{(22 + e^{3.4z})} \; 00097 \mathrm{M}_{\odot}\,\mathrm{yr}^{-1}\,\mathrm{Mpc}^{-3} 00098 \end{equation} 00099 is the cosmic star formation rate (Madau \&Porciani, 2001) in a matter-dominateduniverse ($\Omega_{m}=1$) with H$_o = 65\,\mathrm{km\,s}^{-1}\mathrm{Mpc}^{-1}$. 00100 Combining the previous equations one obtains: 00101 \begin{equation} 00102 \Omega _{gw}(\nu _{o})=\frac{8\pi G}{3c^{2}H_{o}^{3}}\lambda_{p}\, \nu_{o}\int_{0}^{z_{\sup }}\frac{dE_{gw}}{d\nu }\frac{R_{c}(z)}{E(z)(1+z)^2}dz 00103 \end{equation} 00104 The upper limit of the integral is determined by the cutoff frequency in the 00105 source frame, $\nu _{\sup }$, as: 00106 \begin{equation} 00107 z_{\sup }=\frac{\nu _{\sup }}{\nu_{o}} - 1 00108 \end{equation} 00109 Note that we are limited to $z<5$ since the cosmic star formation rate is not 00110 modeled above. This restriction is without significant consequence 00111 since objects with $z>5 $ contribute very little to the integrated signal. 00112 00113 00114 00115 \subsubsection*{Operating Instructions} 00116 the following program shows how to use the function LALAstroOmega 00117 00118 \begin{verbatim} 00119 00120 00121 #include <stdio.h> 00122 #include <math.h> 00123 #include <lal/LALConfig.h> 00124 #include <lal/LALStdlib.h> 00125 #include <lal/Integrate.h> 00126 #include <lal/AstroOmega.h> 00127 00128 NRCSID (ASTROOMEGATESTC, "$Id: AstroOmega.c,v 1.6 2007/06/08 14:41:54 bema Exp $"); 00129 00130 //define here the spectral energy density of a single source 00131 00132 static void SDensity (REAL8 *dEgw, REAL8 nu) 00133 { *dEgw=pow(nu,3.); 00134 return; 00135 } 00136 00137 int lalDebugLevel = 0; 00138 int main () 00139 { 00140 static LALStatus status; 00141 DIntegrateIn zint; 00142 AstroOmegaGeneralParams params; 00143 AstroOmegaSourceParams sourcep; 00144 AstroOmegaCosmoParams cosmop; 00145 REAL8 omegaz, nu, test; 00146 00147 //define here the model parameters 00148 //cosmological parameters 00149 cosmop.ho=0.65; 00150 cosmop.density_matter=0.3; 00151 cosmop.density_vacuum=0.7; 00152 cosmop.density_k=0.; 00153 00154 //source parameters for rotating pulsars 00155 sourcep.fact = 2.88E-22; 00156 sourcep.numax = 4000.; 00157 sourcep.SDensitySource = SDensity; 00158 params.cosmoparams = cosmop; 00159 params.sourceparams = sourcep; 00160 for (nu = 0.; nu < sourcep.numax ; nu = nu + 10.) 00161 { 00162 params.extraparams = ν 00163 LALAstroOmegaSource (&status, &test, nu, ¶ms); 00164 printf("omega(%f)= %.2e\n", nu, test);} 00165 return 0; 00166 } 00167 00168 00169 \end{verbatim} 00170 00171 \subsubsection*{Notes} 00172 \vfill{\footnotesize\input{AstroOmegaCV}} 00173 00174 </lalLaTeX> */ 00175 00176 #include <stdio.h> 00177 #include <math.h> 00178 #include <lal/LALConfig.h> 00179 #include <lal/LALStdlib.h> 00180 #include <lal/Integrate.h> 00181 #include <lal/AstroOmega.h> 00182 00183 NRCSID (ASTROOMEGAC, "$Id: AstroOmega.c,v 1.6 2007/06/08 14:41:54 bema Exp $"); 00184 00185 00186 static void SFR (REAL8 *result, REAL8 z); 00187 static void dAstroOmega (LALStatus *s, REAL8 *domegaz, REAL8 z, void *p); 00188 00189 void LALAstroOmega (LALStatus *s, REAL8 *omeganu, REAL8 nu, void *p) 00190 { 00191 DIntegrateIn zint; 00192 AstroOmegaParams params; 00193 AstroOmegaSourceParams sourcep; 00194 AstroOmegaCosmoParams cosmop; 00195 REAL8 omegaz, zmax, numax, lambda; 00196 INITSTATUS (s, "LALAstroOmega", ASTROOMEGAC); 00197 ATTATCHSTATUSPTR (s); 00198 00199 params = *((AstroOmegaParams *)p); 00200 cosmop=params.cosmoparams; 00201 sourcep = params.sourceparams; 00202 numax= sourcep.numax; 00203 lambda = sourcep.lambda; 00204 00205 if((nu >= numax)||(nu <= 0.)){*omeganu = 0.;} 00206 else 00207 { 00208 if (nu < (numax / 6.)) {zmax = 5.;} 00209 else {zmax = (numax / nu) - 1.;} 00210 00211 zint.function = dAstroOmega; 00212 zint.xmin = 0; 00213 zint.xmax = zmax; 00214 zint.type = ClosedInterval; 00215 00216 LALDRombergIntegrate (s->statusPtr, &omegaz, &zint, ¶ms); 00217 *omeganu = 4.66e-56 * lambda / (cosmop.ho * cosmop.ho) * nu * omegaz; 00218 } 00219 CHECKSTATUSPTR (s); 00220 DETATCHSTATUSPTR (s); 00221 RETURN (s); 00222 } 00223 00224 00225 00226 /*cosmic star formation rate */ 00227 static void SFR (REAL8 *result, REAL8 z) 00228 { 00229 /*cosmic star formation rate*/ 00230 /*Madau & Pozetti, 2001 */ 00231 *result = 0.15 * exp(3.4*z) / (22. + exp(3.4*z)); 00232 00233 return; 00234 } 00235 00236 00237 00238 static void dAstroOmega (LALStatus *s, REAL8 *domegaz, REAL8 z, void *p) 00239 { 00240 AstroOmegaParams params; 00241 AstroOmegaSourceParams sourcep; 00242 /*AstroOmegaCosmoParams cosmop;*/ 00243 REAL8LALSDensity *SDensitySource; 00244 REAL8 Rc, dEgw, nu, nuz; 00245 00246 INITSTATUS (s, "dAstroOmega", ASTROOMEGAC); 00247 ATTATCHSTATUSPTR (s); 00248 params = *((AstroOmegaParams *)p); 00249 sourcep = params.sourceparams; 00250 SDensitySource = sourcep.SDensitySource; 00251 nu = *((REAL8 *)params.extraparams); 00252 00253 /*frequency in the source frame*/ 00254 nuz = (1. + z) * nu; 00255 /*single spectral energy density in the source frame*/ 00256 SDensitySource(&dEgw, nuz); 00257 /*cosmic formation rate*/ 00258 SFR(&Rc, z); 00259 *domegaz = dEgw * Rc / pow((1.+z),3.5); 00260 CHECKSTATUSPTR (s); 00261 DETATCHSTATUSPTR (s); 00262 RETURN (s); 00263 } 00264
1.5.2