76       coef, gs, h, c_avisc_low, rk_scheme, dt)
 
   77    type(
field_t), 
intent(inout) :: rho_field, m_x, m_y, m_z, E
 
   78    type(
field_t), 
intent(in) :: p, u, v, w, h
 
   79    class(
ax_t), 
intent(inout) :: Ax
 
   80    type(
coef_t), 
intent(inout) :: coef
 
   81    type(
gs_t), 
intent(inout) :: gs
 
   82    real(kind=
rp) :: c_avisc_low
 
   84    real(kind=
rp), 
intent(in) :: dt
 
   85    integer :: n, s, i, j, k
 
   87    type(
field_t), 
pointer :: k_rho_1, k_rho_2, k_rho_3, k_rho_4, &
 
   88         k_m_x_1, k_m_x_2, k_m_x_3, k_m_x_4, &
 
   89         k_m_y_1, k_m_y_2, k_m_y_3, k_m_y_4, &
 
   90         k_m_z_1, k_m_z_2, k_m_z_3, k_m_z_4, &
 
   91         k_e_1, k_e_2, k_e_3, k_e_4, &
 
   92         temp_rho, temp_m_x, temp_m_y, temp_m_z, temp_e
 
   93    integer :: temp_indices(25)
 
  126    call k_rho%assign(1, k_rho_1)
 
  127    call k_rho%assign(2, k_rho_2)
 
  128    call k_rho%assign(3, k_rho_3)
 
  129    call k_rho%assign(4, k_rho_4)
 
  131    call k_m_x%assign(1, k_m_x_1)
 
  132    call k_m_x%assign(2, k_m_x_2)
 
  133    call k_m_x%assign(3, k_m_x_3)
 
  134    call k_m_x%assign(4, k_m_x_4)
 
  136    call k_m_y%assign(1, k_m_y_1)
 
  137    call k_m_y%assign(2, k_m_y_2)
 
  138    call k_m_y%assign(3, k_m_y_3)
 
  139    call k_m_y%assign(4, k_m_y_4)
 
  141    call k_m_z%assign(1, k_m_z_1)
 
  142    call k_m_z%assign(2, k_m_z_2)
 
  143    call k_m_z%assign(3, k_m_z_3)
 
  144    call k_m_z%assign(4, k_m_z_4)
 
  146    call k_e%assign(1, k_e_1)
 
  147    call k_e%assign(2, k_e_2)
 
  148    call k_e%assign(3, k_e_3)
 
  149    call k_e%assign(4, k_e_4)
 
  154       call copy(temp_rho%x, rho_field%x, n)
 
  155       call copy(temp_m_x%x, m_x%x, n)
 
  156       call copy(temp_m_y%x, m_y%x, n)
 
  157       call copy(temp_m_z%x, m_z%x, n)
 
  158       call copy(temp_e%x, e%x, n)
 
  162          do concurrent(k = 1:n)
 
  163             temp_rho%x(k,1,1,1) = temp_rho%x(k,1,1,1) &
 
  164                  + dt * rk_scheme%coeffs_A(i, j) * k_rho%items(j)%ptr%x(k,1,1,1)
 
  165             temp_m_x%x(k,1,1,1) = temp_m_x%x(k,1,1,1) &
 
  166                  + dt * rk_scheme%coeffs_A(i, j) * k_m_x%items(j)%ptr%x(k,1,1,1)
 
  167             temp_m_y%x(k,1,1,1) = temp_m_y%x(k,1,1,1) &
 
  168                  + dt * rk_scheme%coeffs_A(i, j) * k_m_y%items(j)%ptr%x(k,1,1,1)
 
  169             temp_m_z%x(k,1,1,1) = temp_m_z%x(k,1,1,1) &
 
  170                  + dt * rk_scheme%coeffs_A(i, j) * k_m_z%items(j)%ptr%x(k,1,1,1)
 
  171             temp_e%x(k,1,1,1) = temp_e%x(k,1,1,1) &
 
  172                  + dt * rk_scheme%coeffs_A(i, j) * k_e%items(j)%ptr%x(k,1,1,1)
 
  178            k_m_y%items(i)%ptr, k_m_z%items(i)%ptr, &
 
  180            temp_rho, temp_m_x, temp_m_y, temp_m_z, temp_e, &
 
  182            coef, gs, h, c_avisc_low)
 
  187       do concurrent(k = 1:n)
 
  188          rho_field%x(k,1,1,1) = rho_field%x(k,1,1,1) &
 
  189               + dt * rk_scheme%coeffs_b(i) * k_rho%items(i)%ptr%x(k,1,1,1)
 
  190          m_x%x(k,1,1,1) = m_x%x(k,1,1,1) &
 
  191               + dt * rk_scheme%coeffs_b(i) * k_m_x%items(i)%ptr%x(k,1,1,1)
 
  192          m_y%x(k,1,1,1) = m_y%x(k,1,1,1) &
 
  193               + dt * rk_scheme%coeffs_b(i) * k_m_y%items(i)%ptr%x(k,1,1,1)
 
  194          m_z%x(k,1,1,1) = m_z%x(k,1,1,1) &
 
  195               + dt * rk_scheme%coeffs_b(i) * k_m_z%items(i)%ptr%x(k,1,1,1)
 
  196          e%x(k,1,1,1) = e%x(k,1,1,1) &
 
  197               + dt * rk_scheme%coeffs_b(i) * k_e%items(i)%ptr%x(k,1,1,1)
 
 
  227       rho_field, m_x, m_y, m_z, E, p, u, v, w, Ax, &
 
  228       coef, gs, h, c_avisc_low)
 
  229    type(
field_t), 
intent(inout) :: rhs_rho_field, &
 
  230         rhs_m_x, rhs_m_y, rhs_m_z, rhs_E
 
  231    type(
field_t), 
intent(inout) :: rho_field, m_x, m_y, m_z, E
 
  232    type(
field_t), 
intent(in) :: p, u, v, w, h
 
  233    class(
ax_t), 
intent(inout) :: Ax
 
  234    type(
coef_t), 
intent(inout) :: coef
 
  235    type(
gs_t), 
intent(inout) :: gs
 
  236    real(kind=
rp) :: c_avisc_low
 
  238    type(
field_t), 
pointer :: temp, f_x, f_y, f_z, &
 
  239         visc_rho, visc_m_x, visc_m_y, visc_m_z, visc_E
 
  240    integer :: temp_indices(9)
 
  250    call div(rhs_rho_field%x, m_x%x, m_y%x, m_z%x, coef)
 
  255    do concurrent(i = 1:n)
 
  256       f_x%x(i,1,1,1) = m_x%x(i,1,1,1) * m_x%x(i,1,1,1) / rho_field%x(i, 1, 1, 1) &
 
  258       f_y%x(i,1,1,1) = m_x%x(i,1,1,1) * m_y%x(i,1,1,1) / rho_field%x(i, 1, 1, 1)
 
  259       f_z%x(i,1,1,1) = m_x%x(i,1,1,1) * m_z%x(i,1,1,1) / rho_field%x(i, 1, 1, 1)
 
  261    call div(rhs_m_x%x, f_x%x, f_y%x, f_z%x, coef)
 
  263    do concurrent(i = 1:n)
 
  264       f_x%x(i,1,1,1) = m_y%x(i,1,1,1) * m_x%x(i,1,1,1) / rho_field%x(i, 1, 1, 1)
 
  265       f_y%x(i,1,1,1) = m_y%x(i,1,1,1) * m_y%x(i,1,1,1) / rho_field%x(i, 1, 1, 1) &
 
  267       f_z%x(i,1,1,1) = m_y%x(i,1,1,1) * m_z%x(i,1,1,1) / rho_field%x(i, 1, 1, 1)
 
  269    call div(rhs_m_y%x, f_x%x, f_y%x, f_z%x, coef)
 
  271    do concurrent(i = 1:n)
 
  272       f_x%x(i,1,1,1) = m_z%x(i,1,1,1) * m_x%x(i,1,1,1) / rho_field%x(i, 1, 1, 1)
 
  273       f_y%x(i,1,1,1) = m_z%x(i,1,1,1) * m_y%x(i,1,1,1) / rho_field%x(i, 1, 1, 1)
 
  274       f_z%x(i,1,1,1) = m_z%x(i,1,1,1) * m_z%x(i,1,1,1) / rho_field%x(i, 1, 1, 1) &
 
  277    call div(rhs_m_z%x, f_x%x, f_y%x, f_z%x, coef)
 
  281    do concurrent(i = 1:n)
 
  282       f_x%x(i,1,1,1) = (e%x(i,1,1,1) + p%x(i,1,1,1)) * u%x(i,1,1,1)
 
  283       f_y%x(i,1,1,1) = (e%x(i,1,1,1) + p%x(i,1,1,1)) * v%x(i,1,1,1)
 
  284       f_z%x(i,1,1,1) = (e%x(i,1,1,1) + p%x(i,1,1,1)) * w%x(i,1,1,1)
 
  286    call div(rhs_e%x, f_x%x, f_y%x, f_z%x, coef)
 
  294    do concurrent(i = 1:rhs_e%dof%size())
 
  295       rhs_rho_field%x(i,1,1,1) = rhs_rho_field%x(i,1,1,1) * coef%mult(i,1,1,1)
 
  296       rhs_m_x%x(i,1,1,1) = rhs_m_x%x(i,1,1,1) * coef%mult(i,1,1,1)
 
  297       rhs_m_y%x(i,1,1,1) = rhs_m_y%x(i,1,1,1) * coef%mult(i,1,1,1)
 
  298       rhs_m_z%x(i,1,1,1) = rhs_m_z%x(i,1,1,1) * coef%mult(i,1,1,1)
 
  299       rhs_e%x(i,1,1,1) = rhs_e%x(i,1,1,1) * coef%mult(i,1,1,1)
 
  309    call ax%compute(visc_rho%x, rho_field%x, coef, p%msh, p%Xh)
 
  310    call ax%compute(visc_m_x%x, m_x%x, coef, p%msh, p%Xh)
 
  311    call ax%compute(visc_m_y%x, m_y%x, coef, p%msh, p%Xh)
 
  312    call ax%compute(visc_m_z%x, m_z%x, coef, p%msh, p%Xh)
 
  313    call ax%compute(visc_e%x, e%x, coef, p%msh, p%Xh)
 
  324    do concurrent(i = 1:n)
 
  325       rhs_rho_field%x(i,1,1,1) = -rhs_rho_field%x(i,1,1,1) &
 
  326            - c_avisc_low * h%x(i,1,1,1) * coef%Binv(i,1,1,1) * visc_rho%x(i,1,1,1)
 
  327       rhs_m_x%x(i,1,1,1) = -rhs_m_x%x(i,1,1,1) &
 
  328            - c_avisc_low * h%x(i,1,1,1) * coef%Binv(i,1,1,1) * visc_m_x%x(i,1,1,1)
 
  329       rhs_m_y%x(i,1,1,1) = -rhs_m_y%x(i,1,1,1) &
 
  330            - c_avisc_low * h%x(i,1,1,1) * coef%Binv(i,1,1,1) * visc_m_y%x(i,1,1,1)
 
  331       rhs_m_z%x(i,1,1,1) = -rhs_m_z%x(i,1,1,1) &
 
  332            - c_avisc_low * h%x(i,1,1,1) * coef%Binv(i,1,1,1) * visc_m_z%x(i,1,1,1)
 
  333       rhs_e%x(i,1,1,1) = -rhs_e%x(i,1,1,1) &
 
  334            - c_avisc_low * h%x(i,1,1,1) * coef%Binv(i,1,1,1) * visc_e%x(i,1,1,1)