{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Gravitation\n", "\n", "The gravitational force is the dominant force that shapes the structure of galaxies. So we will go through some of the basics of gravitation, and see how the concepts we learn can be applied to galaxies. Einstein's general theory of relativity represents our current best understanding of gravity. Einstein's equations:\n", "\n", "\\begin{equation*}\n", "G_{\\mu\\nu} = 8 \\pi G T_{\\mu\\nu}\\,.\n", "\\end{equation*}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The tensor $G_{\\mu\\nu}$ contains the second derivatives of the metric components, and in the weak field, small velocity limit, the deviations of the metric from the Minkowski metric come in the form of $\\Phi/c^2$. The field equations of GR were derived such that they reduce to Newtonian gravity in such a limit, and reduce to the familiar Poisson equation\n", "\n", "\\begin{equation*}\n", "\\nabla^2 \\Phi = 4 \\pi G \\rho\n", "\\end{equation*}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The mass distribution within an object can be specified by the density, $\\rho$. The solution to the above equation will then determine the potential $\\Phi$. The potential then specifies the forces that will act on test particles, and thus determine their orbits.\n", "\n", "\\begin{equation*}\n", "\\vec{F} = -m \\nabla \\Phi\n", "\\end{equation*}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The orbits of test bodies in the galactic potential are observable. Thus our goal would be to compare observations to the orbits predicted from the solutions of the Poisson equation above. Agreement would imply that the Poisson equation which is so well tested in the solar system works also on galactic scales. Disagreement could be a result of anamolous terms on either side of the Poisson equation. A change to the left hand side would imply a change in our understanding of gravity, while a change to the right hand side would imply a missing link in our understanding of matter which contributes the gravitational force." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Time scales important for dynamics \n", "\n", "Let us look at order of magnitudes of some important time scales for galactic dynamics.\n", "\n", "#### Hubble time scale: \n", "\n", "The Hubble parameter is of the order $H_0$~100 km/s/Mpc. This gives a time scale for the Universe of order 1/H0, which is close to $10^{10}$ years." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Orbital time scale:\n", "\n", "The orbital time scale can be obtained simply as,\n", "\n", "\\begin{equation}\n", "t_{\\rm orb} \\sim 2\\pi R/v_{\\rm circ}\n", "\\end{equation}\n", "\n", "The circular velocity for Milky Way flattens and reaches a value close to 200 ${\\rm kms}^{-1}$. The orbital time scale for the rotation at the position of the Sun (10 kpc) is about $10^8$ years. Thus the Milky way would make many rotations within the age of the Universe, and we can assume that it should be in dynamical equilibrium. If you compute the orbital time scales close to the edge of the dark matter halos, these come out to be comparable to the Hubble time scale, so the assumption of dynamical equilibrium may not be appropriate on those scales." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Direct collision time scale:\n", "\n", "The mean free path of particles within the galaxy can be computed as $\\lambda \\sim 1/(n\\sigma)$, where $n$ is the number density of stars and $\\sigma$ the cross section for direct collisions of stars. The collision time scales will then be given by\n", "\n", "\\begin{equation}\n", "t_{\\rm direct} \\sim \\lambda/v \\sim R^3/R_{\\odot}^2/N/v \\sim t_{\\rm orb} (R/R_{\\odot})^2/N\n", "\\end{equation}\n", "\n", "For the Milky Way, the average number density of stars in the galaxy is about 1 star per parsec cubed ($10^{11}$ stars within a disk of 10 kpc with 1 kpc thickness), and the cross section is $4 \\pi R_\\odot^2$, assuming all stars in the galaxy to be like the Sun. This mean free path then turns out to be $\\lambda \\sim 1.5\\times10^{11}$ kpc, which is orders of magnitude larger than the path length within a single orbit. With velocities of the order $100 kms^{-1}$, the collision time scale is quite large even compared to the Hubble time scale and stellar collisions within the galaxy should be exceedingly rare." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Relaxation time scale:\n", "\n", "Direct collisions are rare, but particles can change their velocities due to long range interactions. The time scale over which a particle changes its velocity by factor of order unity is called the relaxation time scale. The effect of an encounter of a particle with another particle of mass m with an impact parameter b and moving with velocity v is to change its velocity by\n", "\n", "\\begin{equation}\n", "\\Delta v_\\perp \\sim 2Gm/(bv)\n", "\\end{equation}\n", "\n", "The particle will encounter all sort of impact parameters during its motion through the galaxy. The number of impacts between $b\\pm db$ will be $2 \\pi b db N/(\\pi R^2)$. Thus the cumulative kicks it will gather within an orbital time will be\n", "\n", "\\begin{eqnarray}\n", "|\\Delta v_\\perp^2| &=& \\int_{R_{\\rm min}}^{R} \\left(\\frac{2Gm}{bv}\\right)^2 \\frac{2 \\pi b db N}{\\pi R^2} \\,\n", "&=& \\left(\\frac{2Gm}{v}\\right)^2 2 \\ln \\left(\\frac{R}{R_{\\rm min}}\\right) \\frac{N}{R^2} \\,\n", "\\end{eqnarray}\n", "\n", "The value of $R_{\\rm min}$ \n", "\n", "\\begin{equation}\n", "R_{\\rm min} \\sim \\frac{2Gm}{v^2} \\sim \\frac{2GM}{v^2N} \\sim \\frac{R}{N}\n", "\\end{equation}\n", "\n", "would determine the scale where the velocity kicks become comparable directly to the typical velocity. Thus, within one orbital time through the galaxy, the velocity kicks will accumulate energy proportional to\n", "\n", "\\begin{equation}\n", "|\\Delta v_\\perp^2| = \\left(\\frac{2GM}{v}\\right)^2 2 \\frac{\\ln N}{N} \\frac{1}{R^2} = \\left(\\frac{GM}{v}\\right)^2 8 \\frac{\\ln N}{N} \\frac{1}{R^2}\n", "\\end{equation}\n", "\n", "Equating these to the energy of the particle per mass, we get a value for the relaxation time\n", "\n", "\\begin{equation}\n", "t_{\\rm relax} \\sim \\frac{R}{v} \\frac{v^2}{|\\Delta v_\\perp^2|} \\sim \\frac{R}{v} \\frac{v^2}{\\left(\\frac{GM}{v}\\right)^2 8 \\frac{\\ln N}{N} \\frac{1}{R^2} } \\sim t_{\\rm orb} \\left[\\frac{N}{8\\ln N}\\right]\n", "\\end{equation}\n", "\n", "For a system with size of the Milky way, $N \\sim 10^{11}$, which corresponds to about $10^{17}$ years!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Close encounter time scale\n", "\n", "The close encounter time scale can be obtained by putting $R_{\\rm min}$ instead of $R_{\\odot}$ in the direct collision time scale.\n", "\n", "\\begin{equation}\n", "t_{\\rm close} \\sim t_{\\rm orb} (R/R_{\\rm min})^2/N \\sim N t_{\\rm orb}\\,.\n", "\\end{equation}\n", "\n", "For a system of size of the Milky way, this time scale is close to $10^{19}$ years, even larger than the relaxation time scale." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Velocity: 207.3499457439042 km/s\n", "Orbital timescale: 0.09431398657877353 Gyr\n", "Hubble timescale: 13.968571428571428 Gyr\n", "Relaxation timescale: 46545504.47438488 Gyr\n", "Close interaction timescale: 9431398657.877354 Gyr\n", "Direct collision timescale: 185508302266.48767 Gyr\n", "==========================\n", "Velocity: 2.0734994574390413 km/s\n", "Orbital timescale: 0.009431398657877356 Gyr\n", "Hubble timescale: 13.968571428571428 Gyr\n", "Relaxation timescale: 1.2800013730455844 Gyr\n", "Close interaction timescale: 94.31398657877355 Gyr\n", "Direct collision timescale: 185508302266.4878 Gyr\n", "==========================\n", "Velocity: 655.6981012630737 km/s\n", "Orbital timescale: 2.9824701279947594 Gyr\n", "Hubble timescale: 13.968571428571428 Gyr\n", "Relaxation timescale: 53.96959662622539 Gyr\n", "Close interaction timescale: 2982.4701279947594 Gyr\n", "Direct collision timescale: 29.824701279947593 Gyr\n", "==========================\n", "Velocity: 119.71354699169737 km/s\n", "Orbital timescale: 4.900698498564149 Gyr\n", "Hubble timescale: 13.968571428571428 Gyr\n", "Relaxation timescale: 1.209287679203387e+20 Gyr\n", "Close interaction timescale: 4.900698498564149e+22 Gyr\n", "Direct collision timescale: 4.2015590694137074e+36 Gyr\n", "==========================\n" ] } ], "source": [ "import numpy as np\n", "\n", "class timescales:\n", " def __init__(self, N, mass, radius, Rmin, H0):\n", " self.gee = 4.2994e-9\n", " \n", " # Unitless\n", " self.N = N\n", " \n", " # In Msun\n", " self.mass = mass\n", " \n", " # In Mpc\n", " self.radius = radius\n", " \n", " # In km/s/Mpc\n", " self.H0 = H0\n", " \n", " # Mpc s/km in Gyr\n", " self.Mpc_s_by_km_to_year = 9.778e2\n", " \n", " # Rmin\n", " self.Rmin = Rmin\n", "\n", " # velocity\n", " self.v = np.sqrt(self.gee*self.mass/self.radius)\n", " print(\"Velocity:\", self.v, \"km/s\")\n", " \n", " print(\"Orbital timescale:\", self.torb(), \"Gyr\")\n", " print(\"Hubble timescale:\", self.tHubble(), \"Gyr\")\n", " print(\"Relaxation timescale:\", self.trelax(), \"Gyr\")\n", " print(\"Close interaction timescale:\", self.tclose(), \"Gyr\")\n", " print(\"Direct collision timescale:\", self.tdirect(), \"Gyr\")\n", " print (\"==========================\")\n", "\n", " def tHubble(self):\n", " # Return in Gyr \n", " return 1/self.H0 * self.Mpc_s_by_km_to_year\n", " \n", " def torb(self):\n", " # Return in Gyr \n", " return 2*self.radius/self.v * self.Mpc_s_by_km_to_year\n", " \n", " def tdirect(self):\n", " # Return in Gyr, assumes the radius to be Rsun\n", " return self.torb()*(self.radius/self.Rmin)**2/self.N\n", " \n", " def tclose(self):\n", " # Return in Gyr \n", " return self.torb()*self.N\n", " \n", " def trelax(self):\n", " # Return in Gyr \n", " return self.torb()*self.N/8/np.log(self.N)\n", "\n", "Rsun_to_Mpc = 1./4.435e13\n", "mwbaryons = timescales(1e11, 1e11, 0.01, Rsun_to_Mpc, 70.0)\n", "globular = timescales(1e4, 1e4, 1e-5, Rsun_to_Mpc, 70.0)\n", "cluster = timescales(1e3, 1e14, 1, 0.010, 70.0)\n", "\n", "# Mass of dark matter particle assuming primordial black holes\n", "mdm = 1e-10\n", " \n", "# Interaction cross section of about 1 cm^2/gm\n", "rdm = (1*mdm)**0.5*3.24e-25\n", " \n", "mwdmhalo = timescales(1e22, 1e12, 0.3, rdm, 70.0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Given the long range nature of gravity, one has to compute the potentials by summing over all the other stars. Since the number of stars in a galaxy are quite big, one can consider smooth potentials instead of discrete summation over all the stars.\n", "\n", "Our goal in galactic dynamics is to use kinematic observables to understand the density distribution in galaxies. The observables we have is the light coming from galaxies projected on the plane of the sky, and the line of sight velocity at pixelated locations of the galaxy. From these we need to construct the density distribution of the galaxy. The only way forward is to forward model the system. Make an ansatz about the density distribution in the galaxy, obtain the projected light distribution assuming a mass to light ratio. Obtain the potential corresponding to the density distribution. Construct orbits in this potential. Give appropriate weights to orbits and see if they can reconstruct the density distribution.\n", "\n", "This goal is quite hefty, so let us start with something very simple to begin with. Galaxies show a variety of symmetries, we will solve the Poisson equation for simpler symmetric density fields. We will start of with simple spherically symmetric mass distributions, and slowly work our way towards more complicated distributions." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Density potential pairs:\n", "\n", "### Point mass distribution\n", "\n", "Let us consider the simple case of the point mass distribution. Let us choose our coordinate system such that the mass is located at the origin ($\\rho(\\vec{r}) = M\\delta(\\vec{r})$). We seek solutions of the Poisson equation for this density distribution.\n", "\n", "One can show that the function $\\nabla^2 |\\vec{r}|^{-1}$ is zero for all $|\\vec{r}|\\ne 0$. To compute its value at $\\vec{r}=0$, one can consider a small sphere centered at the origin with radius $R$. The integral\n", "\n", "\\begin{equation*}\n", "\\int_{V} \\nabla.\\nabla \\frac{1}{|\\vec{r}|} dV = \\int_{S} \\nabla \\frac{1}{|\\vec{r}|} . d\\vec{A} = -4 \\pi\n", "\\end{equation*}\n", "\n", "This implies we can write $\\nabla^2 |\\vec{r}|^{-1}= -4\\pi \\delta(\\vec{r})$, and therefore\n", "\n", "\\begin{equation*}\n", "\\Phi = -\\frac{GM}{|\\vec{r}|}\n", "\\end{equation*}\n", "\n", "is indeed a solution of the Poisson's equation for a delta function density. These two functions $\\left[M\\delta(\\vec{r}), -GM|\\vec{r}|^{-1}\\right]$ form a potential and density pair which satisfies the Poisson equation.\n", "\n", "The force is just the gradient of the potential, and thus is given by\n", "\n", "\\begin{equation*}\n", "F(\\vec{r}) = -\\nabla \\Phi = -\\frac{GM}{|\\vec{r}|^3}\\vec{r}\n", "\\end{equation*}\n", "\n", "It is also easy to see that if there are two potential density pairs then any linear combination of the two will also form potential density pair. This makes some of the analytical potential density pairs quite useful to study." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For a generic mass distribution $\\rho(\\vec{r})$ we should be able to show that\n", "\n", "\\begin{equation*}\n", "\\Phi(\\vec{r}) = -\\int \\frac{G\\, \\rho(\\vec{r'})\\, d^3\\vec{r'}}{\\left|\\vec{r}-\\vec{r'}\\right|}\n", "\\end{equation*}\n", "\n", "A lot of things get simplified for spherically symmetric mass distribution which help us to quickly compute the potentials. The Newton's theorems make it easier to compute these quantities." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Newton's theorems\n", "\n", "#### Newton's first theorem\n", "\n", "A spherical shell of matter does not exert any gravitational force on bodies that lie anywhere inside (the gravitational potential inside the shell of a given radius is constant).\n", "\n", "#### Newton's second theorem\n", "\n", "The gravitational force on a body lying outside a spherical shell of matter with mass $M$ is the same as the force exerted due to mass $M$ lying at the center of the shell.\n", "\n", "These theorems are easiest to prove using the Poisson equation integrated over suitable volumes. They also provide a useful way to compute the potentials when combined with the result for the point mass potential above. For a spherical shell of matter with radius $R$ centered at the origin, we can therefore write down,\n", "\n", "\\begin{equation}\n", "\\Phi(\\vec{r}) = -\\frac{GM}{|\\vec{r}|} \\,\\,\\,\\,\\, \\forall \\,\\, r \\geq R\n", "\\end{equation}\n", "\n", "\n", "\\begin{equation}\n", "\\Phi(\\vec{r}) = -\\frac{GM}{R} \\,\\,\\,\\,\\, \\forall \\,\\, r \\leq R\n", "\\end{equation}\n", "\n", "We can plot the gravitational potential due to such a shell." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n", "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "import pylab as pl\n", "%pylab inline\n", "conf = %config InlineBackend.rc\n", "conf['figure.figsize'] = (6, 6)\n", "conf['savefig.dpi']=100\n", "conf['font.serif'] = \"Computer Modern\"\n", "conf['font.sans-serif'] = \"Computer Modern\"\n", "conf['text.usetex']=True\n", "\n", "%config InlineBackend.rc\n", "%pylab inline" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "class shell:\n", " def __init__(self, M, R):\n", " self.Rshell = R\n", " self.Mass = M\n", " # Put gravitational constant * mass of the sun /(km/s)^2 /Mpc in google search!\n", " # What are the units of this constant?\n", " self.gee = 4.3022e-9\n", "\n", " def potential(self, r):\n", " if np.isscalar(r):\n", " r = np.array([r])\n", " pot = r * 0.0\n", " idx = r" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "class Kuzmindisk:\n", " def __init__(self, mass, a):\n", " self.mass = mass\n", " self.a = a\n", " self.gee = 4.2994e-9\n", " \n", " def vcirc(self, R):\n", " return np.sqrt(self.gee*self.mass*R**2/(R**2+self.a**2)**(3./2.))\n", " \n", " def mass_within_R(self, R):\n", " return -self.mass*self.a*(1/(R**2+self.a**2)**(1./2.)-1/self.a)\n", " \n", " def vcirc_mass_within_R(self, R):\n", " return sqrt(self.gee*self.mass_within_R(R)/R)\n", "\n", "# 10^11 Msun disk with radius 10 kpc\n", "aa = Kuzmindisk(1e11, 0.010)\n", "RR = np.logspace(-3, np.log10(0.060), 100)\n", "\n", "ax = pl.subplot(111)\n", "plot(RR/0.010, aa.vcirc(RR))\n", "plot(RR/0.010, aa.vcirc_mass_within_R(RR))\n", "ax.set_xlabel(\"R/a\")\n", "ax.set_ylabel(r\"$v_{\\rm c}$ [km$s^{-1}$]\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Miyamoto-Nagai disk model\n", "\n", "The density potential pair of Kuzmin can be generalized to thicker disks by considering the potential (Miyamoto and Nagai 1975)\n", "\n", "\\begin{equation}\n", "\\Phi_{\\rm M}(R, z) = -\\frac{GM}{\\sqrt{R^2+(a+\\sqrt{z^2+b^2})^2}} \\,.\n", "\\end{equation}\n", "\n", "Depending upon the magnitude of $a$ compared to $b$, one can get a spherical or a highly flattened system. One can obtain the density distribution corresponding to this potential via the Poisson equation and it turns out to be\n", "\n", "\\begin{equation}\n", "\\rho_{\\rm M}(R, z) = \\left(\\frac{b^2M}{4\\pi}\\right) \\frac{aR^2+\\left(a+3\\sqrt{z^2+b^2}\\right)\\left(a+\\sqrt{z^2+b^2}\\right)^2}{\\left[ R^2+\\left(a+\\sqrt{z^2+b^2}\\right)^2\\right]^{5/2}\\left(z^2+b^2\\right)^{3/2}}\n", "\\end{equation}\n", "\n", "### General azimuthally symmetric distributions\n", "\n", "There are different ways to approach the problem of general azimuthally symmetric distributions. One approach for obtaining potential density pairs for azimuthally symmetric distributions is by considering oblate distributions, and taking the limit where the non-equal axis becomes very thin. \n", "\n", "Another approach is by directly performing the integral over the density distribution to get to the potential. This involves elliptical integrals.\n", "\n", "One can also approach the problem by obtaining solutions to the Poisson equation for a thin disk away from the disk, this approach involves Bessel functions and Hankel transforms. Let us take a brief look at this approach." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Bessel function approach\n", "\n", "For an axially symmetric system, the Poisson equation far away from the disk reduces to\n", "\n", "\\begin{eqnarray}\n", "0 = \\nabla^2\\phi &=& \\frac{1}{R}\\frac{\\partial }{\\partial R} \\left(R\\frac{\\partial \\Phi}{\\partial R}\\right) + \\frac{1}{R^2}\\frac{\\partial^2}{\\partial \\phi^2} \\Phi + \\frac{\\partial^2 \\Phi}{\\partial z^2}\\\\\n", "&=& \\frac{1}{R}\\frac{\\partial }{\\partial R} \\left(R\\frac{\\partial \\Phi}{\\partial R}\\right) + \\frac{\\partial^2 \\Phi}{\\partial z^2}\n", "\\end{eqnarray}\n", "\n", "where the second term in the first equation above for the Laplacian is zero due to axial symmetry. Given that the two terms in the following equation are independent, we can solve this equation using separation of variables. Defining $\\Phi(R, z) = P(R)Q(z)$, we obtain\n", "\n", "\\begin{equation}\n", "\\frac{1}{P(R)R}\\frac{d}{dR}\\left( R\\frac{dP}{dR}\\right) = -\\frac{1}{Q(z)} \\frac{d^2Q}{dz^2}\n", "\\end{equation}\n", "\n", "Given that the LHS is independent of $z$ while the RHS is independent of $R$, the above expressions can only be equal if they were equal to a constant. We can set both equal to -$k^2$. For the z component, we have\n", "\n", "\\begin{equation}\n", "\\frac{1}{Q(z)} \\frac{d^2Q}{dz^2} = k^2 \\,,\n", "\\end{equation}\n", "\n", "which has the solution\n", "\n", "\\begin{equation}\n", "Q(z) = Q_0 \\exp(\\pm kz)\n", "\\end{equation}\n", "\n", "If $k$ is complex, this can result in oscillatory behaviour as $z\\rightarrow \\infty$. Thus physical solutions which would require $Q\\rightarrow 0$ as $z\\rightarrow \\infty$, demand $k \\gt 0$, with a minus sign in the above expression for $z\\gt 0$. For $z\\lt 0$, we would require the positive sign with $k\\gt 0$.\n", "\n", "The other equation,\n", "\n", "\\begin{equation}\n", "\\frac{1}{R}\\frac{d}{dR}\\left( R\\frac{dP}{dR}\\right) = -k^2 P(R)\n", "\\end{equation}\n", "\n", "The solution to this equation is the Bessel's function of the first kind $J_{\\rm \\alpha}(kR)$, with $\\alpha=0$.\n", "\n", "Thus,\n", "\n", "\\begin{equation}\n", "\\Phi(R, z) = \\exp\\left(-k|z|\\right) J_0(kR)\n", "\\end{equation}\n", "\n", "for positive $k$ is a solution to the Poisson equation $\\nabla^2\\Phi=0$. Now these solutions solve the Poisson equation for all $z\\neq 0$. The discontinuity at $z=0$ helps to obtain the surface density of the disk, by performing a volume integral over a small cylinder straddling $z=0$. \n", "\n", "\\begin{equation}\n", "\\Sigma_k(R) = -\\frac{k}{2\\pi G} J_0(kR)\n", "\\end{equation}\n", "\n", "Given that solutions to the Poisson equation can be added up to obtain new solutions, it is clear that a givne surface density $\\Sigma(R)$ could be decomposed in to functions made of the above basis.\n", "\n", "\\begin{equation}\n", "\\Sigma(R) = -\\int \\tilde\\Sigma(k) \\frac{k}{2\\pi G} J_0(kR) dk\\,.\n", "\\end{equation}\n", "\n", "and then use an integral over k of the Bessel functions to obtain the potential $\\Phi(R, z)$,\n", "\n", "\\begin{equation}\n", "\\Phi(R, z) = \\int \\tilde\\Sigma(k) J_0(kR)\\exp(-k|z|) dk\n", "\\end{equation}\n", "\n", "Inverting the equation for $\\Sigma(R)$ gives\n", "\n", "\\begin{equation}\n", "\\Sigma(k) = -2\\pi G \\int \\Sigma(R) R J_0(kR) dR\\,.\n", "\\end{equation}\n", "\n", "\n", "Substituting in the equation for the potential we finally obtain\n", "\n", "\\begin{equation}\n", "\\Phi(R, z) = -2 \\pi G \\int \\int \\Sigma(R') R' J_0(kR') dR' J_0(kR)\\exp(-k|z|) dk\\,.\n", "\\end{equation}\n", "\n", "The circular velocity in the mid-plane can be obtained by using\n", "\n", "\\begin{equation}\n", "v_{\\rm c}^2(R) = -R \\left.\\frac{d\\Phi(R,z)}{dR}\\right|_{z=0}\\,.\n", "\\end{equation}\n", "\n", "The derivative $dJ_0(x)/dx$ equals $-J_1(x)$, which implies\n", "\n", "\\begin{equation}\n", "v_{\\rm c}^2(R) = -R \\int_0^\\infty \\tilde\\Sigma(k) J_1(kR) k dk\\,.\n", "\\end{equation}\n", "\n", "This equation can in principle be inverted in order to obtain $\\tilde \\Sigma(k)$ and thus $\\Sigma(R)$. This route involves usage of the derivatives of $v_{\\rm c}^2(R)$ with respect to $R$, which could potentially be obtained observationally. However the propagation of errors in the measurement of $v_{\\rm c}^2(R)$ to the derivatives of $v_c^2(R)$ is quite cumbersome, and hence it is better to just use a model for $\\Sigma(R)$, compute $\\Sigma(k)$ and fit to $v_{c}^2(R)$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Vertical structure of the potential of infinitesimally thin disks\n", "\n", "The Poisson equation in cylindrical coordinate system is \n", "\n", "\\begin{equation}\n", "\\frac{\\partial^2\\Phi}{\\partial z^2} + \\frac{1}{R}\\frac{\\partial}{\\partial R}\\left[ R \\frac{\\partial \\Phi}{\\partial R}\\right] = 4\\pi G\\rho(R, z)\\,.\n", "\\end{equation}\n", "\n", "The second term on the left hand size is finite irrespective of the thickness of the disk, while the first term can grow up as we consider infinitesimally thin systems. This equation helps to approximately compute the potential of disks given their density distribution. First approximate the disk as thin, and compute the radial variation of the potential. Then we can use the equation to compute the variation of the potential in the z direction.\n", "\n", "\\begin{equation}\n", "\\frac{\\partial^2\\Phi}{\\partial z^2} = 4\\pi G\\rho(R, z)\\,.\n", "\\end{equation}" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.6" } }, "nbformat": 4, "nbformat_minor": 2 }