\subsection{Derviation of the GIZMO equations} For GIZMO and other finite volume/mass schemes, the equations of motion can no longer be derived from a Lagrangian. Instead, we have to explicitly transform the Euler equations to comoving coordinates and variables. In a physical coordinate frame, these equations are \begin{align} \frac{\partial{}\rho{}}{\partial{}t} + \nabla{} \cdot \left(\rho{} \mathbf{v}_{\rm tot} \right) &= 0, \\ \frac{\partial{} \rho{} \mathbf{v}_{\rm tot} }{\partial{} t} + \nabla{} \cdot \left( \rho{} \mathbf{v}_{\rm tot} \mathbf{v}_{\rm tot} + P \mathbb{1} \right) &= 0. \end{align} \begin{multline} \frac{\partial{}}{\partial{} t} \left( \rho{} u + \frac{1}{2} \rho{} \mathbf{v}_{\rm{} tot}\cdot\mathbf{v}_{\rm{} tot} \right) +\\ \nabla{} \cdot \left( \rho{} u \mathbf{v}_{\rm{} tot} + \frac{1}{2} \rho{} \left(\mathbf{v}_{\rm{} tot} \cdot \mathbf{v}_{\rm{} tot}\right) \mathbf{v}_{\rm{} tot} + P \mathbf{v}_{\rm{} tot} \right) = 0, \end{multline} where $\mathbb{1}$ is the unit tensor. For simplicity, we will rewrite the last two equations in terms of the quantities $\mathbf{v}_{\rm{} tot}$ and $u$: \begin{align} \frac{\partial{} \mathbf{v}_{\rm{} tot}}{\partial{} t} + \left(\mathbf{v}_{\rm{} tot} \cdot \nabla{} \right) \mathbf{v}_{\rm{} tot} + \frac{1}{\rho{}}\nabla{} P &= 0,\\ \frac{\partial{} u}{\partial{} t} + \left(\mathbf{v}_{\rm{} tot} \cdot \nabla{} \right) u + \frac{P}{\rho{}} \nabla{} \cdot \mathbf{v}_{\rm{} tot} &= 0. \end{align} To convert to comoving coordinates, we need to take into account the appropriate operator transformations: \begin{align} \nabla{} &\rightarrow{} \frac{1}{a} \nabla{}', \\ \frac{\partial{}}{\partial{} t} &\rightarrow{} \frac{\partial{}}{\partial{} t} - \frac{\dot{a}}{a} \mathbf{r}' \cdot \nabla{}', \end{align} the latter of which follows from the explicit time dependence of the comoving coordinate $\mathbf{r}'$. Substituting the definitions of the comoving variables and operators into the first Euler equation, we obtain \begin{equation} \frac{\partial{} \rho{}'}{\partial{} t} + \frac{1}{a^2} \nabla{}' \cdot \left( \rho{}' \mathbf{v}' \right) = 0, \end{equation} which is the same as the original continuity equation but now with an extra $1/a^2$ for the second term (the same correction factor that appears for the ``drift'' in the SPH case). For the velocity equation, we find \begin{multline} \frac{\partial{} \mathbf{v}'}{\partial{} t} + \frac{1}{a^2} \left( \mathbf{v}' \cdot \nabla{}' \right) \mathbf{v}' + \frac{1}{a^{3(\gamma{} - 1)}\rho{}'} \nabla{}' P' = \\ - \nabla{}' \left( \frac{1}{2} a \ddot{a} \mathbf{r}'\cdot\mathbf{r}' \right). \end{multline} The right hand side of this equation is simply the extra term we absorb in the potential through the gauge transformation; the $1/a^2$ dependence in the second term on the left hand side again corresponds to the SPH ``drift'' factor, while the more complicated correction factor for the third term corresponds to the SPH ``kick'' factor in the equation of motion for the velocity. Finally, the thermal energy equation reduces to \begin{equation} \frac{\partial{} u'}{\partial{} t} + \frac{1}{a^2} \left( \mathbf{v}' . \nabla{}' \right) u' + \frac{1}{a^2} \frac{P'}{\rho{}'} \nabla{}' \cdot \mathbf{v}' = 0. \end{equation} Again, this gives us the same correction factors as used by the SPH energy equation.\\ Unfortunately, the system of equations above is no longer consistent with the original equations. For the continuity equation, we can transform to a new time coordinate $t'$ defined by \begin{equation} \dot{t}' = \frac{1}{a^2}, \quad{} t'(t) = \int \frac{dt}{a^2(t)} + {\rm{}const,} \end{equation} and end up with the original continuity equation in comoving variables. The same transformation brings the thermal energy equation into its original form in comoving variables. Unfortunately, the same does not work for the velocity equation due to the $a^{-3(\gamma{}-1)}$ factor in the third term (note that for the specific choice $\gamma{}=5/3$ this procedure would work). To get around this issue, we will rewrite the velocity equation as \begin{multline} \frac{\partial{} \mathbf{v}'}{\partial{} t} + \frac{1}{a^2} \left( \mathbf{v}' \cdot \nabla{}' \right) \mathbf{v}' + \frac{1}{a^2\rho{}'} \nabla{}' P' = \\ - \nabla{}' \left( \frac{1}{2} a \ddot{a} \mathbf{r}'\cdot\mathbf{r}' \right) - \left(\frac{1}{a^{3(\gamma{} - 1)}} - \frac{1}{a^2} \right) \nabla{}'P' \end{multline} and treat the extra correction term on the right hand side as a source term, like we do for the gravitational acceleration. This means we end up with a fully consistent set of comoving Euler equations, so that we can solve the Riemann problem in the comoving frame. If we now convert the primitive Euler equations back to their conservative form, we end up with the following set of equations: \begin{equation} \frac{\partial{} \rho{}'}{\partial{} t} + \frac{1}{a^2} \nabla{}' \cdot \left( \rho{}' \mathbf{v}' \right) = 0, \end{equation} \begin{multline} \frac{\partial{} \rho{}' \mathbf{v}'}{\partial{} t} + \frac{1}{a^2} \nabla{} \cdot \left( \rho{}' \mathbf{v}'\mathbf{v}' + P' \right) = \\ - \rho{}' \nabla{}' \left( \frac{1}{2} a \ddot{a} \mathbf{r}'\cdot\mathbf{r}' \right) - \left(\frac{1}{a^{3(\gamma{} - 1)}} - \frac{1}{a^2} \right) \nabla{}'P', \end{multline} \begin{multline} \frac{\partial{}}{\partial{} t} \left( \rho{}' u' + \frac{1}{2} \rho{}' \mathbf{v}'\cdot\mathbf{v}' \right) +\\ \frac{1}{a^2}\nabla{} \cdot \left( \rho{}' u' \mathbf{v}' + \frac{1}{2} \rho{}' \left(\mathbf{v}'\cdot \mathbf{v}'\right) \mathbf{v}' + P' \mathbf{v}' \right) =\\ - \rho{}' \mathbf{v}'\cdot\nabla{}' \left( \frac{1}{2} a \ddot{a} \mathbf{r}'\cdot \mathbf{r}' \right) - \left(\frac{1}{a^{3(\gamma{} - 1)}} - \frac{1}{a^2} \right) \mathbf{v}'\cdot\nabla{}'P'. \end{multline} These equations tell us that the mass, comoving momentum and comoving total energy are conserved in the case of adiabatic expansion ($\gamma{} = 5/3$). For a more general $\gamma{}$, we however end up with extra source terms that depend on $\nabla{}'P'$. Since we already use this quantity for the gradient reconstruction step, adding this term is straightforward. The additional time step required to integrate the source term is \begin{multline} \Delta{} t_{\rm{} kick,c} \equiv \int_{a_n}^{a_{n+1}} \left(\frac{1}{a^{3(\gamma{} - 1)}} - \frac{1}{a^2} \right) dt \\ = \Delta{} t_{\rm{} kick,h} - \Delta{} t_{\rm{} drift}. \end{multline} The last issue we need to address is the appropriate scale factor for the gravitational correction term that is used by the finite volume flavour of GIZMO. Remember that in GIZMO we evolve the comoving conserved quantities. The evolution equations for the conserved quantities of particle $i$ are then simply given by integrating over the comoving ``volume'' of the particle and adding the appropriate correction terms (we ignore the comoving correction terms for this derivation): \begin{align} \frac{d m_i'}{dt} &= -\frac{1}{a^2} \sum_j \mathbf{F}_{m,ij}'\left(\rho{}'\mathbf{v}'\right),\\ \frac{d \mathbf{p}_i'}{dt} &= -\frac{1}{a^2} \sum_j \mathbf{F}_{p,ij}'\left(\rho{}'\mathbf{v}'\mathbf{v}' + P\mathbb{1}\right) - \frac{1}{a}\nabla{}'\phi{}_i', \end{align} \begin{multline} \frac{d E_i'}{dt} = -\frac{1}{a^2} \sum_j \mathbf{F}_{E,ij}'\left( \rho{}' u' \mathbf{v}' + \frac{1}{2} \rho{}' \left(\mathbf{v}'\cdot \mathbf{v}'\right) \mathbf{v}' + P' \mathbf{v}' \right) \\ - \frac{1}{a} \mathbf{p}_i'\cdot{}\nabla{}'\phi{}_i', \end{multline} where $\mathbf{F}_{X,ij}'(Y)$ represents the appropriately geometrically evaluated flux $Y$ for conserved quantity $X$ between particle $i$ and particle $j$. In finite volume GIZMO, the particle velocity $\mathbf{v}_i' = \mathbf{w}_i' + \mathbf{v}_{i,{\rm{}rel}}'$ consists of the actual particle movement $\mathbf{w}_i'$ and the relative movement of the fluid w.r.t. the particle movement, $\mathbf{v}_{i,{\rm{}rel}}'$. We can therefore replace the gravitational contribution to the energy evolution with \citep{Springel2010} \begin{equation} \mathbf{p}_i'\cdot{}\nabla{}'\phi{}_i' \rightarrow{} m_i'\mathbf{w}_i' \cdot{} \nabla{}'\phi{}_i' + \int{} \rho{}'\left(\mathbf{v}' - \mathbf{w}_i' \right)\cdot{} \nabla{}'\phi{}' dV \end{equation} to get a more accurate update of the total energy. If we make the following approximation \begin{equation} \rho{}'\left(\mathbf{v}' - \mathbf{w}_i' \right) \approx{} \left(\mathbf{r}' - \mathbf{r}_i'\right) \nabla{}' \cdot{} \left( \rho{}' \left( \mathbf{v}' - \mathbf{w}_i' \right) \right) \end{equation} and assume that the force is constant over the ``volume'' of the particle, then the second term in the gravity contribution reduces to \begin{multline} \int{} \rho{}'\left(\mathbf{v}' - \mathbf{w}_i' \right)\cdot{} \nabla{}'\phi{}' dV \approx{} \\\sum_j \frac{1}{2} \left(\mathbf{r}_j' - \mathbf{r}_i'\right) a^2 \mathbf{F}_{m,ij}'\left(\rho{}'\mathbf{v}'\right) \cdot{} \nabla{}'\phi{}'_i. \end{multline} This means that the gravitational correction term will have a total scale factor dependence $a$ instead of the $1/a$ for the normal gravitational contribution and the $1/a^2$ for the hydrodynamical flux. We hence need an additional time step \begin{equation} \Delta{}t_{\rm{}kick,corr} = \int_{a_n}^{a_n+1} adt = \frac{1}{H_0} \int_{a_n}^{a_n+1} \frac{da}{E(a)} \end{equation} that needs to be precomputed.