c Program to calculate some parameters of DM halos for different virial masses and redshifts. c 1.04: Real M_s, V_s values are added (corresponding to enclosed mass at r_s, and circular speed at r_s). c 1.05: NFW/Burkert input parameter program halo implicit NONE real*8 z, m_vir,H0,Omega_m,Omega_mz,Delta,x,r_vir,c_vir,V_vir, # H,sgm,T_vir,zriddr,A,rh,tau,vs,r_s, # Ms,rho_s,M0,V0 integer i logical NFW character sprof*20 external funcn,funcb common A include 'const.f' write (*,*) 'NFW or Burkert (n/b):' read (*,*) sprof write (*,*) sprof write (*,*) 'm_vir (M_Sun):' read (*,*) m_vir write (*,*) m_vir write (*,*) 'Redshift:' read (*,*) z write (*,*) z write (*,*) 'Deviation from the mean sigma:' read (*,*) sgm write (*,*) sgm write (*,*) 'Omega_m:' read (*,*) Omega_m write (*,*) Omega_m write (*,*) 'Hubble constant H0 (km/s/Mpc):' read (*,*) H0 write (*,*) H0 i = 0 1 continue i = i + 1 if (i .gt. len(sprof)) stop 'Empty string!' if (sprof(i:i).eq.' ') go to 1 NFW = (sprof(i:i).eq.'n' .or. sprof(i:i).eq.'N') if (.not.NFW .and. sprof(i:i).ne.'b' .and. sprof(i:i).ne.'B') # stop 'Should be either n or b!' c Hublle units of s^{-1}: H = H0 / pc / 10.d0 c Valid for flat LCDM: Omega_mz = 1.d0/(1.d0 + (1.d0-Omega_m)/Omega_m/(1.d0+z)**3) x = Omega_mz - 1.d0 c Valid for 0.1