In order to numerically solve the following differential equation: \begin{equation} \text{Fr}\{f\} := v(k)\dfrac{\partial f(z,k)}{\partial z} - F(z) \dfrac{\partial f(z,k)}{\partial k} = -\dfrac{f-f_0}{\tau} \end{equation} I have used the finite volume method, and have discretized the left hand side to: \begin{equation} \text{Fr}'\{f\} := v(k_j)\Delta k \Bigg[ f(z_{i+},k_j) - f(z_{i-},k_j) \Bigg] - F(z_i)\Delta z \Bigg[ f(z_{i},k_{j+}) - f(z_{i},k_{j-}) \Bigg] \end{equation} for every box.
The so-called flux averaging approximation, \begin{align} & f(z_{i+},k_j) = \dfrac{f(z_i,k_j)+f(z_{i+1},k_j)}{2} \\ & f(z_{i-},k_j) = \dfrac{f(z_i,k_j)+f(z_{i-1},k_j)}{2} \end{align} will lead to instability especially if the flux term is weak. This could be avoided by applying the upwind scheme. In this case: \begin{equation} f(z_{i+},k_j) = \begin{cases} f(z_{i},k_j) & v(k_j)>0 \\ f(z_{i+1},k_j) & v(k_j)<0 \end{cases} \end{equation} \begin{equation} f(z_{i-},k_j) = \begin{cases} f(z_{i-1},k_j) & v(k_j)>0 \\ f(z_{i},k_j) & v(k_j)<0 \end{cases} \end{equation} I have implemented the above upwinding method, and my results seem accurate for very small values of $F(z_i)$ throughout the system. However, when $F(z_i)$ gets large, the obtained results lose accuracy and deviate from the correct result.
The reason to this deviation, I guess, is that the analytical solution to $\text{Fr}\{f\}=0$ is an exponential function. Since the equations are linearly discretized, the discretization cannot follow the large exponential changes accurately.
Do you have any idea for increasing the accuracy of the above discretization while holding on to unconditional stability?