From 7999e74388e1760f95420e1886efe32cf3ec6516 Mon Sep 17 00:00:00 2001 From: Aaron LI Date: Wed, 25 Oct 2017 21:02:32 +0800 Subject: clusters/solver: Update buffer_np description and handling --- fg21sim/extragalactic/clusters/halo.py | 2 ++ fg21sim/extragalactic/clusters/solver.py | 13 +++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) (limited to 'fg21sim') diff --git a/fg21sim/extragalactic/clusters/halo.py b/fg21sim/extragalactic/clusters/halo.py index 281093d..6b91f7f 100644 --- a/fg21sim/extragalactic/clusters/halo.py +++ b/fg21sim/extragalactic/clusters/halo.py @@ -149,6 +149,8 @@ class RadioHalo: self.gamma_max = self.configs.getn(comp+"/gamma_max") self.gamma_np = self.configs.getn(comp+"/gamma_np") self.buffer_np = self.configs.getn(comp+"/buffer_np") + if self.buffer_np == 0: + self.buffer_np = None self.time_step = self.configs.getn(comp+"/time_step") self.time_init = self.configs.getn(comp+"/time_init") self.injection_index = self.configs.getn(comp+"/injection_index") diff --git a/fg21sim/extragalactic/clusters/solver.py b/fg21sim/extragalactic/clusters/solver.py index 52e07c7..ad5c320 100644 --- a/fg21sim/extragalactic/clusters/solver.py +++ b/fg21sim/extragalactic/clusters/solver.py @@ -109,10 +109,12 @@ class FokkerPlanckSolver: f_escape : function, optional Function f(x,t) to calculate the escape coefficient T(x,t) buffer_np : int, optional - Number of grid points taking as the buffer region near the lower - boundary. The densities within this buffer region will be replaced - by extrapolating an power law to avoid unphysical accumulations. - This fix is ignored if this parameter is not specified. + Number of grid cells taken as the buffer regions near both the + lower and upper boundaries. The values within the buffer regions + will be replaced by extrapolating with a power law to avoid + unphysical pile-ups. + The fix will be ignored if this parameter is ``None`` or is less + than 2. (This parameter is suggested to be about 5%-10% of ``x_np``.) NOTE @@ -142,6 +144,9 @@ class FokkerPlanckSolver: self.f_injection = f_injection self.f_escape = f_escape self.buffer_np = buffer_np + if (buffer_np is not None) and (buffer_np < 2): + logger.warning("buffer_np set but < 2; disable boundary fixes!") + self.buffer_np = None @property def x(self): -- cgit v1.2.2