\section{ANARCHY-SPH}
\label{sec:sph:anarchy}

This section is loosely based on Dalla Vecchia (\textit{in prep.}), also described in section 2.2.2 of
\cite{Schaller2015}.\\

The version of ANARCHY that is currently implemented in \swift{} is based on the Pressure-Energy
(P-U) SPH scheme, rather than the original Pressure-Entropy. This was chosen to make the
implementation of sub-grid physics easier, as well as injection of energy more accurate as
no iteration of the entropy-energy relation is required.

ANARCH SPH comprises of:
\begin{itemize}
	\item Pressure-Energy SPH
	\item \citet[][, henceforth C\&D]{cullen2010} variable artificial viscosity
	\item A basic thermal diffusion term
	\item The time-step limiter from \citet{durier2012}.
\end{itemize}

\subsection{Equations of Motion}

The following smoothed quantities are required, and are calculated in the density loop:
\begin{itemize}
	\item $\rho_i = [h_i^{-n_d}]\sum_j m_j w_{i}$
	\item $(d\rho/dh)_i = - [h_i^{-n_d - 1}]\sum_j m_j ( n_d * w_i + x_i \nabla_i w_i)$
	\item $\bar{P}_i = [(\gamma - 1)h_i^{-n_d}]\sum_j m_j u_j w_{i}$
	\item $(d\bar{P}/dh)_i = - [(\gamma - 1)h_i^{-n_d - 1}]\sum_j m_j u_j ( n_d * w_i + x_i \nabla_i w_i)$
	\item $n_i = [h_i^{-n_d}]\sum_j w_{i}$
	\item $(dn/dh)_i = - [h_i^{-n_d - 1}]\sum_j ( n_d * w_i + x_i \nabla_i w_i)$
	\item $(\nabla \cdot \mathbf{v})_i = - [a^{-2} \rho_i^{-1} h^{-n_d - 1}]\sum_j m_j \mathbf{v}_{ij} \cdot \tilde{\mathbf{x}}_{ij} \nabla_i w_i$
	% Think the cosmo factor entering here is wrong...
	\item $(\nabla \times \mathbf{v})_i = - [a^{-2} \rho_i^{-1} h^{-n_d - 1} + Hn_d]\sum_j m_j \mathbf{v}_{ij} \times \tilde{\mathbf{x}}_{ij} \nabla_i w_i$
\end{itemize}
with quantities in square brackets added in {\tt hydro\_end\_density} and:
\begin{itemize}
	\item $h_i$ the smoothing length of particle $i$
	\item $n_d$ the number of hydro dimensions
	\item $m_j$ the mass of particle $j$
	\item $w_{i}$ the dimensionless kernel evalulated at $x_i = r / h_i$
	\item $r$ the interparticle separation of particles $i$ and $j$
	\item $u_i$ the internal energy of the particle
	\item $\gamma$ the ratio of specific heats
	\item $\mathbf{v}_{ij}$ the difference between the velocities of particle $i$ and $j$
	\item $\tilde{\mathbf{x}}_{ij}$ the unit vector connecting particles $i$ and $j$
	\item $a$ the current scale factor
	\item $H$ the current Hubble constant
\end{itemize}

The ANARCHY scheme requires a gradient loop, as intermediate smoothed quantities are required
for the artificial viscosity and diffusion schemes. The following quatntities are calculated:
\begin{itemize}
	\item $v_{{\rm sig}, i} = \rm{max}(v_{\rm sig}, c_i + c_j - 3\mathbf{v}_{ij} \cdot \tilde{\mathbf{x}}_{ij})$
	\item $\nabla^2 u_i = [2]\sum_j m_j \frac{u_i - u_j}{\rho_j} \frac{\nabla_i W_i}{r_{ij}}$
\end{itemize}
with quantities in square brackets added in {\tt hydro\_end\_gradient} and:
\begin{itemize}
	\item $v_{\rm sig}$ the siginal velocity	
	\item $c_i$ the sound speed of particle $i$
\end{itemize}

