Ejemplo n.º 1
0
def test_volumetric_heating_rate_density():
    """
    For a constant volumetric heating rate [erg/s/cm^3]
    => net cooling rate [erg*cm^3/s] should go as 1 / rho^2.
    """
    density = mass_hydrogen_cgs
    fc = container_setup(density=density)
    heating_rate = get_heating_rate(fc)

    myrand = np.random.RandomState(seed=8675309)

    for i in range(6):
        new_density = mass_hydrogen_cgs * \
          random_logscale(-1, 1, random_state=myrand)[0]

        for field in fc.density_fields:
            fc[field] *= new_density / density

        new_heating_rate = get_heating_rate(fc)

        assert_almost_equal(new_heating_rate / heating_rate,
                            (density / new_density)**2,
                            decimal=1,
                            err_msg="\nViolates density constraint!")

        density = new_density
        heating_rate = new_heating_rate
Ejemplo n.º 2
0
def test_volumetric_heating_rate_redshift():
    """
    For a constant volumetric heating rate [erg/s/cm^3]
    => net cooling rate [erg*cm^3/s] should be
       independent of redshift.
    """
    redshift = 0.
    fc = container_setup(density=0.5 * mass_hydrogen_cgs,
                         current_redshift=redshift)
    heating_rate = get_heating_rate(fc)

    myrand = np.random.RandomState(seed=8675309)

    for i in range(6):
        new_redshift = 3 * myrand.random_sample()
        fc.chemistry_data.a_value = 1.0 / (1.0 + new_redshift) / \
          fc.chemistry_data.a_units

        new_heating_rate = get_heating_rate(fc)

        assert_almost_equal(new_heating_rate / heating_rate,
                            1.0,
                            decimal=1,
                            err_msg="\nViolates redshift constraint!")

        redshift = new_redshift
        heating_rate = new_heating_rate
Ejemplo n.º 3
0
def test_volumetric_heating_rate_a_units():
    """
    For a constant volumetric heating rate [erg/s/cm^3]
    => net cooling rate [erg*cm^3/s] should be
       independent of a_units.
    """
    redshift = 0.
    fc = container_setup(density=0.5 * mass_hydrogen_cgs,
                         current_redshift=redshift)
    heating_rate = get_heating_rate(fc)
    velocity_units = fc.chemistry_data.velocity_units

    myrand = np.random.RandomState(seed=8675309)

    for i in range(6):
        fc.chemistry_data.a_units = \
          random_logscale(-0.5, 0.5, random_state=myrand)[0]
        fc.chemistry_data.a_value = 1.0 / (1.0 + redshift) / \
          fc.chemistry_data.a_units
        new_velocity_units = fc.chemistry_data.a_units * \
          (fc.chemistry_data.length_units / fc.chemistry_data.a_value) / \
          fc.chemistry_data.time_units
        fc.chemistry_data.velocity_units = new_velocity_units
        fc["energy"] *= (velocity_units / new_velocity_units)**2

        new_heating_rate = get_heating_rate(fc)

        assert_almost_equal(new_heating_rate / heating_rate,
                            1.0,
                            decimal=1,
                            err_msg="\nViolates a_units constraint!")

        velocity_units = new_velocity_units
        heating_rate = new_heating_rate
Ejemplo n.º 4
0
def test_volumetric_heating_rate_density_units():
    """
    For a constant volumetric heating rate [erg/s/cm^3]
    => net cooling rate [erg*cm^3/s] should be
       independent of density_units.
    """
    fc = container_setup(density=0.5 * mass_hydrogen_cgs)
    density_units = fc.chemistry_data.density_units
    heating_rate = get_heating_rate(fc)

    myrand = np.random.RandomState(seed=8675309)

    for i in range(6):
        new_density_units = density_units * \
          random_logscale(-2, 2, random_state=myrand)[0]
        fc.density_units = new_density_units

        new_heating_rate = get_heating_rate(fc)

        assert_almost_equal(new_heating_rate / heating_rate,
                            1.0,
                            decimal=1,
                            err_msg="\nViolates density_units constraint!")

        density_units = new_density_units
        heating_rate = new_heating_rate