aboutsummaryrefslogtreecommitdiffstats
path: root/fg21sim
diff options
context:
space:
mode:
Diffstat (limited to 'fg21sim')
-rw-r--r--fg21sim/extragalactic/clusters/halo.py92
1 files changed, 0 insertions, 92 deletions
diff --git a/fg21sim/extragalactic/clusters/halo.py b/fg21sim/extragalactic/clusters/halo.py
index c498bb6..d0bce9e 100644
--- a/fg21sim/extragalactic/clusters/halo.py
+++ b/fg21sim/extragalactic/clusters/halo.py
@@ -1008,95 +1008,3 @@ class RadioHaloAM(RadioHalo1M):
n1_e = n2_e
return n2_e
-
-
-class RadioHalo:
- """
- Simulate the radio halo properties for a galaxy cluster.
-
- This class is built upon the `~RadioHalo1M` and `~RadioHaloAM` and
- is intended for use in the outside.
-
- Parameters
- ----------
- M_obs : float
- Cluster virial mass at the observation (simulation end) time.
- Unit: [Msun]
- z_obs : float
- Redshift of the observation (simulation end) time.
- M_main, M_sub : list[float]
- List of main and sub cluster masses at each merger event,
- from current to earlier time.
- Unit: [Msun]
- z_merger : list[float]
- The redshifts at each merger event, from small to large.
- merger_num : int
- Number of merger events traced for the cluster.
- """
- # Effective radius of the turbulence region [kpc]
- radius_turb_eff = None
-
- def __init__(self, M_obs, z_obs, M_main, M_sub, z_merger,
- merger_num, configs=CONFIGS):
- self.M_obs, self.z_obs = M_obs, z_obs
- self.M_main = np.asarray(M_main[:merger_num])
- self.M_sub = np.asarray(M_sub[:merger_num])
- self.z_merger = np.asarray(z_merger[:merger_num])
- self.merger_num = merger_num
- self.configs = configs
-
- def calc_radius_turb(self):
- """
- Determine the effective radius of the turbulence region along the
- whole merging process. The effective size is determined by the
- largest turbulence radius of a merger that is generating a genuine
- radio halo.
-
- Returns
- -------
- radius_turb_eff : float
- Effective radius of the turbulence region
- Unit: [kpc]
-
- Attributes
- ----------
- radius_turb_eff : float
- _halos : list[dict]
- List of dictionary with each one saving the properties of the
- halo generated by the corresponding merger.
- """
- logger.info("Determining the effective turbulence radius ...")
- halos = [{
- "M_main": self.M_main[i],
- "M_sub": self.M_sub[i],
- "z_merger": self.z_merger[i],
- "i": i,
- } for i in range(self.merger_num)]
- for hdict in halos:
- halo = RadioHalo1M(M_obs=self.M_obs, z_obs=self.z_obs,
- M_main=hdict["M_main"],
- M_sub=hdict["M_sub"],
- z_merger=hdict["z_merger"],
- configs=self.configs)
- hdict["halo"] = halo
- hdict["radius_turb"] = halo.radius_turb(halo.t_merger)
- hdict["genuine"] = False
-
- halos.sort(key=lambda h: h["radius_turb"], reverse=True)
- for hdict in halos:
- halo = hdict["halo"]
- logger.info("Checking merger: %.2e & %.2e @ %.3f -> %.3f ..." %
- (halo.M_main, halo.M_sub, halo.z_merger, halo.z_obs))
- n_e = halo.calc_electron_spectrum()
- genuine, em_factor = halo.is_genuine(n_e)
- hdict["n_e"] = n_e
- hdict["genuine"] = genuine
- hdict["em_factor"] = em_factor
-
- if genuine:
- self.radius_turb_eff = hdict["radius_turb"]
- logger.info("Identified effective merger.")
- break
-
- self._halos = halos
- return self.radius_turb_eff