In {\tt hydro\_prepare\_force}, the differential equations for the viscosity and
diffusion schemes are integrated as follows. This includes some logic, so it is
split into viscosity:
\begin{itemize}
	\item $\tau_i = h_i / (2 v_{{\rm sig}, i} \ell$
	\item $\dot{\nabla \cdot \mathbf{v}_i} =
	       \left({\nabla \cdot \mathbf{v}_i}(t+dt) - {\nabla \cdot \mathbf{v}_i}(t)\right)
	       / dt$
	\item $S_i = h_i^2 {\rm max}(0, -\dot{\nabla \cdot \mathbf{v}_i})$
	\item $\alpha_{{\rm loc}, i} = \alpha_{\rm max} S_i / (S_i + v_{{\rm sig}, i}^2)$.
\end{itemize}
and diffusion:
\begin{itemize}
	\item $\dot{\tilde{\alpha}}_i = \beta h_i \frac{\nabla^2 u_i}{\sqrt{u_i}}$
\end{itemize}
where:
\begin{itemize}
	\item $\alpha_i$ is the viscosity coefficient
	\item $\tilde{\alpha}_i$ is the diffusion coefficient
	\item $\tau_i$ is the timescale for decay
	\item $\ell$ is the viscosity length coefficient
	\item $\beta$ is the diffusion length coefficient
\end{itemize}
The equations are then integrated as follows for viscosity:
\begin{enumerate}
	\item If $\alpha_{\rm loc} > \alpha_i$, update $\alpha_i$ to $\alpha_{\rm loc}$
	      immediately.
	\item Otherwise, decay the viscosity, with $\dot{\alpha}_i = (\alpha_{\rm loc} - \alpha_i) / \tau_i$.
	      This equation is integrated with the same time-step as the velocity divergence derivative
	      uses, and is the same time-step used for the cooling.
	\item Finally, if $\alpha_i < \alpha_{\rm min}$, $\alpha_i$ is reset to that minimal
	      value.
\end{enumerate}
and for diffusion:
\begin{enumerate}
	\item First, find the new diffusion coefficient, $\tilde{\alpha}_i(t+dt) = 
	      \tilde{\alpha}_i(t) + \dot{\tilde{\alpha}}_i \cdot dt$, using the
	      same time-step as for the viscosity.
	\item If this is outside of the bounds set for the coefficient, set it
	      to the respective upper or lower bound.
\end{enumerate}
The final force loop calculates the equations of motion for the particles ready for
their time-integration. The following quantities are calculated:
\begin{itemize}
	\item $\mathbf{a}_{\rm hydro} = -\sum_j m_j u_i u_j (\gamma - 1)^2 \left(
	       \frac{f_{ij}}{\bar{P}_i} \nabla_i W_i + \frac{f_{ji}}{\bar{P}_j} \nabla_j W_j\right)$
	\item $\mathbf{a}_{\rm visc} = - \frac{1}{8}\sum_j (\alpha_i + \alpha_j) v_{{\rm sig}, i}
	       \mu_{ij} (b_i + b_j) (\nabla_i W_i + \nabla_j W_j)/ (\rho_i + \rho_j)$
	\item $\dot{u}_{ij, {\rm hydro}} = \sum_j m_j u_i u_j (\gamma - 1)^2
	       \frac{f_{ij}}{\bar{P}_i} \nabla_i W_i$
	\item $\dot{u}_{ij, {\rm visc}} = \frac{1}{2} \a_{\rm visc} (\mathbf{v}_{ij} \cdot \tilde{\mathbf{x}}_{ij} + r^2a^2 H)$
	\item $v_{{\rm diff}, i} = {\rm max}(0, c_i + c_j + \mathbf{v}_{ij} \cdot \tilde{\mathbf{x}}_{ij} + r^2a^2 H)$
	\item $\dot{u}_{ij, {\rm diff}} = \frac{1}{2}(\tilde{\alpha}_i + \tilde{\alpha}_j) a^{(3\gamma - 5)/2)}
	       v_{{\rm diff}, i} (u_i - u_j) (\nabla_i W_i + \nabla_j W_j)/ (\rho_i + \rho_j) $
	\item $\dot{u}_i = \sum_j \dot{u}_{ij, {\rm hydro}} +  \dot{u}_{ij, {\rm visc}} + \dot{u}_{ij, {\rm diff}}$
\end{itemize}
where:
\begin{itemize}
	\item $f_{ij}$ are the variable smoothing length correction factors
	\item $b_i$ is the Balsara switch for particle $i$
	\item $\mu_{ij} = a^{(3\gamma - 5)/2) {\rm min}(\mathbf{v}_{ij} \cdot \tilde{\mathbf{x}}_{ij} + r^2a^2 H, 0)$
\end{itemize}

