diff options
| -rw-r--r-- | fg21sim/configs/config.spec | 9 | ||||
| -rw-r--r-- | fg21sim/extragalactic/clusters/halo.py | 14 | ||||
| -rw-r--r-- | fg21sim/extragalactic/clusters/helper.py | 35 | 
3 files changed, 17 insertions, 41 deletions
| diff --git a/fg21sim/configs/config.spec b/fg21sim/configs/config.spec index 5f9a512..0d7e7aa 100644 --- a/fg21sim/configs/config.spec +++ b/fg21sim/configs/config.spec @@ -386,11 +386,10 @@ stream = option("stderr", "stdout", "", default="stderr")    #       timescale, therefore more efficient acceleration.    f_acc = float(default=1.0, min=0.1, max=10) -  # The turbulence is generally injected at the cluster center during -  # a merger.  This option parameterize the turbulence injection scale -  # to be a fraction of the virial radius of the cluster, which is also -  # used to determine the radio halo size. -  f_lturb = float(default=0.33, min=0.1, max=1.0) +  # The factor that is multiplied to the stripping radius to approximate +  # the turbulence injection radius, from which the radio halo size is +  # estimated. +  f_lturb = float(default=1.0, min=0.5, max=10)    # An efficiency factor describing the effectiveness of plasma    # instabilities (e.g., due to spatial or temporal intermittency). diff --git a/fg21sim/extragalactic/clusters/halo.py b/fg21sim/extragalactic/clusters/halo.py index eac9501..baa1a36 100644 --- a/fg21sim/extragalactic/clusters/halo.py +++ b/fg21sim/extragalactic/clusters/halo.py @@ -234,7 +234,7 @@ class RadioHalo:          The estimated radius for the simulated radio halo.          Unit: [kpc]          """ -        return helper.radius_halo(self.M_obs, self.z_obs, configs=self.configs) +        return self.injection_radius      @property      def angular_radius(self): @@ -363,6 +363,18 @@ class RadioHalo:          return tau      @property +    @lru_cache +    def injection_radius(self): +        """ +        The radius of the turbulence injection regions, and then the +        injection scale: L_turb ~= 2*R_turb. +        Unit: [kpc] +        """ +        rs = helper.radius_stripping(self.M_main, self.M_sub, self.z_merger, +                                     configs=self.configs)  # [kpc] +        return self.f_lturb * rs + +    @property      @lru_cache()      def injection_rate(self):          """ diff --git a/fg21sim/extragalactic/clusters/helper.py b/fg21sim/extragalactic/clusters/helper.py index ecbb866..96800e4 100644 --- a/fg21sim/extragalactic/clusters/helper.py +++ b/fg21sim/extragalactic/clusters/helper.py @@ -129,41 +129,6 @@ def radius_virial(mass, z=0.0):      return R_vir * AUC.cm2kpc  # [kpc] -def radius_halo(mass, z=0.0, configs=CONFIGS): -    """ -    Estimate the radius of (giant) radio halo. - -    NOTE -    ---- -    The halo radius is estimated to be the same as the turbulence -    injection scale, i.e.: -        R_halo ≅ L_turb ≅ R_vir / 3 -    where R_vir the virial radius of the merged (observed) cluster. - -    Reference: [vazza2011],Sec.(3.6) - -    Parameters -    ---------- -    mass : float, `~numpy.ndarray` -        Cluster virial mass. -        Unit: [Msun] -    z : float, `~numpy.ndarray`, optional -        Redshift -        Default: 0.0 (i.e., present day) - -    Returns -    ------- -    R_halo : float, `~numpy.ndarray` -        Radius of the (simulated/predicted) giant radio halo -        Unit: [kpc] -    """ -    # Turbulence injection scale factor -    key = "extragalactic/halos/f_lturb" -    f_lturb = configs.getn(key) -    R_halo = f_lturb * radius_virial(mass=mass, z=z)  # [kpc] -    return R_halo - -  def radius_stripping(M_main, M_sub, z, configs=CONFIGS):      """      Calculate the stripping radius of the in-falling sub-cluster, which | 
