Source code for astrophot.models.func.sersic

from ...backend_obj import backend, ArrayLike

C1 = 4 / 405
C2 = 46 / 25515
C3 = 131 / 1148175
C4 = -2194697 / 30690717750


[docs] def sersic_n_to_b(n: float) -> float: """Compute the `b(n)` for a sersic model. This factor ensures that the $R_e$ and $I_e$ parameters do in fact correspond to the half light values and not some other scale radius/intensity. """ x = 1 / n return 2 * n - 1 / 3 + x * (C1 + x * (C2 + x * (C3 + C4 * x)))
[docs] def sersic(R: ArrayLike, n: ArrayLike, Re: ArrayLike, Ie: ArrayLike) -> ArrayLike: """Seric 1d profile function, specifically designed for pytorch operations **Args:** - `R`: Radii tensor at which to evaluate the sersic function - `n`: sersic index restricted to n > 0.36 - `Re`: Effective radius in the same units as R - `Ie`: Effective surface density """ bn = sersic_n_to_b(n) return Ie * backend.exp(-bn * ((R / Re) ** (1 / n) - 1))