Beispiel #1
0
sigma_init= 20.0
h_m2m= 0.1
# set a guess
xnm_m2m = 0.005
# total surface_mass density  Munit/Lunit(kpc)^2
totmass_init = 1000.0 
print(' initial mass density (Msun/pc^2) =', \
      totmass_init*munit_msun/(lunit_pc**2))
zh_init = sigma_init**2./totmass_init  # Where 2\pi G= 1 so units of zh are ~311 pc
tdyn = zh_init/sigma_init
print(' initial zh (kpc), tdyn (Myr)=', zh_init, tdyn*yr_s/1.0e6)
z_m2m, vz_m2m, w_init= wendym2m.sample_sech2(sigma_init,totmass_init,n=n_m2m)
z_out= numpy.linspace(zmin, zmax, 101)
dens_init= xnm_m2m*hom2m.compute_dens(z_m2m,zsun_true,z_out,h_m2m,w=w_init)
v2_init= hom2m.compute_v2(z_m2m,vz_m2m,zsun_true,z_out,h_m2m,w=w_init)
v_init= hom2m.compute_v(z_m2m,vz_m2m,zsun_true,z_out,h_m2m,w=w_init)
bovy_plot.bovy_print(axes_labelsize=17.,text_fontsize=12.,xtick_labelsize=15.,ytick_labelsize=15.)

### Set initial DM density, i.e. omega
# dark matter density (Msun pc^-3)
# conventional value
# rhodm_msunpc3= 0.01
rhodm_msunpc3= 0.01
# omega = sqrt(4 pi G rho_dm), 2 pi G=1, 
omega_m2m = numpy.sqrt(2.0*rhodm_msunpc3/densunit_msunpc3)
print(' initial DM density (Msun pc^-3) =', rhodm_msunpc3)
print(' omega(initial)=', omega_m2m)

### Set M2M parameters
step= 0.05*tdyn
nstep= 4000
    z_mock_i = z_mock[indx]
    vz_mock_i = vz_mock[indx]
    # assuming m_mock are constant.
    v2_obs_sam[i] = hom2m.compute_v2(z_mock_i, vz_mock_i, zsun_true, z_obs,
                                     h_obs)
v2_obs = numpy.mean(v2_obs_sam, axis=0)
v2_obs_noise = numpy.std(v2_obs_sam, axis=0)
print('Bootstrap with a single output')
print('v2_obs=', v2_obs)
print('v2_obs_noise=', v2_obs_noise)
# no additional noise
# v2_obs+= numpy.random.normal(size=v2_obs.shape)*v2_obs_noise

# <v>, but not used for constraints.
# We only observe the v2 at a few z (same as before)
v_obs = hom2m.compute_v(z_mock, vz_mock, zsun_true, z_obs, h_obs)
# use constant noise
v_obs_noise = numpy.zeros_like(v_obs) + 0.5
numpy.random.seed(
    42)  # probably best to set a seed somewhere so the data is always the same
# Bootstrap error estimate
nbs_sam = 100
v_obs_sam = numpy.zeros((nbs_sam, len(v_obs)))
for i in range(nbs_sam):
    indx = numpy.random.randint(len(z_mock), size=len(z_mock))
    z_mock_i = z_mock[indx]
    vz_mock_i = vz_mock[indx]
    # assuming m_mock are constant.
    v_obs_sam[i] = hom2m.compute_v(z_mock_i, vz_mock_i, zsun_true, z_obs,
                                   h_obs)
v_obs = numpy.mean(v_obs_sam, axis=0)
Beispiel #3
0
vmax = 6.0
# for vz histogram
vzmin = -50.0
vzmax = 50.0
sfmdenmin = 0.0
sfmdenmax = 50.0
dmdenmin = 0.0
dmdenmax = 0.03

### Set final values
z_out = numpy.linspace(zmin, zmax, 101)
v2max = 1000.0
dens_final = xnm_out[-1] * hom2m.compute_dens(
    z_m2m, zsun_true, z_out, h_m2m, w=w_out)
v2_final = hom2m.compute_v2(z_m2m, vz_m2m, zsun_true, z_out, h_m2m, w=w_out)
v_final = hom2m.compute_v(z_m2m, vz_m2m, zsun_true, z_out, h_m2m, w=w_out)

### Sample w, omega and Xnm
# default sample step
step_sam = 0.05 * tdyn
nstep_sam = 100
# eps = [10.0**-4.0, 10.0**0.0, 10.0**-8.0]
eps = [1.0**-2.0, 10.0**0.0, 10.0**-8.0]
# used for weight sampling only
eps_sam = eps[0]
nsamples = 50
s_low, s_high = 16, -16
smooth = None  #1./step/100.
st96smooth = False
mu = 0.0
h_m2m = 0.1