Is there an equation that describes the relationship between the mass of the Galaxy and rotation curve?

I found V versus R graphs and equations that describe their relationship (kind of). But I wonder how mass would affect the rotation curves. For instance, if the Milky Way had more mass what would be the rotation curve look like or if it had less mass etc.


If the galaxy is axisymmetric and $\Phi = \Phi(R, z)$ is the potential then

$$ v_c^2 = \left.R\frac{\partial \Phi(R, z)}{\partial R}\right|_{z = 0} $$

The trick is now in getting the potential $\Phi$. For the Milky Way you have a bunch of components

$$ \Phi = \Phi_{\rm halo, ~DM} + \Phi_{\rm disk} + \Phi_{\rm halo, \star} + \Phi_{\rm bulge} + \Phi_{\rm BH} $$

you can even include the gas disk, or the hot gas halo. Now, to answer your question: there's a relationship between mass and potential. For example, if the component is spherical (e.g. the dark halo), then

$$ \Phi(r) = -\int_r^{+\infty}{\rm d}r'\frac{G M(r')}{r'^2} $$

where $M(r)$ is the enclosed mass at a given radius

$$ M(r) = 4\pi \int_0^r{\rm d}r' r'^2 \rho(r') $$

For the disk the expression is a bit more complicated, but the idea is the same: the circular velocity depends on the gradient of the potential, which in turn depends on the enclosed mass at a given radius.

EDIT The above clearly depends on the election of the model for the components. To give you an example, consider a Hernquist Dark Matter halo with density

$$ \rho_{\rm halo,~DM} = \frac{\rho_0}{r / r_{\rm halo} (1 + r/r_{\rm halo})^3} $$

and an exponential razor-thin disk with density

$$ \Sigma_{\rm disk}(R) = \Sigma_0 e^{-R / R_{\rm disk}} $$

It is not very complicated to calculate the circular velocity for these two components

$$ v_{c, \rm halo}^2 = \frac{GM}{2R_{\rm halo}} \frac{(R / R_{\rm halo})}{(1 + R/R_{\rm halo})^2} $$


$$ v_{c, \rm disk}^2 = \frac{2 G M_{\rm disk}}{R_{\rm disk}} y^2[I_0(y) K_0(y) - I_1(y)K_1(y)] $$

with $y = R / (2 R_{\rm disk})$. The curve below shows a model with $R_{\rm disk} = 3$ kpc, $R_{\rm halo} = 30$ kpc, $M_{\rm disk} = 10^{10}~M_{\odot}$ and $M_{\rm halo} = 3\times 10^{11}~M_{\odot}$

enter image description here

These are just to give you an example of the numbers

  • $\begingroup$ But M is Dark matter mass right ? (In your potential.) Then if we sum this potential values, and take derivative etc we should get the observable rotation curve in the Milky Way ? $\endgroup$ – Reign Dec 13 '18 at 9:11
  • $\begingroup$ I am not much satisfactory, You answer tells how it depends but not exactly how it changes. like it doesnt tell me what would curve look like for different range of masses. For example if the Milky Way mass was $10^{10}$ Solar Mass what would be the V R graph. How would it be look like? To calculate that I need the potential of the all values I guess. Is there a way that I can find it (Disc, DM, Black Hole etc.)? $\endgroup$ – Reign Dec 13 '18 at 9:39
  • $\begingroup$ @ArthurMorgan I see, seems I didn't understand your question the first time. There's an update $\endgroup$ – caverac Dec 13 '18 at 10:36
  • $\begingroup$ Did you write the codes or get it from somewhere else, Is there a any chance that I can get the codes from somewhere. $\endgroup$ – Reign Dec 14 '18 at 5:08
  • $\begingroup$ @ArthurMorgan I wrote it, and it's actually not very difficult to do, which programming language are you familiar with? $\endgroup$ – caverac Dec 14 '18 at 9:17
import math
from scipy import special
import matplotlib.pyplot as plt

G = 4.302*(10**(-3)) # in Pc MS-1 (km/s)
R_halo = 30000 #in pc
M_disk = 10**10 # in solar mass
M_halo = 3*10**11 # in solar mass
R_disk = 3000 # in pc
Radius = []
Velocity = []
V_H = []
V_D = []

for R in range(1,30000,100):
    y = R/(2*R_disk)
    F = (special.iv(0, y)*special.kv(0, y))-(special.iv(1, y)*special.kv(1, y))
    v_halo = (G*M_halo*(R/R_halo)) / (2*R_halo*((1+(R/R_halo))**2))
    v_disk = ((2*G*M_disk*(y**2)*F)/R_disk)
    t = v_halo+v_disk


plt.xlabel("Radius (pc)")
plt.ylabel("Velocity (km/s)")
plt.grid(b=True, which='major', color='k', linestyle='-')
plt.grid(b=True, which='minor', color='r', linestyle='-', alpha=0.2)
  • $\begingroup$ Remove all the .tolist() calls, that doesn't do anything. And $v_c$ is added quadratically $v_c^2 = v^2_{c, {\rm halo}} + v^2_{c, {\rm disk}} $ $\endgroup$ – caverac Dec 14 '18 at 21:31
  • $\begingroup$ okay I fixed the problem. I also noticed some equation,erros in my code and fixed them. Thanks a lot for your help. It looks good now $\endgroup$ – Reign Dec 15 '18 at 6:36
  • $\begingroup$ Theres something wrong with the Halo part. It does not match with you graph $\endgroup$ – Reign Dec 15 '18 at 7:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.