diff options
| author | Aaron LI <aly@aaronly.me> | 2019-02-21 21:43:36 +0800 | 
|---|---|---|
| committer | Aaron LI <aly@aaronly.me> | 2019-02-21 21:46:32 +0800 | 
| commit | 1e1f573e2f4910471a9f7b92e9ff12de48d4c0db (patch) | |
| tree | b349ce26cfa22bf0d5e6950416a6fc308ca4fd8f /fg21sim/extragalactic/clusters | |
| parent | 8e563e91d8b0dc239e124fb7e88d84c1c8506b67 (diff) | |
| download | fg21sim-1e1f573e2f4910471a9f7b92e9ff12de48d4c0db.tar.bz2 | |
clusters/halo: Add velocity_turb_base() method
This method calculates the velocity dispersion of the base turbulence,
i.e., the turbulence existing in a relaxed system without the merger
injection.
Add new configuration option 'extragalactic/halos/x_turb' to
parameterize the energy fraction of the base turbulence w.r.t. the ICM
thernal energy.
Diffstat (limited to 'fg21sim/extragalactic/clusters')
| -rw-r--r-- | fg21sim/extragalactic/clusters/halo.py | 41 | 
1 files changed, 41 insertions, 0 deletions
| diff --git a/fg21sim/extragalactic/clusters/halo.py b/fg21sim/extragalactic/clusters/halo.py index 5eda8da..214aefe 100644 --- a/fg21sim/extragalactic/clusters/halo.py +++ b/fg21sim/extragalactic/clusters/halo.py @@ -57,6 +57,10 @@ References  .. [sarazin1999]     Sarazin 1999, ApJ, 520, 529     http://adsabs.harvard.edu/abs/1999ApJ...520..529S + +.. [vazza2011] +   Vazza et al. 2011, A&A, 529, A17 +   http://adsabs.harvard.edu/abs/2011A%26A...529A..17V  """  import logging @@ -155,6 +159,7 @@ class RadioHalo1M:          self.configs = configs          self.f_acc = configs.getn(sec+"/f_acc")          self.f_radius = configs.getn(sec+"/f_radius") +        self.x_turb = configs.getn(sec+"/x_turb")          self.eta_turb = configs.getn(sec+"/eta_turb")          self.eta_e = configs.getn(sec+"/eta_e")          self.x_cr = configs.getn(sec+"/x_cr") @@ -283,6 +288,42 @@ class RadioHalo1M:          return uconv * d / v_i  # [Gyr]      @lru_cache() +    def velocity_turb_base(self, t): +        """ +        Calculate the velocity dispersion of the base turbulence. + +        Without injection by mergers, the ICM can has some turbulence, +        which can amount ~< 5% of the thermal energy in relaxed systems +        (Ref.[vazza2011]). + +        ε_turb = (1/2) * ρ_gas * <v_turb^2> = x_turb * ε_th +        ε_th = (3/2) * n_th * kT +        ρ_gas = μ * m_u * n_th +        c_s^2 = γ_gas * kT / (μ * m_u) +        => +        v_turb = c_s * sqrt(3 * x_turb / γ_gas) + +        Parameters +        ---------- +        t_merger : float +            The beginning or ending time of the merger. +            Unit: [Gyr] + +        Returns +        ------- +        v_turb : float +            The velocity dispersion of the base turbulence. +            Unit: [km/s] +        """ +        self._validate_time(t) + +        if np.isclose(self.x_turb, 0): +            return 0 + +        c_s = helper.speed_sound(self.kT(t))  # [km/s] +        return c_s * np.sqrt(3*self.x_turb / AC.gamma) + +    @lru_cache()      def velocity_turb(self, t_merger):          """          Calculate the turbulence velocity dispersion. | 
