Disc viscosity in Phantom
What is the Shakura-Sunyaev viscosity?
In viscous accretion disc theory (Pringle 1981), axisymmetric accretion discs evolve according to the following equation for the surface density:
where \(\Sigma\) is the surface density (mass per unit area), \(R\) is the radial coordinate (distance from the central object), and \(\nu\) is an effective viscosity coefficient (area per unit time).
Shakura and Sunyaev (1973) proposed the prescription
where \(\alpha\) is a dimensionless parameter, \(c_s\) is the sound speed, and \(H\) is the disc scale height. The idea is that the “largest eddy” would be of order the scale height and that the turbulence motions would be of order the sound speed.
In this model the mass flow onto the central object is entirely driven by the effective viscosity, which is assumed to represent some kind of underlying microscopic turbulence.
Do I need to add a disc viscosity to my disc?
Phantom is a 3D code so depending on the problem there may already be non-Keplerian motions present in your disc that will drive the accretion flow without requiring a viscosity “prescription”. Common examples are:
Discs can be gravitational unstable, driving large-scale gravitational turbulence
Accretion can be driven by anything that makes large-scale spiral arms, driven by planets, binaries, external companions, or infall from the environment
The disc may be unstable to the magnetorotational instability (MRI) if you include magnetic fields (MHD=yes)
In these cases you don’t need to add an effective viscosity, and should simply attempt to minimise the numerical viscosity in the code, by using the minimum dissipation required for shock capturing, namely:
# shock capturing
alpha = 0.000 ! MINIMUM shock viscosity parameter
alphamax = 1.000 ! MAXIMUM shock viscosity parameter
beta = 2.000 ! non-linear shock viscosity parameter
Adding Shakura-Sunyaev viscosity by modifying the shock-capturing viscosity
If you are simulating an axisymmetric disc and want the results to be independent of the resolution, you can explicitly add a disc viscosity.
The default way of including disc viscosity in SPH is to modify the shock-capturing viscosity to mimic a physical viscosity. Details are given in Lodato & Price (2010) or in the Phantom paper. The Shakura-Sunyaev alpha is related to alpha_AV according to
where \(\langle h \rangle\) is the mean smoothing length in an annulus and \(H\) is the disc scale height at that annulus.
In the .setup file for disc simulations this translation will be computed automatically:
# options for gas accretion disc
alphaSS = 0.005 ! desired alphaSS (0 for minimal needed for shock capturing)
so you enter the “alpha_SS” value here and the code will compute
the minimum “alpha_AV” value required to achieve it, and will also
set the disc_viscosity flag to true in the .in file:
# shock capturing
alpha = 0.15836804 ! MINIMUM shock viscosity parameter
alphamax = 1.000 ! MAXIMUM shock viscosity parameter
beta = 2.000 ! non-linear shock viscosity parameter
disc_viscosity = T ! use cs, multiply by h/|rij| and apply to approaching/receding
You are only guaranteed to achieve a constant alpha_SS if the ratio of \(\langle h \rangle/H\) is constant, which can be achieved by carefully choosing the temperature and density profiles of the disc (see Lodato & Price 2010).
What is the lowest alpha viscosity for a disc that Phantom can simulate?
The lowest meaningful value of alpha_AV to “feel” an imposed viscosity is 0.1 (see e.g. Figure 6 of Meru & Bate (2012); lower than this and you will get spreading independent of the value of alpha_AV due to particle jitter).
For a disc simulated with 10^6 SPH particles we typically resolve the scale height by 2-5 resolution lengths, giving h/H ~ 0.2 – 0.5.
So therefore the lowest alpha_SS you can simulate at this resolution is 2 - 5 x 10^-3. To reach a lower alpha_SS, you have to lower h/H, which means using more particles.
Further reading
Protoplanetary discs — interactive setup walkthrough