aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAaron LI <aly@aaronly.me>2017-10-18 16:14:59 +0800
committerAaron LI <aly@aaronly.me>2017-10-18 16:16:18 +0800
commit375198fb380933ea1b00f2e42401550ae20da76d (patch)
tree966fa37fd3e1b5f5f32c0ad30f927524f7d40f39
parent3dadf7b53f28af00f3170a10629c91e8d2888e0e (diff)
downloadfg21sim-375198fb380933ea1b00f2e42401550ae20da76d.tar.bz2
clusters: Update radio halo radius estimation
The simulated radio halo is assumed to have a radius of the falling sub-cluster; while previously it is assumed to be 1/4 of the virial radius of the merged cluster. The new estimation can agree better with the currently observed radio halos, which generally have a angular diameter size of ~2-7 [arcmin].
-rw-r--r--fg21sim/extragalactic/clusters/halo.py12
-rw-r--r--fg21sim/extragalactic/clusters/helper.py36
2 files changed, 25 insertions, 23 deletions
diff --git a/fg21sim/extragalactic/clusters/halo.py b/fg21sim/extragalactic/clusters/halo.py
index 832371e..6bfa4ca 100644
--- a/fg21sim/extragalactic/clusters/halo.py
+++ b/fg21sim/extragalactic/clusters/halo.py
@@ -166,13 +166,17 @@ class RadioHalo:
@property
def radius(self):
"""
- The halo radius derived from the virial radius by a scaling
- relation.
+ The estimated radius for the simulated radio halo.
+
+ NOTE
+ ----
+ The halo radius is assumed to be the virial radius of the falling
+ sub-cluster. See ``helper.radius_halo()`` for more details.
Unit: [kpc]
"""
- mass = self.M_main + self.M_sub # [Msun]
- r_halo = helper.radius_halo(mass, self.z_merger) # [kpc]
+ r_halo = helper.radius_halo(self.M_main, self.M_sub,
+ self.z_merger)
return r_halo
@property
diff --git a/fg21sim/extragalactic/clusters/helper.py b/fg21sim/extragalactic/clusters/helper.py
index b54340c..e553da9 100644
--- a/fg21sim/extragalactic/clusters/helper.py
+++ b/fg21sim/extragalactic/clusters/helper.py
@@ -54,16 +54,16 @@ def radius_virial(mass, z=0.0):
Parameters
----------
- mass : float
+ mass : float, `~numpy.ndarray`
Total (virial) mass of the cluster
Unit: [Msun]
- z : float, optional
+ z : float, `~numpy.ndarray`, optional
Redshift
Default: 0.0 (i.e., present day)
Returns
-------
- R_vir : float
+ R_vir : float, `~numpy.ndarray`
Virial radius of the cluster
Unit: [kpc]
"""
@@ -74,35 +74,33 @@ def radius_virial(mass, z=0.0):
return R_vir
-def radius_halo(mass, z=0.0):
+def radius_halo(M_main, M_sub, z=0.0):
"""
- Calculate the radius of (giant) radio halo for a cluster.
+ Calculate the (predicted) radius of (giant) radio halo for a cluster.
- The halo radius is assumed to linearly scale with the virial radius,
- and is estimated by:
- R_halo = R_vir / 4
- * halo radius is ~3-6 times smaller than the virial radius;
- Ref.[cassano2007],Sec.(1)
- * halo half radius is ~R500/4, therefore, R_halo ~ R_vir/4;
- Ref.[zandanel2014],Sec.(6.2)
+ NOTE
+ ----
+ It can be intuitively assumed that a merger will generate turbulences
+ within a region of size of the falling sub-cluster. And this
+ estimation can agree with the currently observed radio halos, which
+ generally have a angular diameter size ~2-7 [arcmin].
Parameters
----------
- mass : float
- Total (virial) mass of the cluster
+ M_main, M_sub : float, `~numpy.ndarray`
+ Total (virial) masses of the main and sub clusters
Unit: [Msun]
- z : float, optional
+ z : float, `~numpy.ndarray`, optional
Redshift
Default: 0.0 (i.e., present day)
Returns
-------
- R_halo : float
- Radius of the (expected) giant radio halo
+ R_halo : float, `~numpy.ndarray`
+ Radius of the (simulated/predicted) giant radio halo
Unit: [kpc]
"""
- R_vir = radius_virial(mass=mass, z=z) # [kpc]
- R_halo = R_vir / 4.0 # [kpc]
+ R_halo = radius_virial(mass=M_sub, z=z) # [kpc]
return R_halo