In viscosity.f90, we had a piece: \begin{verbatim} if (ldynamical_diffusion .and. lvisc_hyper3_mesh) then diffus_nu3 = p%diffus_total3 * sum(abs(dline_1),2) else diffus_nu3 = p%diffus_total3*dxyz_6 endif which was not correct, because it makes diffus_nu3 finite in cases that have nothing to do with hyper3. I noticed this because of its timestep constraint, and this could have been a problem also in a few other cases. I noticed that this piece of code goes back to 2011-08-02 and it seems that it was coded by Chao-Chin with the message By fixing the mesh Reynolds number, dynamically adjust the mesh hyper3 coefficients for density, magnetic, and viscosity. Generally work with non-equidistant grids. cdtv3 may be as high as 0.9, or even 1. after earlier work by Wlad. I then disentagled the loop into two, but realized that diffus_nu3 will be needed in a few other cases. For example in samples/MRI-turbulence_hyper we have lvisc_hyper3_rho_nu_const_symm=T, so I included this and it worked. I have now added all 14 logicals that seem to be needed. if (lvisc_hyper3_mesh .or. lvisc_hyper3_simplified .or. lvisc_hyper3_simplified_tdep .or. & lvisc_hyper3_mesh_residual .or. lvisc_hyper3_mesh .or. lvisc_hyper3_rho_nu_const .or. & lvisc_hyper3_mu_const_strict .or. lvisc_hyper3_nu_const .or. & lvisc_hyper3_cmu_const_strt_otf .or. lvisc_hyper3_rho_nu_const_symm .or. & lvisc_hyper3_rho_nu_const_aniso .or. lvisc_hyper3_nu_const_aniso .or. & lvisc_hyper3_rho_nu_const_bulk .or. lvisc_hyper3_nu_const) then