aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fg21sim/configs/config.spec9
-rw-r--r--fg21sim/extragalactic/clusters/halo.py14
-rw-r--r--fg21sim/extragalactic/clusters/helper.py35
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