model_sersic3d.py | model_sersic3d.py | |||
---|---|---|---|---|
# -*- coding: utf-8 -*- | # -*- coding: utf-8 -*- | |||
import numpy as np | import numpy as np | |||
try: | ||||
import math | ||||
except: | ||||
import numpy.math as math | ||||
from scipy import special | from scipy import special | |||
from astropy.io import fits | from astropy.io import fits | |||
from copy import deepcopy | from copy import deepcopy | |||
try: | try: | |||
import bottleneck as bn | import bottleneck as bn | |||
except ImportError: | except ImportError: | |||
import numpy as bn | import numpy as bn | |||
from .galaxy_parameters import GalaxyParameters | from .galaxy_parameters import GalaxyParameters | |||
from .model_utilities import modelPlots, ModelExt | from .model_utilities import modelPlots, ModelExt | |||
skipping to change at line 304 | skipping to change at line 309 | |||
v_profile = max_vel * np.sqrt(v_sq) | v_profile = max_vel * np.sqrt(v_sq) | |||
elif self.rotation_curve == 'mass': | elif self.rotation_curve == 'mass': | |||
v_profile = self._fv_newton(radius_cube, galaxy['radius'], max_ vel) | v_profile = self._fv_newton(radius_cube, galaxy['radius'], max_ vel) | |||
elif self.rotation_curve == 'Freeman': | elif self.rotation_curve == 'Freeman': | |||
#Using Freeman disk. Vmax = V2.2 | #Using Freeman disk. Vmax = V2.2 | |||
v_sq = self._v_disk_sq(galaxy, radius_cube) | v_sq = self._v_disk_sq(galaxy, radius_cube) | |||
v_profile = np.sqrt(v_sq) | v_profile = np.sqrt(v_sq) | |||
elif self.rotation_curve == 'Spano': | elif self.rotation_curve == 'Spano': | |||
# From Spano et al. 2008: https://doi.org/10.1111/j.1365-2966.2 007.12545.x | # From Spano et al. 2008: https://doi.org/10.1111/j.1365-2966.2 007.12545.x | |||
# and Hernandez-Hernandez et al. 2019 https://doi.org/10.1093/m nras/stz1969 | # and Hernandez-Hernandez et al. 2019 https://doi.org/10.1093/m nras/stz1969 | |||
v_sq = 1/x * np.vectorize(np.math.asinh)(x) - 1. / (1+x**2) | v_sq = 1/x * np.vectorize(math.asinh)(x) - 1. / (1+x**2) | |||
v_profile = max_vel * np.sqrt(v_sq) | v_profile = max_vel * np.sqrt(v_sq) | |||
else: | else: | |||
raise NotImplementedError("Rotational Curve not supported. Shou ld be '%s' " % | raise NotImplementedError("Rotational Curve not supported. Shou ld be '%s' " % | |||
self.CURVE_VALID) | self.CURVE_VALID) | |||
return v_profile | return v_profile | |||
#Private methods | #Private methods | |||
def _v_disk_sq(self, parameters, radius): | def _v_disk_sq(self, parameters, radius): | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 6 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |