39  module subroutine opr_cpu_conv1(du, u, vx, vy, vz, xh, coef, e_start, e_end)
 
   40    type(space_t), 
intent(in) :: Xh
 
   41    type(coef_t), 
intent(in) :: coef
 
   42    integer, 
intent(in) :: e_start, e_end
 
   43    real(kind=rp), 
intent(inout) ::  du(xh%lxyz, e_end-e_start+1)
 
   44    real(kind=rp), 
intent(inout) ::  u(xh%lx, xh%ly, xh%lz, e_end-e_start+1)
 
   45    real(kind=rp), 
intent(inout) ::  vx(xh%lx, xh%ly, xh%lz, e_end-e_start+1)
 
   46    real(kind=rp), 
intent(inout) ::  vy(xh%lx, xh%ly, xh%lz, e_end-e_start+1)
 
   47    real(kind=rp), 
intent(inout) ::  vz(xh%lx, xh%ly, xh%lz, e_end-e_start+1)
 
   50    e_len = e_end-e_start+1
 
   52    if (e_len .eq. 1) 
then 
   53       call opr_cpu_conv1_single(du, u, vx, vy, vz, xh, coef, e_start)
 
   55       call opr_cpu_conv1_many(du, u, vx, vy, vz, xh, coef, e_start, e_len)
 
   57  end subroutine opr_cpu_conv1
 
   59  subroutine opr_cpu_conv1_many(du, u, vx, vy, vz, Xh, coef, e_start, e_len)
 
   60    type(space_t), 
intent(in) :: Xh
 
   61    type(coef_t), 
intent(in) :: coef
 
   62    integer, 
intent(in) :: e_start, e_len
 
   63    real(kind=rp), 
intent(inout) ::  du(xh%lxyz, e_len)
 
   64    real(kind=rp), 
intent(inout) ::  u(xh%lx, xh%ly, xh%lz, e_len)
 
   65    real(kind=rp), 
intent(inout) ::  vx(xh%lx, xh%ly, xh%lz, e_len)
 
   66    real(kind=rp), 
intent(inout) ::  vy(xh%lx, xh%ly, xh%lz, e_len)
 
   67    real(kind=rp), 
intent(inout) ::  vz(xh%lx, xh%ly, xh%lz, e_len)
 
   69    associate(drdx => coef%drdx, drdy => coef%drdy, drdz => coef%drdz, &
 
   70         dsdx => coef%dsdx, dsdy => coef%dsdy, dsdz => coef%dsdz, &
 
   71         dtdx => coef%dtdx, dtdy => coef%dtdy, dtdz => coef%dtdz, &
 
   72         jacinv => coef%jacinv)
 
   75         call cpu_conv1_lx14(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
 
   76              drdx(1,1,1, e_start), dsdx(1,1,1, e_start), dtdx(1,1,1, e_start),&
 
   77              drdy(1,1,1, e_start), dsdy(1,1,1, e_start), dtdy(1,1,1, e_start),&
 
   78              drdz(1,1,1, e_start), dsdz(1,1,1, e_start), dtdz(1,1,1, e_start),&
 
   79              jacinv(1,1,1, e_start), e_len)
 
   81         call cpu_conv1_lx13(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
 
   82              drdx(1,1,1, e_start), dsdx(1,1,1, e_start), dtdx(1,1,1, e_start),&
 
   83              drdy(1,1,1, e_start), dsdy(1,1,1, e_start), dtdy(1,1,1, e_start),&
 
   84              drdz(1,1,1, e_start), dsdz(1,1,1, e_start), dtdz(1,1,1, e_start),&
 
   85              jacinv(1,1,1, e_start), e_len)
 
   87         call cpu_conv1_lx12(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
 
   88              drdx(1,1,1, e_start), dsdx(1,1,1, e_start), dtdx(1,1,1, e_start),&
 
   89              drdy(1,1,1, e_start), dsdy(1,1,1, e_start), dtdy(1,1,1, e_start),&
 
   90              drdz(1,1,1, e_start), dsdz(1,1,1, e_start), dtdz(1,1,1, e_start),&
 
   91              jacinv(1,1,1, e_start), e_len)
 
   93         call cpu_conv1_lx11(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
 
   94              drdx(1,1,1, e_start), dsdx(1,1,1, e_start), dtdx(1,1,1, e_start),&
 
   95              drdy(1,1,1, e_start), dsdy(1,1,1, e_start), dtdy(1,1,1, e_start),&
 
   96              drdz(1,1,1, e_start), dsdz(1,1,1, e_start), dtdz(1,1,1, e_start),&
 
   97              jacinv(1,1,1, e_start), e_len)
 
   99         call cpu_conv1_lx10(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
 
  100              drdx(1,1,1, e_start), dsdx(1,1,1, e_start), dtdx(1,1,1, e_start),&
 
  101              drdy(1,1,1, e_start), dsdy(1,1,1, e_start), dtdy(1,1,1, e_start),&
 
  102              drdz(1,1,1, e_start), dsdz(1,1,1, e_start), dtdz(1,1,1, e_start),&
 
  103              jacinv(1,1,1, e_start), e_len)
 
  105         call cpu_conv1_lx9(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
 
  106              drdx(1,1,1, e_start), dsdx(1,1,1, e_start), dtdx(1,1,1, e_start),&
 
  107              drdy(1,1,1, e_start), dsdy(1,1,1, e_start), dtdy(1,1,1, e_start),&
 
  108              drdz(1,1,1, e_start), dsdz(1,1,1, e_start), dtdz(1,1,1, e_start),&
 
  109              jacinv(1,1,1, e_start), e_len)
 
  111         call cpu_conv1_lx8(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
 
  112              drdx(1,1,1, e_start), dsdx(1,1,1, e_start), dtdx(1,1,1, e_start),&
 
  113              drdy(1,1,1, e_start), dsdy(1,1,1, e_start), dtdy(1,1,1, e_start),&
 
  114              drdz(1,1,1, e_start), dsdz(1,1,1, e_start), dtdz(1,1,1, e_start),&
 
  115              jacinv(1,1,1, e_start), e_len)
 
  117         call cpu_conv1_lx7(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
 
  118              drdx(1,1,1, e_start), dsdx(1,1,1, e_start), dtdx(1,1,1, e_start),&
 
  119              drdy(1,1,1, e_start), dsdy(1,1,1, e_start), dtdy(1,1,1, e_start),&
 
  120              drdz(1,1,1, e_start), dsdz(1,1,1, e_start), dtdz(1,1,1, e_start),&
 
  121              jacinv(1,1,1, e_start), e_len)
 
  123         call cpu_conv1_lx6(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
 
  124              drdx(1,1,1, e_start), dsdx(1,1,1, e_start), dtdx(1,1,1, e_start),&
 
  125              drdy(1,1,1, e_start), dsdy(1,1,1, e_start), dtdy(1,1,1, e_start),&
 
  126              drdz(1,1,1, e_start), dsdz(1,1,1, e_start), dtdz(1,1,1, e_start),&
 
  127              jacinv(1,1,1, e_start), e_len)
 
  129         call cpu_conv1_lx5(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
 
  130              drdx(1,1,1, e_start), dsdx(1,1,1, e_start), dtdx(1,1,1, e_start),&
 
  131              drdy(1,1,1, e_start), dsdy(1,1,1, e_start), dtdy(1,1,1, e_start),&
 
  132              drdz(1,1,1, e_start), dsdz(1,1,1, e_start), dtdz(1,1,1, e_start),&
 
  133              jacinv(1,1,1, e_start), e_len)
 
  135         call cpu_conv1_lx4(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
 
  136              drdx(1,1,1, e_start), dsdx(1,1,1, e_start), dtdx(1,1,1, e_start),&
 
  137              drdy(1,1,1, e_start), dsdy(1,1,1, e_start), dtdy(1,1,1, e_start),&
 
  138              drdz(1,1,1, e_start), dsdz(1,1,1, e_start), dtdz(1,1,1, e_start),&
 
  139              jacinv(1,1,1, e_start), e_len)
 
  141         call cpu_conv1_lx3(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
 
  142              drdx(1,1,1, e_start), dsdx(1,1,1, e_start), dtdx(1,1,1, e_start),&
 
  143              drdy(1,1,1, e_start), dsdy(1,1,1, e_start), dtdy(1,1,1, e_start),&
 
  144              drdz(1,1,1, e_start), dsdz(1,1,1, e_start), dtdz(1,1,1, e_start),&
 
  145              jacinv(1,1,1, e_start), e_len)
 
  147         call cpu_conv1_lx2(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
 
  148              drdx(1,1,1, e_start), dsdx(1,1,1, e_start), dtdx(1,1,1, e_start),&
 
  149              drdy(1,1,1, e_start), dsdy(1,1,1, e_start), dtdy(1,1,1, e_start),&
 
  150              drdz(1,1,1, e_start), dsdz(1,1,1, e_start), dtdz(1,1,1, e_start),&
 
  151              jacinv(1,1,1, e_start), e_len)
 
  153         call cpu_conv1_lx(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
 
  154              drdx(1,1,1, e_start), dsdx(1,1,1, e_start), dtdx(1,1,1, e_start),&
 
  155              drdy(1,1,1, e_start), dsdy(1,1,1, e_start), dtdy(1,1,1, e_start),&
 
  156              drdz(1,1,1, e_start), dsdz(1,1,1, e_start), dtdz(1,1,1, e_start),&
 
  157              jacinv(1,1,1, e_start), e_len, xh%lx)
 
  161  end subroutine opr_cpu_conv1_many
 
  163  subroutine cpu_conv1_lx(du, u, vx, vy, vz, dx, dy, dz, &
 
  164       drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, &
 
  166    integer, 
intent(in) :: nelv, lx
 
  167    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(inout) ::  du
 
  168    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) ::  u, vx, vy, vz
 
  169    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdx, dsdx, dtdx
 
  170    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdy, dsdy, dtdy
 
  171    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdz, dsdz, dtdz
 
  172    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: jacinv
 
  173    real(kind=rp), 
dimension(lx, lx), 
intent(in) :: dx, dy, dz
 
  174    real(kind=rp), 
dimension(lx, lx, lx) ::  dudr
 
  175    real(kind=rp), 
dimension(lx, lx, lx) ::  duds
 
  176    real(kind=rp), 
dimension(lx, lx, lx) ::  dudt
 
  178    integer :: e, i, j, k, l
 
  185                tmp = tmp + dx(i,k) * u(k,j,1,e)
 
  196                   tmp = tmp + dy(j,l) * u(i,l,k,e)
 
  207                tmp = tmp + dz(k,l) * u(i,1,l,e)
 
  213       do i = 1, lx * lx * lx
 
  214          du(i,1,1,e) = jacinv(i,1,1,e) &
 
  216                        * ( drdx(i,1,1,e) * dudr(i,1,1) &
 
  217                          + dsdx(i,1,1,e) * duds(i,1,1) &
 
  218                          + dtdx(i,1,1,e) * dudt(i,1,1) ) &
 
  220                        * ( drdy(i,1,1,e) * dudr(i,1,1) &
 
  221                          + dsdy(i,1,1,e) * duds(i,1,1) &
 
  222                          + dtdy(i,1,1,e) * dudt(i,1,1) ) &
 
  224                        * ( drdz(i,1,1,e) * dudr(i,1,1) &
 
  225                          + dsdz(i,1,1,e) * duds(i,1,1) &
 
  226                          + dtdz(i,1,1,e) * dudt(i,1,1) ) )
 
  230  end subroutine cpu_conv1_lx
 
  232  subroutine cpu_conv1_lx14(du, u, vx, vy, vz, dx, dy, dz, &
 
  233       drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, &
 
  235    integer, 
parameter :: lx = 14
 
  236    integer, 
intent(in) :: nelv
 
  237    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(inout) ::  du
 
  238    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) ::  u, vx, vy, vz
 
  239    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdx, dsdx, dtdx
 
  240    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdy, dsdy, dtdy
 
  241    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdz, dsdz, dtdz
 
  242    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: jacinv
 
  243    real(kind=rp), 
dimension(lx, lx), 
intent(in) :: dx, dy, dz
 
  244    real(kind=rp), 
dimension(lx, lx, lx) ::  dudr
 
  245    real(kind=rp), 
dimension(lx, lx, lx) ::  duds
 
  246    real(kind=rp), 
dimension(lx, lx, lx) ::  dudt
 
  247    integer :: e, i, j, k
 
  252             dudr(i,j,1) = dx(i,1) * u(1,j,1,e) &
 
  253                         + dx(i,2) * u(2,j,1,e) &
 
  254                         + dx(i,3) * u(3,j,1,e) &
 
  255                         + dx(i,4) * u(4,j,1,e) &
 
  256                         + dx(i,5) * u(5,j,1,e) &
 
  257                         + dx(i,6) * u(6,j,1,e) &
 
  258                         + dx(i,7) * u(7,j,1,e) &
 
  259                         + dx(i,8) * u(8,j,1,e) &
 
  260                         + dx(i,9) * u(9,j,1,e) &
 
  261                         + dx(i,10) * u(10,j,1,e) &
 
  262                         + dx(i,11) * u(11,j,1,e) &
 
  263                         + dx(i,12) * u(12,j,1,e) &
 
  264                         + dx(i,13) * u(13,j,1,e) &
 
  265                         + dx(i,14) * u(14,j,1,e)
 
  272                duds(i,j,k) = dy(j,1) * u(i,1,k,e) &
 
  273                            + dy(j,2) * u(i,2,k,e) &
 
  274                            + dy(j,3) * u(i,3,k,e) &
 
  275                            + dy(j,4) * u(i,4,k,e) &
 
  276                            + dy(j,5) * u(i,5,k,e) &
 
  277                            + dy(j,6) * u(i,6,k,e) &
 
  278                            + dy(j,7) * u(i,7,k,e) &
 
  279                            + dy(j,8) * u(i,8,k,e) &
 
  280                            + dy(j,9) * u(i,9,k,e) &
 
  281                            + dy(j,10) * u(i,10,k,e) &
 
  282                            + dy(j,11) * u(i,11,k,e) &
 
  283                            + dy(j,12) * u(i,12,k,e) &
 
  284                            + dy(j,13) * u(i,13,k,e) &
 
  285                            + dy(j,14) * u(i,14,k,e)
 
  292             dudt(i,1,k) = dz(k,1) * u(i,1,1,e) &
 
  293                         + dz(k,2) * u(i,1,2,e) &
 
  294                         + dz(k,3) * u(i,1,3,e) &
 
  295                         + dz(k,4) * u(i,1,4,e) &
 
  296                         + dz(k,5) * u(i,1,5,e) &
 
  297                         + dz(k,6) * u(i,1,6,e) &
 
  298                         + dz(k,7) * u(i,1,7,e) &
 
  299                         + dz(k,8) * u(i,1,8,e) &
 
  300                         + dz(k,9) * u(i,1,9,e) &
 
  301                         + dz(k,10) * u(i,1,10,e) &
 
  302                         + dz(k,11) * u(i,1,11,e) &
 
  303                         + dz(k,12) * u(i,1,12,e) &
 
  304                         + dz(k,13) * u(i,1,13,e) &
 
  305                         + dz(k,14) * u(i,1,14,e)
 
  309       do i = 1, lx * lx * lx
 
  310          du(i,1,1,e) = jacinv(i,1,1,e) &
 
  312                        * ( drdx(i,1,1,e) * dudr(i,1,1) &
 
  313                          + dsdx(i,1,1,e) * duds(i,1,1) &
 
  314                          + dtdx(i,1,1,e) * dudt(i,1,1) ) &
 
  316                        * ( drdy(i,1,1,e) * dudr(i,1,1) &
 
  317                          + dsdy(i,1,1,e) * duds(i,1,1) &
 
  318                          + dtdy(i,1,1,e) * dudt(i,1,1) ) &
 
  320                        * ( drdz(i,1,1,e) * dudr(i,1,1) &
 
  321                          + dsdz(i,1,1,e) * duds(i,1,1) &
 
  322                          + dtdz(i,1,1,e) * dudt(i,1,1) ) )
 
  326  end subroutine cpu_conv1_lx14
 
  328  subroutine cpu_conv1_lx13(du, u, vx, vy, vz, dx, dy, dz, &
 
  329       drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, &
 
  331    integer, 
parameter :: lx = 13
 
  332    integer, 
intent(in) :: nelv
 
  333    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(inout) ::  du
 
  334    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) ::  u, vx, vy, vz
 
  335    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdx, dsdx, dtdx
 
  336    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdy, dsdy, dtdy
 
  337    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdz, dsdz, dtdz
 
  338    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: jacinv
 
  339    real(kind=rp), 
dimension(lx, lx), 
intent(in) :: dx, dy, dz
 
  340    real(kind=rp), 
dimension(lx, lx, lx) ::  dudr
 
  341    real(kind=rp), 
dimension(lx, lx, lx) ::  duds
 
  342    real(kind=rp), 
dimension(lx, lx, lx) ::  dudt
 
  343    integer :: e, i, j, k
 
  348             dudr(i,j,1) = dx(i,1) * u(1,j,1,e) &
 
  349                         + dx(i,2) * u(2,j,1,e) &
 
  350                         + dx(i,3) * u(3,j,1,e) &
 
  351                         + dx(i,4) * u(4,j,1,e) &
 
  352                         + dx(i,5) * u(5,j,1,e) &
 
  353                         + dx(i,6) * u(6,j,1,e) &
 
  354                         + dx(i,7) * u(7,j,1,e) &
 
  355                         + dx(i,8) * u(8,j,1,e) &
 
  356                         + dx(i,9) * u(9,j,1,e) &
 
  357                         + dx(i,10) * u(10,j,1,e) &
 
  358                         + dx(i,11) * u(11,j,1,e) &
 
  359                         + dx(i,12) * u(12,j,1,e) &
 
  360                         + dx(i,13) * u(13,j,1,e)
 
  367                duds(i,j,k) = dy(j,1) * u(i,1,k,e) &
 
  368                            + dy(j,2) * u(i,2,k,e) &
 
  369                            + dy(j,3) * u(i,3,k,e) &
 
  370                            + dy(j,4) * u(i,4,k,e) &
 
  371                            + dy(j,5) * u(i,5,k,e) &
 
  372                            + dy(j,6) * u(i,6,k,e) &
 
  373                            + dy(j,7) * u(i,7,k,e) &
 
  374                            + dy(j,8) * u(i,8,k,e) &
 
  375                            + dy(j,9) * u(i,9,k,e) &
 
  376                            + dy(j,10) * u(i,10,k,e) &
 
  377                            + dy(j,11) * u(i,11,k,e) &
 
  378                            + dy(j,12) * u(i,12,k,e) &
 
  379                            + dy(j,13) * u(i,13,k,e)
 
  386             dudt(i,1,k) = dz(k,1) * u(i,1,1,e) &
 
  387                         + dz(k,2) * u(i,1,2,e) &
 
  388                         + dz(k,3) * u(i,1,3,e) &
 
  389                         + dz(k,4) * u(i,1,4,e) &
 
  390                         + dz(k,5) * u(i,1,5,e) &
 
  391                         + dz(k,6) * u(i,1,6,e) &
 
  392                         + dz(k,7) * u(i,1,7,e) &
 
  393                         + dz(k,8) * u(i,1,8,e) &
 
  394                         + dz(k,9) * u(i,1,9,e) &
 
  395                         + dz(k,10) * u(i,1,10,e) &
 
  396                         + dz(k,11) * u(i,1,11,e) &
 
  397                         + dz(k,12) * u(i,1,12,e) &
 
  398                         + dz(k,13) * u(i,1,13,e)
 
  402       do i = 1, lx * lx * lx
 
  403          du(i,1,1,e) = jacinv(i,1,1,e) &
 
  405                       * ( drdx(i,1,1,e) * dudr(i,1,1) &
 
  406                         + dsdx(i,1,1,e) * duds(i,1,1) &
 
  407                         + dtdx(i,1,1,e) * dudt(i,1,1) ) &
 
  409                       * ( drdy(i,1,1,e) * dudr(i,1,1) &
 
  410                         + dsdy(i,1,1,e) * duds(i,1,1) &
 
  411                         + dtdy(i,1,1,e) * dudt(i,1,1) ) &
 
  413                       * ( drdz(i,1,1,e) * dudr(i,1,1) &
 
  414                         + dsdz(i,1,1,e) * duds(i,1,1) &
 
  415                         + dtdz(i,1,1,e) * dudt(i,1,1) ) )
 
  419  end subroutine cpu_conv1_lx13
 
  421  subroutine cpu_conv1_lx12(du, u, vx, vy, vz, dx, dy, dz, &
 
  422       drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, &
 
  424    integer, 
parameter :: lx = 12
 
  425    integer, 
intent(in) :: nelv
 
  426    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(inout) ::  du
 
  427    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) ::  u, vx, vy, vz
 
  428    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdx, dsdx, dtdx
 
  429    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdy, dsdy, dtdy
 
  430    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdz, dsdz, dtdz
 
  431    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: jacinv
 
  432    real(kind=rp), 
dimension(lx, lx), 
intent(in) :: dx, dy, dz
 
  433    real(kind=rp), 
dimension(lx, lx, lx) ::  dudr
 
  434    real(kind=rp), 
dimension(lx, lx, lx) ::  duds
 
  435    real(kind=rp), 
dimension(lx, lx, lx) ::  dudt
 
  436    integer :: e, i, j, k
 
  441             dudr(i,j,1) = dx(i,1) * u(1,j,1,e) &
 
  442                         + dx(i,2) * u(2,j,1,e) &
 
  443                         + dx(i,3) * u(3,j,1,e) &
 
  444                         + dx(i,4) * u(4,j,1,e) &
 
  445                         + dx(i,5) * u(5,j,1,e) &
 
  446                         + dx(i,6) * u(6,j,1,e) &
 
  447                         + dx(i,7) * u(7,j,1,e) &
 
  448                         + dx(i,8) * u(8,j,1,e) &
 
  449                         + dx(i,9) * u(9,j,1,e) &
 
  450                         + dx(i,10) * u(10,j,1,e) &
 
  451                         + dx(i,11) * u(11,j,1,e) &
 
  452                         + dx(i,12) * u(12,j,1,e)
 
  459                duds(i,j,k) = dy(j,1) * u(i,1,k,e) &
 
  460                            + dy(j,2) * u(i,2,k,e) &
 
  461                            + dy(j,3) * u(i,3,k,e) &
 
  462                            + dy(j,4) * u(i,4,k,e) &
 
  463                            + dy(j,5) * u(i,5,k,e) &
 
  464                            + dy(j,6) * u(i,6,k,e) &
 
  465                            + dy(j,7) * u(i,7,k,e) &
 
  466                            + dy(j,8) * u(i,8,k,e) &
 
  467                            + dy(j,9) * u(i,9,k,e) &
 
  468                            + dy(j,10) * u(i,10,k,e) &
 
  469                            + dy(j,11) * u(i,11,k,e) &
 
  470                            + dy(j,12) * u(i,12,k,e)
 
  477             dudt(i,1,k) = dz(k,1) * u(i,1,1,e) &
 
  478                         + dz(k,2) * u(i,1,2,e) &
 
  479                         + dz(k,3) * u(i,1,3,e) &
 
  480                         + dz(k,4) * u(i,1,4,e) &
 
  481                         + dz(k,5) * u(i,1,5,e) &
 
  482                         + dz(k,6) * u(i,1,6,e) &
 
  483                         + dz(k,7) * u(i,1,7,e) &
 
  484                         + dz(k,8) * u(i,1,8,e) &
 
  485                         + dz(k,9) * u(i,1,9,e) &
 
  486                         + dz(k,10) * u(i,1,10,e) &
 
  487                         + dz(k,11) * u(i,1,11,e) &
 
  488                         + dz(k,12) * u(i,1,12,e)
 
  492       do i = 1, lx * lx * lx
 
  493          du(i,1,1,e) = jacinv(i,1,1,e) &
 
  495                         * ( drdx(i,1,1,e) * dudr(i,1,1) &
 
  496                           + dsdx(i,1,1,e) * duds(i,1,1) &
 
  497                           + dtdx(i,1,1,e) * dudt(i,1,1) ) &
 
  499                         * ( drdy(i,1,1,e) * dudr(i,1,1) &
 
  500                           + dsdy(i,1,1,e) * duds(i,1,1) &
 
  501                           + dtdy(i,1,1,e) * dudt(i,1,1) ) &
 
  503                         * ( drdz(i,1,1,e) * dudr(i,1,1) &
 
  504                           + dsdz(i,1,1,e) * duds(i,1,1) &
 
  505                           + dtdz(i,1,1,e) * dudt(i,1,1) ) )
 
  509  end subroutine cpu_conv1_lx12
 
  511  subroutine cpu_conv1_lx11(du, u, vx, vy, vz, dx, dy, dz, &
 
  512       drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, &
 
  514    integer, 
parameter :: lx = 11
 
  515    integer, 
intent(in) :: nelv
 
  516    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(inout) ::  du
 
  517    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) ::  u, vx, vy, vz
 
  518    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdx, dsdx, dtdx
 
  519    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdy, dsdy, dtdy
 
  520    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdz, dsdz, dtdz
 
  521    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: jacinv
 
  522    real(kind=rp), 
dimension(lx, lx), 
intent(in) :: dx, dy, dz
 
  523    real(kind=rp), 
dimension(lx, lx, lx) ::  dudr
 
  524    real(kind=rp), 
dimension(lx, lx, lx) ::  duds
 
  525    real(kind=rp), 
dimension(lx, lx, lx) ::  dudt
 
  526    integer :: e, i, j, k
 
  531             dudr(i,j,1) = dx(i,1) * u(1,j,1,e) &
 
  532                         + dx(i,2) * u(2,j,1,e) &
 
  533                         + dx(i,3) * u(3,j,1,e) &
 
  534                         + dx(i,4) * u(4,j,1,e) &
 
  535                         + dx(i,5) * u(5,j,1,e) &
 
  536                         + dx(i,6) * u(6,j,1,e) &
 
  537                         + dx(i,7) * u(7,j,1,e) &
 
  538                         + dx(i,8) * u(8,j,1,e) &
 
  539                         + dx(i,9) * u(9,j,1,e) &
 
  540                         + dx(i,10) * u(10,j,1,e) &
 
  541                         + dx(i,11) * u(11,j,1,e)
 
  548                duds(i,j,k) = dy(j,1) * u(i,1,k,e) &
 
  549                            + dy(j,2) * u(i,2,k,e) &
 
  550                            + dy(j,3) * u(i,3,k,e) &
 
  551                            + dy(j,4) * u(i,4,k,e) &
 
  552                            + dy(j,5) * u(i,5,k,e) &
 
  553                            + dy(j,6) * u(i,6,k,e) &
 
  554                            + dy(j,7) * u(i,7,k,e) &
 
  555                            + dy(j,8) * u(i,8,k,e) &
 
  556                            + dy(j,9) * u(i,9,k,e) &
 
  557                            + dy(j,10) * u(i,10,k,e) &
 
  558                            + dy(j,11) * u(i,11,k,e)
 
  565             dudt(i,1,k) = dz(k,1) * u(i,1,1,e) &
 
  566                         + dz(k,2) * u(i,1,2,e) &
 
  567                         + dz(k,3) * u(i,1,3,e) &
 
  568                         + dz(k,4) * u(i,1,4,e) &
 
  569                         + dz(k,5) * u(i,1,5,e) &
 
  570                         + dz(k,6) * u(i,1,6,e) &
 
  571                         + dz(k,7) * u(i,1,7,e) &
 
  572                         + dz(k,8) * u(i,1,8,e) &
 
  573                         + dz(k,9) * u(i,1,9,e) &
 
  574                         + dz(k,10) * u(i,1,10,e) &
 
  575                         + dz(k,11) * u(i,1,11,e)
 
  579       do i = 1, lx * lx * lx
 
  580          du(i,1,1,e) = jacinv(i,1,1,e) &
 
  582                         * ( drdx(i,1,1,e) * dudr(i,1,1) &
 
  583                           + dsdx(i,1,1,e) * duds(i,1,1) &
 
  584                           + dtdx(i,1,1,e) * dudt(i,1,1) ) &
 
  586                         * ( drdy(i,1,1,e) * dudr(i,1,1) &
 
  587                           + dsdy(i,1,1,e) * duds(i,1,1) &
 
  588                           + dtdy(i,1,1,e) * dudt(i,1,1) ) &
 
  590                         * ( drdz(i,1,1,e) * dudr(i,1,1) &
 
  591                           + dsdz(i,1,1,e) * duds(i,1,1) &
 
  592                           + dtdz(i,1,1,e) * dudt(i,1,1) ) )
 
  596  end subroutine cpu_conv1_lx11
 
  598  subroutine cpu_conv1_lx10(du, u, vx, vy, vz, dx, dy, dz, &
 
  599       drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, &
 
  601    integer, 
parameter :: lx = 10
 
  602    integer, 
intent(in) :: nelv
 
  603    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(inout) ::  du
 
  604    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) ::  u, vx, vy, vz
 
  605    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdx, dsdx, dtdx
 
  606    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdy, dsdy, dtdy
 
  607    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdz, dsdz, dtdz
 
  608    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: jacinv
 
  609    real(kind=rp), 
dimension(lx, lx), 
intent(in) :: dx, dy, dz
 
  610    real(kind=rp), 
dimension(lx, lx, lx) ::  dudr
 
  611    real(kind=rp), 
dimension(lx, lx, lx) ::  duds
 
  612    real(kind=rp), 
dimension(lx, lx, lx) ::  dudt
 
  613    integer :: e, i, j, k
 
  618             dudr(i,j,1) = dx(i,1) * u(1,j,1,e) &
 
  619                         + dx(i,2) * u(2,j,1,e) &
 
  620                         + dx(i,3) * u(3,j,1,e) &
 
  621                         + dx(i,4) * u(4,j,1,e) &
 
  622                         + dx(i,5) * u(5,j,1,e) &
 
  623                         + dx(i,6) * u(6,j,1,e) &
 
  624                         + dx(i,7) * u(7,j,1,e) &
 
  625                         + dx(i,8) * u(8,j,1,e) &
 
  626                         + dx(i,9) * u(9,j,1,e) &
 
  627                         + dx(i,10) * u(10,j,1,e)
 
  634                duds(i,j,k) = dy(j,1) * u(i,1,k,e) &
 
  635                            + dy(j,2) * u(i,2,k,e) &
 
  636                            + dy(j,3) * u(i,3,k,e) &
 
  637                            + dy(j,4) * u(i,4,k,e) &
 
  638                            + dy(j,5) * u(i,5,k,e) &
 
  639                            + dy(j,6) * u(i,6,k,e) &
 
  640                            + dy(j,7) * u(i,7,k,e) &
 
  641                            + dy(j,8) * u(i,8,k,e) &
 
  642                            + dy(j,9) * u(i,9,k,e) &
 
  643                            + dy(j,10) * u(i,10,k,e)
 
  650             dudt(i,1,k) = dz(k,1) * u(i,1,1,e) &
 
  651                         + dz(k,2) * u(i,1,2,e) &
 
  652                         + dz(k,3) * u(i,1,3,e) &
 
  653                         + dz(k,4) * u(i,1,4,e) &
 
  654                         + dz(k,5) * u(i,1,5,e) &
 
  655                         + dz(k,6) * u(i,1,6,e) &
 
  656                         + dz(k,7) * u(i,1,7,e) &
 
  657                         + dz(k,8) * u(i,1,8,e) &
 
  658                         + dz(k,9) * u(i,1,9,e) &
 
  659                         + dz(k,10) * u(i,1,10,e)
 
  663       do i = 1, lx * lx * lx
 
  664          du(i,1,1,e) = jacinv(i,1,1,e) &
 
  666                         * ( drdx(i,1,1,e) * dudr(i,1,1) &
 
  667                           + dsdx(i,1,1,e) * duds(i,1,1) &
 
  668                           + dtdx(i,1,1,e) * dudt(i,1,1) ) &
 
  670                         * ( drdy(i,1,1,e) * dudr(i,1,1) &
 
  671                           + dsdy(i,1,1,e) * duds(i,1,1) &
 
  672                           + dtdy(i,1,1,e) * dudt(i,1,1) ) &
 
  674                         * ( drdz(i,1,1,e) * dudr(i,1,1) &
 
  675                           + dsdz(i,1,1,e) * duds(i,1,1) &
 
  676                           + dtdz(i,1,1,e) * dudt(i,1,1) ) )
 
  680  end subroutine cpu_conv1_lx10
 
  682  subroutine cpu_conv1_lx9(du, u, vx, vy, vz, dx, dy, dz, &
 
  683       drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, &
 
  685    integer, 
parameter :: lx = 9
 
  686    integer, 
intent(in) :: nelv
 
  687    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(inout) ::  du
 
  688    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) ::  u, vx, vy, vz
 
  689    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdx, dsdx, dtdx
 
  690    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdy, dsdy, dtdy
 
  691    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdz, dsdz, dtdz
 
  692    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: jacinv
 
  693    real(kind=rp), 
dimension(lx, lx), 
intent(in) :: dx, dy, dz
 
  694    real(kind=rp), 
dimension(lx, lx, lx) ::  dudr
 
  695    real(kind=rp), 
dimension(lx, lx, lx) ::  duds
 
  696    real(kind=rp), 
dimension(lx, lx, lx) ::  dudt
 
  697    integer :: e, i, j, k
 
  702             dudr(i,j,1) = dx(i,1) * u(1,j,1,e) &
 
  703                         + dx(i,2) * u(2,j,1,e) &
 
  704                         + dx(i,3) * u(3,j,1,e) &
 
  705                         + dx(i,4) * u(4,j,1,e) &
 
  706                         + dx(i,5) * u(5,j,1,e) &
 
  707                         + dx(i,6) * u(6,j,1,e) &
 
  708                         + dx(i,7) * u(7,j,1,e) &
 
  709                         + dx(i,8) * u(8,j,1,e) &
 
  710                         + dx(i,9) * u(9,j,1,e)
 
  717                duds(i,j,k) = dy(j,1) * u(i,1,k,e) &
 
  718                            + dy(j,2) * u(i,2,k,e) &
 
  719                            + dy(j,3) * u(i,3,k,e) &
 
  720                            + dy(j,4) * u(i,4,k,e) &
 
  721                            + dy(j,5) * u(i,5,k,e) &
 
  722                            + dy(j,6) * u(i,6,k,e) &
 
  723                            + dy(j,7) * u(i,7,k,e) &
 
  724                            + dy(j,8) * u(i,8,k,e) &
 
  725                            + dy(j,9) * u(i,9,k,e)
 
  732             dudt(i,1,k) = dz(k,1) * u(i,1,1,e) &
 
  733                         + dz(k,2) * u(i,1,2,e) &
 
  734                         + dz(k,3) * u(i,1,3,e) &
 
  735                         + dz(k,4) * u(i,1,4,e) &
 
  736                         + dz(k,5) * u(i,1,5,e) &
 
  737                         + dz(k,6) * u(i,1,6,e) &
 
  738                         + dz(k,7) * u(i,1,7,e) &
 
  739                         + dz(k,8) * u(i,1,8,e) &
 
  740                         + dz(k,9) * u(i,1,9,e)
 
  744       do i = 1, lx * lx * lx
 
  745          du(i,1,1,e) = jacinv(i,1,1,e) &
 
  747                         * ( drdx(i,1,1,e) * dudr(i,1,1) &
 
  748                           + dsdx(i,1,1,e) * duds(i,1,1) &
 
  749                           + dtdx(i,1,1,e) * dudt(i,1,1) ) &
 
  751                         * ( drdy(i,1,1,e) * dudr(i,1,1) &
 
  752                           + dsdy(i,1,1,e) * duds(i,1,1) &
 
  753                           + dtdy(i,1,1,e) * dudt(i,1,1) ) &
 
  755                         * ( drdz(i,1,1,e) * dudr(i,1,1) &
 
  756                           + dsdz(i,1,1,e) * duds(i,1,1) &
 
  757                           + dtdz(i,1,1,e) * dudt(i,1,1) ) )
 
  761  end subroutine cpu_conv1_lx9
 
  763  subroutine cpu_conv1_lx8(du, u, vx, vy, vz, dx, dy, dz, &
 
  764       drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, &
 
  766    integer, 
parameter :: lx = 8
 
  767    integer, 
intent(in) :: nelv
 
  768    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(inout) ::  du
 
  769    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) ::  u, vx, vy, vz
 
  770    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdx, dsdx, dtdx
 
  771    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdy, dsdy, dtdy
 
  772    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdz, dsdz, dtdz
 
  773    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: jacinv
 
  774    real(kind=rp), 
dimension(lx, lx), 
intent(in) :: dx, dy, dz
 
  775    real(kind=rp), 
dimension(lx, lx, lx) ::  dudr
 
  776    real(kind=rp), 
dimension(lx, lx, lx) ::  duds
 
  777    real(kind=rp), 
dimension(lx, lx, lx) ::  dudt
 
  778    integer :: e, i, j, k
 
  783             dudr(i,j,1) = dx(i,1) * u(1,j,1,e) &
 
  784                         + dx(i,2) * u(2,j,1,e) &
 
  785                         + dx(i,3) * u(3,j,1,e) &
 
  786                         + dx(i,4) * u(4,j,1,e) &
 
  787                         + dx(i,5) * u(5,j,1,e) &
 
  788                         + dx(i,6) * u(6,j,1,e) &
 
  789                         + dx(i,7) * u(7,j,1,e) &
 
  790                         + dx(i,8) * u(8,j,1,e)
 
  797                duds(i,j,k) = dy(j,1) * u(i,1,k,e) &
 
  798                            + dy(j,2) * u(i,2,k,e) &
 
  799                            + dy(j,3) * u(i,3,k,e) &
 
  800                            + dy(j,4) * u(i,4,k,e) &
 
  801                            + dy(j,5) * u(i,5,k,e) &
 
  802                            + dy(j,6) * u(i,6,k,e) &
 
  803                            + dy(j,7) * u(i,7,k,e) &
 
  804                            + dy(j,8) * u(i,8,k,e)
 
  811             dudt(i,1,k) = dz(k,1) * u(i,1,1,e) &
 
  812                         + dz(k,2) * u(i,1,2,e) &
 
  813                         + dz(k,3) * u(i,1,3,e) &
 
  814                         + dz(k,4) * u(i,1,4,e) &
 
  815                         + dz(k,5) * u(i,1,5,e) &
 
  816                         + dz(k,6) * u(i,1,6,e) &
 
  817                         + dz(k,7) * u(i,1,7,e) &
 
  818                         + dz(k,8) * u(i,1,8,e)
 
  822       do i = 1, lx * lx * lx
 
  823          du(i,1,1,e) = jacinv(i,1,1,e) &
 
  825                         * ( drdx(i,1,1,e) * dudr(i,1,1) &
 
  826                           + dsdx(i,1,1,e) * duds(i,1,1) &
 
  827                           + dtdx(i,1,1,e) * dudt(i,1,1) ) &
 
  829                         * ( drdy(i,1,1,e) * dudr(i,1,1) &
 
  830                           + dsdy(i,1,1,e) * duds(i,1,1) &
 
  831                           + dtdy(i,1,1,e) * dudt(i,1,1) ) &
 
  833                         * ( drdz(i,1,1,e) * dudr(i,1,1) &
 
  834                           + dsdz(i,1,1,e) * duds(i,1,1) &
 
  835                           + dtdz(i,1,1,e) * dudt(i,1,1) ) )
 
  839  end subroutine cpu_conv1_lx8
 
  841  subroutine cpu_conv1_lx7(du, u, vx, vy, vz, dx, dy, dz, &
 
  842       drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, &
 
  844    integer, 
parameter :: lx = 7
 
  845    integer, 
intent(in) :: nelv
 
  846    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(inout) ::  du
 
  847    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) ::  u, vx, vy, vz
 
  848    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdx, dsdx, dtdx
 
  849    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdy, dsdy, dtdy
 
  850    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdz, dsdz, dtdz
 
  851    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: jacinv
 
  852    real(kind=rp), 
dimension(lx, lx), 
intent(in) :: dx, dy, dz
 
  853    real(kind=rp), 
dimension(lx, lx, lx) ::  dudr
 
  854    real(kind=rp), 
dimension(lx, lx, lx) ::  duds
 
  855    real(kind=rp), 
dimension(lx, lx, lx) ::  dudt
 
  856    integer :: e, i, j, k
 
  861             dudr(i,j,1) = dx(i,1) * u(1,j,1,e) &
 
  862                         + dx(i,2) * u(2,j,1,e) &
 
  863                         + dx(i,3) * u(3,j,1,e) &
 
  864                         + dx(i,4) * u(4,j,1,e) &
 
  865                         + dx(i,5) * u(5,j,1,e) &
 
  866                         + dx(i,6) * u(6,j,1,e) &
 
  867                         + dx(i,7) * u(7,j,1,e)
 
  874                duds(i,j,k) = dy(j,1) * u(i,1,k,e) &
 
  875                            + dy(j,2) * u(i,2,k,e) &
 
  876                            + dy(j,3) * u(i,3,k,e) &
 
  877                            + dy(j,4) * u(i,4,k,e) &
 
  878                            + dy(j,5) * u(i,5,k,e) &
 
  879                            + dy(j,6) * u(i,6,k,e) &
 
  880                            + dy(j,7) * u(i,7,k,e)
 
  887             dudt(i,1,k) = dz(k,1) * u(i,1,1,e) &
 
  888                         + dz(k,2) * u(i,1,2,e) &
 
  889                         + dz(k,3) * u(i,1,3,e) &
 
  890                         + dz(k,4) * u(i,1,4,e) &
 
  891                         + dz(k,5) * u(i,1,5,e) &
 
  892                         + dz(k,6) * u(i,1,6,e) &
 
  893                         + dz(k,7) * u(i,1,7,e)
 
  897       do i = 1, lx * lx * lx
 
  898          du(i,1,1,e) = jacinv(i,1,1,e) &
 
  900                         * ( drdx(i,1,1,e) * dudr(i,1,1) &
 
  901                           + dsdx(i,1,1,e) * duds(i,1,1) &
 
  902                           + dtdx(i,1,1,e) * dudt(i,1,1) ) &
 
  904                         * ( drdy(i,1,1,e) * dudr(i,1,1) &
 
  905                           + dsdy(i,1,1,e) * duds(i,1,1) &
 
  906                           + dtdy(i,1,1,e) * dudt(i,1,1) ) &
 
  908                         * ( drdz(i,1,1,e) * dudr(i,1,1) &
 
  909                           + dsdz(i,1,1,e) * duds(i,1,1) &
 
  910                           + dtdz(i,1,1,e) * dudt(i,1,1) ) )
 
  914  end subroutine cpu_conv1_lx7
 
  916  subroutine cpu_conv1_lx6(du, u, vx, vy, vz, dx, dy, dz, &
 
  917       drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, &
 
  919    integer, 
parameter :: lx = 6
 
  920    integer, 
intent(in) :: nelv
 
  921    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(inout) ::  du
 
  922    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) ::  u, vx, vy, vz
 
  923    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdx, dsdx, dtdx
 
  924    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdy, dsdy, dtdy
 
  925    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdz, dsdz, dtdz
 
  926    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: jacinv
 
  927    real(kind=rp), 
dimension(lx, lx), 
intent(in) :: dx, dy, dz
 
  928    real(kind=rp), 
dimension(lx, lx, lx) ::  dudr
 
  929    real(kind=rp), 
dimension(lx, lx, lx) ::  duds
 
  930    real(kind=rp), 
dimension(lx, lx, lx) ::  dudt
 
  931    integer :: e, i, j, k
 
  936             dudr(i,j,1) = dx(i,1) * u(1,j,1,e) &
 
  937                         + dx(i,2) * u(2,j,1,e) &
 
  938                         + dx(i,3) * u(3,j,1,e) &
 
  939                         + dx(i,4) * u(4,j,1,e) &
 
  940                         + dx(i,5) * u(5,j,1,e) &
 
  941                         + dx(i,6) * u(6,j,1,e)
 
  948                duds(i,j,k) = dy(j,1) * u(i,1,k,e) &
 
  949                            + dy(j,2) * u(i,2,k,e) &
 
  950                            + dy(j,3) * u(i,3,k,e) &
 
  951                            + dy(j,4) * u(i,4,k,e) &
 
  952                            + dy(j,5) * u(i,5,k,e) &
 
  953                            + dy(j,6) * u(i,6,k,e)
 
  960             dudt(i,1,k) = dz(k,1) * u(i,1,1,e) &
 
  961                         + dz(k,2) * u(i,1,2,e) &
 
  962                         + dz(k,3) * u(i,1,3,e) &
 
  963                         + dz(k,4) * u(i,1,4,e) &
 
  964                         + dz(k,5) * u(i,1,5,e) &
 
  965                         + dz(k,6) * u(i,1,6,e)
 
  969       do i = 1, lx * lx * lx
 
  970          du(i,1,1,e) = jacinv(i,1,1,e) &
 
  972                         * ( drdx(i,1,1,e) * dudr(i,1,1) &
 
  973                           + dsdx(i,1,1,e) * duds(i,1,1) &
 
  974                           + dtdx(i,1,1,e) * dudt(i,1,1) ) &
 
  976                         * ( drdy(i,1,1,e) * dudr(i,1,1) &
 
  977                           + dsdy(i,1,1,e) * duds(i,1,1) &
 
  978                           + dtdy(i,1,1,e) * dudt(i,1,1) ) &
 
  980                         * ( drdz(i,1,1,e) * dudr(i,1,1) &
 
  981                           + dsdz(i,1,1,e) * duds(i,1,1) &
 
  982                           + dtdz(i,1,1,e) * dudt(i,1,1) ) )
 
  986  end subroutine cpu_conv1_lx6
 
  988  subroutine cpu_conv1_lx5(du, u, vx, vy, vz, dx, dy, dz, &
 
  989       drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, &
 
  991    integer, 
parameter :: lx = 5
 
  992    integer, 
intent(in) :: nelv
 
  993    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(inout) ::  du
 
  994    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) ::  u, vx, vy, vz
 
  995    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdx, dsdx, dtdx
 
  996    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdy, dsdy, dtdy
 
  997    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdz, dsdz, dtdz
 
  998    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: jacinv
 
  999    real(kind=rp), 
dimension(lx, lx), 
intent(in) :: dx, dy, dz
 
 1000    real(kind=rp), 
dimension(lx, lx, lx) ::  dudr
 
 1001    real(kind=rp), 
dimension(lx, lx, lx) ::  duds
 
 1002    real(kind=rp), 
dimension(lx, lx, lx) ::  dudt
 
 1003    integer :: e, i, j, k
 
 1008             dudr(i,j,1) = dx(i,1) * u(1,j,1,e) &
 
 1009                         + dx(i,2) * u(2,j,1,e) &
 
 1010                         + dx(i,3) * u(3,j,1,e) &
 
 1011                         + dx(i,4) * u(4,j,1,e) &
 
 1012                         + dx(i,5) * u(5,j,1,e)
 
 1019                duds(i,j,k) = dy(j,1) * u(i,1,k,e) &
 
 1020                            + dy(j,2) * u(i,2,k,e) &
 
 1021                            + dy(j,3) * u(i,3,k,e) &
 
 1022                            + dy(j,4) * u(i,4,k,e) &
 
 1023                            + dy(j,5) * u(i,5,k,e)
 
 1030             dudt(i,1,k) = dz(k,1) * u(i,1,1,e) &
 
 1031                         + dz(k,2) * u(i,1,2,e) &
 
 1032                         + dz(k,3) * u(i,1,3,e) &
 
 1033                         + dz(k,4) * u(i,1,4,e) &
 
 1034                         + dz(k,5) * u(i,1,5,e)
 
 1038       do i = 1, lx * lx * lx
 
 1039          du(i,1,1,e) = jacinv(i,1,1,e) &
 
 1041                         * ( drdx(i,1,1,e) * dudr(i,1,1) &
 
 1042                           + dsdx(i,1,1,e) * duds(i,1,1) &
 
 1043                           + dtdx(i,1,1,e) * dudt(i,1,1) ) &
 
 1045                         * ( drdy(i,1,1,e) * dudr(i,1,1) &
 
 1046                           + dsdy(i,1,1,e) * duds(i,1,1) &
 
 1047                           + dtdy(i,1,1,e) * dudt(i,1,1) ) &
 
 1049                         * ( drdz(i,1,1,e) * dudr(i,1,1) &
 
 1050                           + dsdz(i,1,1,e) * duds(i,1,1) &
 
 1051                           + dtdz(i,1,1,e) * dudt(i,1,1) ) )
 
 1055  end subroutine cpu_conv1_lx5
 
 1057  subroutine cpu_conv1_lx4(du, u, vx, vy, vz, dx, dy, dz, &
 
 1058       drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, &
 
 1060    integer, 
parameter :: lx = 4
 
 1061    integer, 
intent(in) :: nelv
 
 1062    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(inout) ::  du
 
 1063    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) ::  u, vx, vy, vz
 
 1064    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdx, dsdx, dtdx
 
 1065    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdy, dsdy, dtdy
 
 1066    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdz, dsdz, dtdz
 
 1067    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: jacinv
 
 1068    real(kind=rp), 
dimension(lx, lx), 
intent(in) :: dx, dy, dz
 
 1069    real(kind=rp), 
dimension(lx, lx, lx) ::  dudr
 
 1070    real(kind=rp), 
dimension(lx, lx, lx) ::  duds
 
 1071    real(kind=rp), 
dimension(lx, lx, lx) ::  dudt
 
 1072    integer :: e, i, j, k
 
 1077             dudr(i,j,1) = dx(i,1) * u(1,j,1,e) &
 
 1078                         + dx(i,2) * u(2,j,1,e) &
 
 1079                         + dx(i,3) * u(3,j,1,e) &
 
 1080                         + dx(i,4) * u(4,j,1,e)
 
 1087                duds(i,j,k) = dy(j,1) * u(i,1,k,e) &
 
 1088                            + dy(j,2) * u(i,2,k,e) &
 
 1089                            + dy(j,3) * u(i,3,k,e) &
 
 1090                            + dy(j,4) * u(i,4,k,e)
 
 1097             dudt(i,1,k) = dz(k,1) * u(i,1,1,e) &
 
 1098                         + dz(k,2) * u(i,1,2,e) &
 
 1099                         + dz(k,3) * u(i,1,3,e) &
 
 1100                         + dz(k,4) * u(i,1,4,e)
 
 1104       do i = 1, lx * lx * lx
 
 1105          du(i,1,1,e) = jacinv(i,1,1,e) &
 
 1107                         * ( drdx(i,1,1,e) * dudr(i,1,1) &
 
 1108                           + dsdx(i,1,1,e) * duds(i,1,1) &
 
 1109                           + dtdx(i,1,1,e) * dudt(i,1,1) ) &
 
 1111                         * ( drdy(i,1,1,e) * dudr(i,1,1) &
 
 1112                           + dsdy(i,1,1,e) * duds(i,1,1) &
 
 1113                           + dtdy(i,1,1,e) * dudt(i,1,1) ) &
 
 1115                         * ( drdz(i,1,1,e) * dudr(i,1,1) &
 
 1116                           + dsdz(i,1,1,e) * duds(i,1,1) &
 
 1117                           + dtdz(i,1,1,e) * dudt(i,1,1) ) )
 
 1121  end subroutine cpu_conv1_lx4
 
 1123  subroutine cpu_conv1_lx3(du, u, vx, vy, vz, dx, dy, dz, &
 
 1124       drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, &
 
 1126    integer, 
parameter :: lx = 3
 
 1127    integer, 
intent(in) :: nelv
 
 1128    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(inout) ::  du
 
 1129    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) ::  u, vx, vy, vz
 
 1130    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdx, dsdx, dtdx
 
 1131    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdy, dsdy, dtdy
 
 1132    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdz, dsdz, dtdz
 
 1133    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: jacinv
 
 1134    real(kind=rp), 
dimension(lx, lx), 
intent(in) :: dx, dy, dz
 
 1135    real(kind=rp), 
dimension(lx, lx, lx) ::  dudr
 
 1136    real(kind=rp), 
dimension(lx, lx, lx) ::  duds
 
 1137    real(kind=rp), 
dimension(lx, lx, lx) ::  dudt
 
 1138    integer :: e, i, j, k
 
 1143             dudr(i,j,1) = dx(i,1) * u(1,j,1,e) &
 
 1144                         + dx(i,2) * u(2,j,1,e) &
 
 1145                         + dx(i,3) * u(3,j,1,e)
 
 1152                duds(i,j,k) = dy(j,1) * u(i,1,k,e) &
 
 1153                            + dy(j,2) * u(i,2,k,e) &
 
 1154                            + dy(j,3) * u(i,3,k,e)
 
 1161             dudt(i,1,k) = dz(k,1) * u(i,1,1,e) &
 
 1162                         + dz(k,2) * u(i,1,2,e) &
 
 1163                         + dz(k,3) * u(i,1,3,e)
 
 1167       do i = 1, lx * lx * lx
 
 1168          du(i,1,1,e) = jacinv(i,1,1,e) &
 
 1170                         * ( drdx(i,1,1,e) * dudr(i,1,1) &
 
 1171                           + dsdx(i,1,1,e) * duds(i,1,1) &
 
 1172                           + dtdx(i,1,1,e) * dudt(i,1,1) ) &
 
 1174                         * ( drdy(i,1,1,e) * dudr(i,1,1) &
 
 1175                           + dsdy(i,1,1,e) * duds(i,1,1) &
 
 1176                           + dtdy(i,1,1,e) * dudt(i,1,1) ) &
 
 1178                         * ( drdz(i,1,1,e) * dudr(i,1,1) &
 
 1179                           + dsdz(i,1,1,e) * duds(i,1,1) &
 
 1180                           + dtdz(i,1,1,e) * dudt(i,1,1) ) )
 
 1184  end subroutine cpu_conv1_lx3
 
 1186  subroutine cpu_conv1_lx2(du, u, vx, vy, vz, dx, dy, dz, &
 
 1187       drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, &
 
 1189    integer, 
parameter :: lx = 2
 
 1190    integer, 
intent(in) :: nelv
 
 1191    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(inout) ::  du
 
 1192    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) ::  u, vx, vy, vz
 
 1193    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdx, dsdx, dtdx
 
 1194    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdy, dsdy, dtdy
 
 1195    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: drdz, dsdz, dtdz
 
 1196    real(kind=rp), 
dimension(lx, lx, lx, nelv), 
intent(in) :: jacinv
 
 1197    real(kind=rp), 
dimension(lx, lx), 
intent(in) :: dx, dy, dz
 
 1198    real(kind=rp), 
dimension(lx, lx, lx) ::  dudr
 
 1199    real(kind=rp), 
dimension(lx, lx, lx) ::  duds
 
 1200    real(kind=rp), 
dimension(lx, lx, lx) ::  dudt
 
 1201    integer :: e, i, j, k
 
 1206             dudr(i,j,1) = dx(i,1) * u(1,j,1,e) &
 
 1207                         + dx(i,2) * u(2,j,1,e)
 
 1214                duds(i,j,k) = dy(j,1) * u(i,1,k,e) &
 
 1215                            + dy(j,2) * u(i,2,k,e)
 
 1222             dudt(i,1,k) = dz(k,1) * u(i,1,1,e) &
 
 1223                         + dz(k,2) * u(i,1,2,e)
 
 1227       do i = 1, lx * lx * lx
 
 1228          du(i,1,1,e) = jacinv(i,1,1,e) &
 
 1230                         * ( drdx(i,1,1,e) * dudr(i,1,1) &
 
 1231                           + dsdx(i,1,1,e) * duds(i,1,1) &
 
 1232                           + dtdx(i,1,1,e) * dudt(i,1,1) ) &
 
 1234                         * ( drdy(i,1,1,e) * dudr(i,1,1) &
 
 1235                           + dsdy(i,1,1,e) * duds(i,1,1) &
 
 1236                           + dtdy(i,1,1,e) * dudt(i,1,1) ) &
 
 1238                         * ( drdz(i,1,1,e) * dudr(i,1,1) &
 
 1239                           + dsdz(i,1,1,e) * duds(i,1,1) &
 
 1240                           + dtdz(i,1,1,e) * dudt(i,1,1) ) )
 
 1244  end subroutine cpu_conv1_lx2
 
 1246  subroutine opr_cpu_conv1_single(du, u, vx, vy, vz, Xh, coef, e)
 
 1247    integer, 
parameter :: e_len = 1
 
 1248    type(space_t), 
intent(in) :: Xh
 
 1249    type(coef_t), 
intent(in) :: coef
 
 1250    integer, 
intent(in) :: e
 
 1251    real(kind=rp), 
intent(inout) ::  du(xh%lxyz, e_len)
 
 1252    real(kind=rp), 
intent(inout) ::  u(xh%lx, xh%ly, xh%lz, e_len)
 
 1253    real(kind=rp), 
intent(inout) ::  vx(xh%lx, xh%ly, xh%lz, e_len)
 
 1254    real(kind=rp), 
intent(inout) ::  vy(xh%lx, xh%ly, xh%lz, e_len)
 
 1255    real(kind=rp), 
intent(inout) ::  vz(xh%lx, xh%ly, xh%lz, e_len)
 
 1257    associate(drdx => coef%drdx, drdy => coef%drdy, drdz => coef%drdz, &
 
 1258         dsdx => coef%dsdx, dsdy => coef%dsdy, dsdz => coef%dsdz, &
 
 1259         dtdx => coef%dtdx, dtdy => coef%dtdy, dtdz => coef%dtdz, &
 
 1260         jacinv => coef%jacinv)
 
 1263         call cpu_conv1_lx14_single(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
 
 1264              drdx(1,1,1,e), dsdx(1,1,1,e), dtdx(1,1,1,e),&
 
 1265              drdy(1,1,1,e), dsdy(1,1,1,e), dtdy(1,1,1,e),&
 
 1266              drdz(1,1,1,e), dsdz(1,1,1,e), dtdz(1,1,1,e),&
 
 1269         call cpu_conv1_lx13_single(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
 
 1270              drdx(1,1,1,e), dsdx(1,1,1,e), dtdx(1,1,1,e),&
 
 1271              drdy(1,1,1,e), dsdy(1,1,1,e), dtdy(1,1,1,e),&
 
 1272              drdz(1,1,1,e), dsdz(1,1,1,e), dtdz(1,1,1,e),&
 
 1275         call cpu_conv1_lx12_single(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
 
 1276              drdx(1,1,1,e), dsdx(1,1,1,e), dtdx(1,1,1,e),&
 
 1277              drdy(1,1,1,e), dsdy(1,1,1,e), dtdy(1,1,1,e),&
 
 1278              drdz(1,1,1,e), dsdz(1,1,1,e), dtdz(1,1,1,e),&
 
 1281         call cpu_conv1_lx11_single(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
 
 1282              drdx(1,1,1,e), dsdx(1,1,1,e), dtdx(1,1,1,e),&
 
 1283              drdy(1,1,1,e), dsdy(1,1,1,e), dtdy(1,1,1,e),&
 
 1284              drdz(1,1,1,e), dsdz(1,1,1,e), dtdz(1,1,1,e),&
 
 1287         call cpu_conv1_lx10_single(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
 
 1288              drdx(1,1,1,e), dsdx(1,1,1,e), dtdx(1,1,1,e),&
 
 1289              drdy(1,1,1,e), dsdy(1,1,1,e), dtdy(1,1,1,e),&
 
 1290              drdz(1,1,1,e), dsdz(1,1,1,e), dtdz(1,1,1,e),&
 
 1293         call cpu_conv1_lx9_single(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
 
 1294              drdx(1,1,1,e), dsdx(1,1,1,e), dtdx(1,1,1,e),&
 
 1295              drdy(1,1,1,e), dsdy(1,1,1,e), dtdy(1,1,1,e),&
 
 1296              drdz(1,1,1,e), dsdz(1,1,1,e), dtdz(1,1,1,e),&
 
 1299         call cpu_conv1_lx8_single(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
 
 1300              drdx(1,1,1,e), dsdx(1,1,1,e), dtdx(1,1,1,e),&
 
 1301              drdy(1,1,1,e), dsdy(1,1,1,e), dtdy(1,1,1,e),&
 
 1302              drdz(1,1,1,e), dsdz(1,1,1,e), dtdz(1,1,1,e),&
 
 1305         call cpu_conv1_lx7_single(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
 
 1306              drdx(1,1,1,e), dsdx(1,1,1,e), dtdx(1,1,1,e),&
 
 1307              drdy(1,1,1,e), dsdy(1,1,1,e), dtdy(1,1,1,e),&
 
 1308              drdz(1,1,1,e), dsdz(1,1,1,e), dtdz(1,1,1,e),&
 
 1311         call cpu_conv1_lx6_single(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
 
 1312              drdx(1,1,1,e), dsdx(1,1,1,e), dtdx(1,1,1,e),&
 
 1313              drdy(1,1,1,e), dsdy(1,1,1,e), dtdy(1,1,1,e),&
 
 1314              drdz(1,1,1,e), dsdz(1,1,1,e), dtdz(1,1,1,e),&
 
 1317         call cpu_conv1_lx5_single(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
 
 1318              drdx(1,1,1,e), dsdx(1,1,1,e), dtdx(1,1,1,e),&
 
 1319              drdy(1,1,1,e), dsdy(1,1,1,e), dtdy(1,1,1,e),&
 
 1320              drdz(1,1,1,e), dsdz(1,1,1,e), dtdz(1,1,1,e),&
 
 1323         call cpu_conv1_lx4_single(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
 
 1324              drdx(1,1,1,e), dsdx(1,1,1,e), dtdx(1,1,1,e),&
 
 1325              drdy(1,1,1,e), dsdy(1,1,1,e), dtdy(1,1,1,e),&
 
 1326              drdz(1,1,1,e), dsdz(1,1,1,e), dtdz(1,1,1,e),&
 
 1329         call cpu_conv1_lx3_single(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
 
 1330              drdx(1,1,1,e), dsdx(1,1,1,e), dtdx(1,1,1,e),&
 
 1331              drdy(1,1,1,e), dsdy(1,1,1,e), dtdy(1,1,1,e),&
 
 1332              drdz(1,1,1,e), dsdz(1,1,1,e), dtdz(1,1,1,e),&
 
 1335         call cpu_conv1_lx2_single(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
 
 1336              drdx(1,1,1,e), dsdx(1,1,1,e), dtdx(1,1,1,e),&
 
 1337              drdy(1,1,1,e), dsdy(1,1,1,e), dtdy(1,1,1,e),&
 
 1338              drdz(1,1,1,e), dsdz(1,1,1,e), dtdz(1,1,1,e),&
 
 1341         call cpu_conv1_lx_single(du, u, vx, vy, vz, xh%dx, xh%dy, xh%dz, &
 
 1342              drdx(1,1,1,e), dsdx(1,1,1,e), dtdx(1,1,1,e),&
 
 1343              drdy(1,1,1,e), dsdy(1,1,1,e), dtdy(1,1,1,e),&
 
 1344              drdz(1,1,1,e), dsdz(1,1,1,e), dtdz(1,1,1,e),&
 
 1345              jacinv(1,1,1,e), xh%lx)
 
 1349  end subroutine opr_cpu_conv1_single
 
 1351  subroutine cpu_conv1_lx_single(du, u, vx, vy, vz, dx, dy, dz, &
 
 1352       drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, &
 
 1354    integer, 
intent(in) :: lx
 
 1355    real(kind=rp), 
dimension(lx, lx, lx), 
intent(inout) ::  du
 
 1356    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) ::  u, vx, vy, vz
 
 1357    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdx, dsdx, dtdx
 
 1358    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdy, dsdy, dtdy
 
 1359    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdz, dsdz, dtdz
 
 1360    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: jacinv
 
 1361    real(kind=rp), 
dimension(lx, lx), 
intent(in) :: dx, dy, dz
 
 1362    real(kind=rp), 
dimension(lx, lx, lx) ::  dudr
 
 1363    real(kind=rp), 
dimension(lx, lx, lx) ::  duds
 
 1364    real(kind=rp), 
dimension(lx, lx, lx) ::  dudt
 
 1365    real(kind=rp) :: tmp
 
 1366    integer :: i, j, k, l
 
 1372             tmp = tmp + dx(i,k) * u(k,j,1)
 
 1383                tmp = tmp + dy(j,l) * u(i,l,k)
 
 1394             tmp = tmp + dz(k,l) * u(i,1,l)
 
 1400    do i = 1, lx * lx * lx
 
 1401       du(i,1,1) = jacinv(i,1,1) &
 
 1403                  * ( drdx(i,1,1) * dudr(i,1,1) &
 
 1404                    + dsdx(i,1,1) * duds(i,1,1) &
 
 1405                    + dtdx(i,1,1) * dudt(i,1,1) ) &
 
 1407                  * ( drdy(i,1,1) * dudr(i,1,1) &
 
 1408                    + dsdy(i,1,1) * duds(i,1,1) &
 
 1409                    + dtdy(i,1,1) * dudt(i,1,1) ) &
 
 1411                  * ( drdz(i,1,1) * dudr(i,1,1) &
 
 1412                    + dsdz(i,1,1) * duds(i,1,1) &
 
 1413                    + dtdz(i,1,1) * dudt(i,1,1) ) )
 
 1416  end subroutine cpu_conv1_lx_single
 
 1418  subroutine cpu_conv1_lx14_single(du, u, vx, vy, vz, dx, dy, dz, &
 
 1419       drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, jacinv)
 
 1420    integer, 
parameter :: lx = 14
 
 1421    real(kind=rp), 
dimension(lx, lx, lx), 
intent(inout) ::  du
 
 1422    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) ::  u, vx, vy, vz
 
 1423    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdx, dsdx, dtdx
 
 1424    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdy, dsdy, dtdy
 
 1425    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdz, dsdz, dtdz
 
 1426    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: jacinv
 
 1427    real(kind=rp), 
dimension(lx, lx), 
intent(in) :: dx, dy, dz
 
 1428    real(kind=rp), 
dimension(lx, lx, lx) ::  dudr
 
 1429    real(kind=rp), 
dimension(lx, lx, lx) ::  duds
 
 1430    real(kind=rp), 
dimension(lx, lx, lx) ::  dudt
 
 1435          dudr(i,j,1) = dx(i,1) * u(1,j,1) &
 
 1436                      + dx(i,2) * u(2,j,1) &
 
 1437                      + dx(i,3) * u(3,j,1) &
 
 1438                      + dx(i,4) * u(4,j,1) &
 
 1439                      + dx(i,5) * u(5,j,1) &
 
 1440                      + dx(i,6) * u(6,j,1) &
 
 1441                      + dx(i,7) * u(7,j,1) &
 
 1442                      + dx(i,8) * u(8,j,1) &
 
 1443                      + dx(i,9) * u(9,j,1) &
 
 1444                      + dx(i,10) * u(10,j,1) &
 
 1445                      + dx(i,11) * u(11,j,1) &
 
 1446                      + dx(i,12) * u(12,j,1) &
 
 1447                      + dx(i,13) * u(13,j,1) &
 
 1448                      + dx(i,14) * u(14,j,1)
 
 1455             duds(i,j,k) = dy(j,1) * u(i,1,k) &
 
 1456                         + dy(j,2) * u(i,2,k) &
 
 1457                         + dy(j,3) * u(i,3,k) &
 
 1458                         + dy(j,4) * u(i,4,k) &
 
 1459                         + dy(j,5) * u(i,5,k) &
 
 1460                         + dy(j,6) * u(i,6,k) &
 
 1461                         + dy(j,7) * u(i,7,k) &
 
 1462                         + dy(j,8) * u(i,8,k) &
 
 1463                         + dy(j,9) * u(i,9,k) &
 
 1464                         + dy(j,10) * u(i,10,k) &
 
 1465                         + dy(j,11) * u(i,11,k) &
 
 1466                         + dy(j,12) * u(i,12,k) &
 
 1467                         + dy(j,13) * u(i,13,k) &
 
 1468                         + dy(j,14) * u(i,14,k)
 
 1475          dudt(i,1,k) = dz(k,1) * u(i,1,1) &
 
 1476                      + dz(k,2) * u(i,1,2) &
 
 1477                      + dz(k,3) * u(i,1,3) &
 
 1478                      + dz(k,4) * u(i,1,4) &
 
 1479                      + dz(k,5) * u(i,1,5) &
 
 1480                      + dz(k,6) * u(i,1,6) &
 
 1481                      + dz(k,7) * u(i,1,7) &
 
 1482                      + dz(k,8) * u(i,1,8) &
 
 1483                      + dz(k,9) * u(i,1,9) &
 
 1484                      + dz(k,10) * u(i,1,10) &
 
 1485                      + dz(k,11) * u(i,1,11) &
 
 1486                      + dz(k,12) * u(i,1,12) &
 
 1487                      + dz(k,13) * u(i,1,13) &
 
 1488                      + dz(k,14) * u(i,1,14)
 
 1492    do i = 1, lx * lx * lx
 
 1493       du(i,1,1) = jacinv(i,1,1) &
 
 1495                     * ( drdx(i,1,1) * dudr(i,1,1) &
 
 1496                       + dsdx(i,1,1) * duds(i,1,1) &
 
 1497                       + dtdx(i,1,1) * dudt(i,1,1) ) &
 
 1499                     * ( drdy(i,1,1) * dudr(i,1,1) &
 
 1500                       + dsdy(i,1,1) * duds(i,1,1) &
 
 1501                       + dtdy(i,1,1) * dudt(i,1,1) ) &
 
 1503                     * ( drdz(i,1,1) * dudr(i,1,1) &
 
 1504                       + dsdz(i,1,1) * duds(i,1,1) &
 
 1505                       + dtdz(i,1,1) * dudt(i,1,1) ) )
 
 1508  end subroutine cpu_conv1_lx14_single
 
 1510  subroutine cpu_conv1_lx13_single(du, u, vx, vy, vz, dx, dy, dz, &
 
 1511       drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, jacinv)
 
 1512    integer, 
parameter :: lx = 13
 
 1513    real(kind=rp), 
dimension(lx, lx, lx), 
intent(inout) ::  du
 
 1514    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) ::  u, vx, vy, vz
 
 1515    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdx, dsdx, dtdx
 
 1516    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdy, dsdy, dtdy
 
 1517    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdz, dsdz, dtdz
 
 1518    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: jacinv
 
 1519    real(kind=rp), 
dimension(lx, lx), 
intent(in) :: dx, dy, dz
 
 1520    real(kind=rp), 
dimension(lx, lx, lx) ::  dudr
 
 1521    real(kind=rp), 
dimension(lx, lx, lx) ::  duds
 
 1522    real(kind=rp), 
dimension(lx, lx, lx) ::  dudt
 
 1527          dudr(i,j,1) = dx(i,1) * u(1,j,1) &
 
 1528                      + dx(i,2) * u(2,j,1) &
 
 1529                      + dx(i,3) * u(3,j,1) &
 
 1530                      + dx(i,4) * u(4,j,1) &
 
 1531                      + dx(i,5) * u(5,j,1) &
 
 1532                      + dx(i,6) * u(6,j,1) &
 
 1533                      + dx(i,7) * u(7,j,1) &
 
 1534                      + dx(i,8) * u(8,j,1) &
 
 1535                      + dx(i,9) * u(9,j,1) &
 
 1536                      + dx(i,10) * u(10,j,1) &
 
 1537                      + dx(i,11) * u(11,j,1) &
 
 1538                      + dx(i,12) * u(12,j,1) &
 
 1539                      + dx(i,13) * u(13,j,1)
 
 1546             duds(i,j,k) = dy(j,1) * u(i,1,k) &
 
 1547                         + dy(j,2) * u(i,2,k) &
 
 1548                         + dy(j,3) * u(i,3,k) &
 
 1549                         + dy(j,4) * u(i,4,k) &
 
 1550                         + dy(j,5) * u(i,5,k) &
 
 1551                         + dy(j,6) * u(i,6,k) &
 
 1552                         + dy(j,7) * u(i,7,k) &
 
 1553                         + dy(j,8) * u(i,8,k) &
 
 1554                         + dy(j,9) * u(i,9,k) &
 
 1555                         + dy(j,10) * u(i,10,k) &
 
 1556                         + dy(j,11) * u(i,11,k) &
 
 1557                         + dy(j,12) * u(i,12,k) &
 
 1558                         + dy(j,13) * u(i,13,k)
 
 1565          dudt(i,1,k) = dz(k,1) * u(i,1,1) &
 
 1566                      + dz(k,2) * u(i,1,2) &
 
 1567                      + dz(k,3) * u(i,1,3) &
 
 1568                      + dz(k,4) * u(i,1,4) &
 
 1569                      + dz(k,5) * u(i,1,5) &
 
 1570                      + dz(k,6) * u(i,1,6) &
 
 1571                      + dz(k,7) * u(i,1,7) &
 
 1572                      + dz(k,8) * u(i,1,8) &
 
 1573                      + dz(k,9) * u(i,1,9) &
 
 1574                      + dz(k,10) * u(i,1,10) &
 
 1575                      + dz(k,11) * u(i,1,11) &
 
 1576                      + dz(k,12) * u(i,1,12) &
 
 1577                      + dz(k,13) * u(i,1,13)
 
 1581    do i = 1, lx * lx * lx
 
 1582       du(i,1,1) = jacinv(i,1,1) &
 
 1584                    * ( drdx(i,1,1) * dudr(i,1,1) &
 
 1585                      + dsdx(i,1,1) * duds(i,1,1) &
 
 1586                      + dtdx(i,1,1) * dudt(i,1,1) ) &
 
 1588                    * ( drdy(i,1,1) * dudr(i,1,1) &
 
 1589                      + dsdy(i,1,1) * duds(i,1,1) &
 
 1590                      + dtdy(i,1,1) * dudt(i,1,1) ) &
 
 1592                    * ( drdz(i,1,1) * dudr(i,1,1) &
 
 1593                      + dsdz(i,1,1) * duds(i,1,1) &
 
 1594                      + dtdz(i,1,1) * dudt(i,1,1) ) )
 
 1597  end subroutine cpu_conv1_lx13_single
 
 1600  subroutine cpu_conv1_lx12_single(du, u, vx, vy, vz, dx, dy, dz, &
 
 1601       drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, jacinv)
 
 1602    integer, 
parameter :: lx = 12
 
 1603    real(kind=rp), 
dimension(lx, lx, lx), 
intent(inout) ::  du
 
 1604    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) ::  u, vx, vy, vz
 
 1605    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdx, dsdx, dtdx
 
 1606    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdy, dsdy, dtdy
 
 1607    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdz, dsdz, dtdz
 
 1608    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: jacinv
 
 1609    real(kind=rp), 
dimension(lx, lx), 
intent(in) :: dx, dy, dz
 
 1610    real(kind=rp), 
dimension(lx, lx, lx) ::  dudr
 
 1611    real(kind=rp), 
dimension(lx, lx, lx) ::  duds
 
 1612    real(kind=rp), 
dimension(lx, lx, lx) ::  dudt
 
 1617          dudr(i,j,1) = dx(i,1) * u(1,j,1) &
 
 1618                      + dx(i,2) * u(2,j,1) &
 
 1619                      + dx(i,3) * u(3,j,1) &
 
 1620                      + dx(i,4) * u(4,j,1) &
 
 1621                      + dx(i,5) * u(5,j,1) &
 
 1622                      + dx(i,6) * u(6,j,1) &
 
 1623                      + dx(i,7) * u(7,j,1) &
 
 1624                      + dx(i,8) * u(8,j,1) &
 
 1625                      + dx(i,9) * u(9,j,1) &
 
 1626                      + dx(i,10) * u(10,j,1) &
 
 1627                      + dx(i,11) * u(11,j,1) &
 
 1628                      + dx(i,12) * u(12,j,1)
 
 1635             duds(i,j,k) = dy(j,1) * u(i,1,k) &
 
 1636                         + dy(j,2) * u(i,2,k) &
 
 1637                         + dy(j,3) * u(i,3,k) &
 
 1638                         + dy(j,4) * u(i,4,k) &
 
 1639                         + dy(j,5) * u(i,5,k) &
 
 1640                         + dy(j,6) * u(i,6,k) &
 
 1641                         + dy(j,7) * u(i,7,k) &
 
 1642                         + dy(j,8) * u(i,8,k) &
 
 1643                         + dy(j,9) * u(i,9,k) &
 
 1644                         + dy(j,10) * u(i,10,k) &
 
 1645                         + dy(j,11) * u(i,11,k) &
 
 1646                         + dy(j,12) * u(i,12,k)
 
 1653          dudt(i,1,k) = dz(k,1) * u(i,1,1) &
 
 1654                      + dz(k,2) * u(i,1,2) &
 
 1655                      + dz(k,3) * u(i,1,3) &
 
 1656                      + dz(k,4) * u(i,1,4) &
 
 1657                      + dz(k,5) * u(i,1,5) &
 
 1658                      + dz(k,6) * u(i,1,6) &
 
 1659                      + dz(k,7) * u(i,1,7) &
 
 1660                      + dz(k,8) * u(i,1,8) &
 
 1661                      + dz(k,9) * u(i,1,9) &
 
 1662                      + dz(k,10) * u(i,1,10) &
 
 1663                      + dz(k,11) * u(i,1,11) &
 
 1664                      + dz(k,12) * u(i,1,12)
 
 1668    do i = 1, lx * lx * lx
 
 1669       du(i,1,1) = jacinv(i,1,1) &
 
 1671                      * ( drdx(i,1,1) * dudr(i,1,1) &
 
 1672                        + dsdx(i,1,1) * duds(i,1,1) &
 
 1673                        + dtdx(i,1,1) * dudt(i,1,1) ) &
 
 1675                      * ( drdy(i,1,1) * dudr(i,1,1) &
 
 1676                        + dsdy(i,1,1) * duds(i,1,1) &
 
 1677                        + dtdy(i,1,1) * dudt(i,1,1) ) &
 
 1679                      * ( drdz(i,1,1) * dudr(i,1,1) &
 
 1680                        + dsdz(i,1,1) * duds(i,1,1) &
 
 1681                        + dtdz(i,1,1) * dudt(i,1,1) ) )
 
 1684  end subroutine cpu_conv1_lx12_single
 
 1686  subroutine cpu_conv1_lx11_single(du, u, vx, vy, vz, dx, dy, dz, &
 
 1687       drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, jacinv)
 
 1688    integer, 
parameter :: lx = 11
 
 1689    real(kind=rp), 
dimension(lx, lx, lx), 
intent(inout) ::  du
 
 1690    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) ::  u, vx, vy, vz
 
 1691    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdx, dsdx, dtdx
 
 1692    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdy, dsdy, dtdy
 
 1693    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdz, dsdz, dtdz
 
 1694    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: jacinv
 
 1695    real(kind=rp), 
dimension(lx, lx), 
intent(in) :: dx, dy, dz
 
 1696    real(kind=rp), 
dimension(lx, lx, lx) ::  dudr
 
 1697    real(kind=rp), 
dimension(lx, lx, lx) ::  duds
 
 1698    real(kind=rp), 
dimension(lx, lx, lx) ::  dudt
 
 1703          dudr(i,j,1) = dx(i,1) * u(1,j,1) &
 
 1704                      + dx(i,2) * u(2,j,1) &
 
 1705                      + dx(i,3) * u(3,j,1) &
 
 1706                      + dx(i,4) * u(4,j,1) &
 
 1707                      + dx(i,5) * u(5,j,1) &
 
 1708                      + dx(i,6) * u(6,j,1) &
 
 1709                      + dx(i,7) * u(7,j,1) &
 
 1710                      + dx(i,8) * u(8,j,1) &
 
 1711                      + dx(i,9) * u(9,j,1) &
 
 1712                      + dx(i,10) * u(10,j,1) &
 
 1713                      + dx(i,11) * u(11,j,1)
 
 1720             duds(i,j,k) = dy(j,1) * u(i,1,k) &
 
 1721                         + dy(j,2) * u(i,2,k) &
 
 1722                         + dy(j,3) * u(i,3,k) &
 
 1723                         + dy(j,4) * u(i,4,k) &
 
 1724                         + dy(j,5) * u(i,5,k) &
 
 1725                         + dy(j,6) * u(i,6,k) &
 
 1726                         + dy(j,7) * u(i,7,k) &
 
 1727                         + dy(j,8) * u(i,8,k) &
 
 1728                         + dy(j,9) * u(i,9,k) &
 
 1729                         + dy(j,10) * u(i,10,k) &
 
 1730                         + dy(j,11) * u(i,11,k)
 
 1737          dudt(i,1,k) = dz(k,1) * u(i,1,1) &
 
 1738                      + dz(k,2) * u(i,1,2) &
 
 1739                      + dz(k,3) * u(i,1,3) &
 
 1740                      + dz(k,4) * u(i,1,4) &
 
 1741                      + dz(k,5) * u(i,1,5) &
 
 1742                      + dz(k,6) * u(i,1,6) &
 
 1743                      + dz(k,7) * u(i,1,7) &
 
 1744                      + dz(k,8) * u(i,1,8) &
 
 1745                      + dz(k,9) * u(i,1,9) &
 
 1746                      + dz(k,10) * u(i,1,10) &
 
 1747                      + dz(k,11) * u(i,1,11)
 
 1751    do i = 1, lx * lx * lx
 
 1752       du(i,1,1) = jacinv(i,1,1) &
 
 1754                      * ( drdx(i,1,1) * dudr(i,1,1) &
 
 1755                         + dsdx(i,1,1) * duds(i,1,1) &
 
 1756                         + dtdx(i,1,1) * dudt(i,1,1) ) &
 
 1758                      * ( drdy(i,1,1) * dudr(i,1,1) &
 
 1759                        + dsdy(i,1,1) * duds(i,1,1) &
 
 1760                        + dtdy(i,1,1) * dudt(i,1,1) ) &
 
 1762                      * ( drdz(i,1,1) * dudr(i,1,1) &
 
 1763                        + dsdz(i,1,1) * duds(i,1,1) &
 
 1764                        + dtdz(i,1,1) * dudt(i,1,1) ) )
 
 1767  end subroutine cpu_conv1_lx11_single
 
 1769  subroutine cpu_conv1_lx10_single(du, u, vx, vy, vz, dx, dy, dz, &
 
 1770       drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, jacinv)
 
 1771    integer, 
parameter :: lx = 10
 
 1772    real(kind=rp), 
dimension(lx, lx, lx), 
intent(inout) ::  du
 
 1773    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) ::  u, vx, vy, vz
 
 1774    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdx, dsdx, dtdx
 
 1775    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdy, dsdy, dtdy
 
 1776    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdz, dsdz, dtdz
 
 1777    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: jacinv
 
 1778    real(kind=rp), 
dimension(lx, lx), 
intent(in) :: dx, dy, dz
 
 1779    real(kind=rp), 
dimension(lx, lx, lx) ::  dudr
 
 1780    real(kind=rp), 
dimension(lx, lx, lx) ::  duds
 
 1781    real(kind=rp), 
dimension(lx, lx, lx) ::  dudt
 
 1786          dudr(i,j,1) = dx(i,1) * u(1,j,1) &
 
 1787                      + dx(i,2) * u(2,j,1) &
 
 1788                      + dx(i,3) * u(3,j,1) &
 
 1789                      + dx(i,4) * u(4,j,1) &
 
 1790                      + dx(i,5) * u(5,j,1) &
 
 1791                      + dx(i,6) * u(6,j,1) &
 
 1792                      + dx(i,7) * u(7,j,1) &
 
 1793                      + dx(i,8) * u(8,j,1) &
 
 1794                      + dx(i,9) * u(9,j,1) &
 
 1795                      + dx(i,10) * u(10,j,1)
 
 1802             duds(i,j,k) = dy(j,1) * u(i,1,k) &
 
 1803                         + dy(j,2) * u(i,2,k) &
 
 1804                         + dy(j,3) * u(i,3,k) &
 
 1805                         + dy(j,4) * u(i,4,k) &
 
 1806                         + dy(j,5) * u(i,5,k) &
 
 1807                         + dy(j,6) * u(i,6,k) &
 
 1808                         + dy(j,7) * u(i,7,k) &
 
 1809                         + dy(j,8) * u(i,8,k) &
 
 1810                         + dy(j,9) * u(i,9,k) &
 
 1811                         + dy(j,10) * u(i,10,k)
 
 1818          dudt(i,1,k) = dz(k,1) * u(i,1,1) &
 
 1819                      + dz(k,2) * u(i,1,2) &
 
 1820                      + dz(k,3) * u(i,1,3) &
 
 1821                      + dz(k,4) * u(i,1,4) &
 
 1822                      + dz(k,5) * u(i,1,5) &
 
 1823                      + dz(k,6) * u(i,1,6) &
 
 1824                      + dz(k,7) * u(i,1,7) &
 
 1825                      + dz(k,8) * u(i,1,8) &
 
 1826                      + dz(k,9) * u(i,1,9) &
 
 1827                      + dz(k,10) * u(i,1,10)
 
 1831    do i = 1, lx * lx * lx
 
 1832       du(i,1,1) = jacinv(i,1,1) &
 
 1834                      * ( drdx(i,1,1) * dudr(i,1,1) &
 
 1835                        + dsdx(i,1,1) * duds(i,1,1) &
 
 1836                        + dtdx(i,1,1) * dudt(i,1,1) ) &
 
 1838                      * ( drdy(i,1,1) * dudr(i,1,1) &
 
 1839                        + dsdy(i,1,1) * duds(i,1,1) &
 
 1840                        + dtdy(i,1,1) * dudt(i,1,1) ) &
 
 1842                      * ( drdz(i,1,1) * dudr(i,1,1) &
 
 1843                        + dsdz(i,1,1) * duds(i,1,1) &
 
 1844                        + dtdz(i,1,1) * dudt(i,1,1) ) )
 
 1847  end subroutine cpu_conv1_lx10_single
 
 1849  subroutine cpu_conv1_lx9_single(du, u, vx, vy, vz, dx, dy, dz, &
 
 1850       drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, jacinv)
 
 1851    integer, 
parameter :: lx = 9
 
 1852    real(kind=rp), 
dimension(lx, lx, lx), 
intent(inout) ::  du
 
 1853    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) ::  u, vx, vy, vz
 
 1854    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdx, dsdx, dtdx
 
 1855    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdy, dsdy, dtdy
 
 1856    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdz, dsdz, dtdz
 
 1857    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: jacinv
 
 1858    real(kind=rp), 
dimension(lx, lx), 
intent(in) :: dx, dy, dz
 
 1859    real(kind=rp), 
dimension(lx, lx, lx) ::  dudr
 
 1860    real(kind=rp), 
dimension(lx, lx, lx) ::  duds
 
 1861    real(kind=rp), 
dimension(lx, lx, lx) ::  dudt
 
 1866          dudr(i,j,1) = dx(i,1) * u(1,j,1) &
 
 1867                      + dx(i,2) * u(2,j,1) &
 
 1868                      + dx(i,3) * u(3,j,1) &
 
 1869                      + dx(i,4) * u(4,j,1) &
 
 1870                      + dx(i,5) * u(5,j,1) &
 
 1871                      + dx(i,6) * u(6,j,1) &
 
 1872                      + dx(i,7) * u(7,j,1) &
 
 1873                      + dx(i,8) * u(8,j,1) &
 
 1874                      + dx(i,9) * u(9,j,1)
 
 1881             duds(i,j,k) = dy(j,1) * u(i,1,k) &
 
 1882                         + dy(j,2) * u(i,2,k) &
 
 1883                         + dy(j,3) * u(i,3,k) &
 
 1884                         + dy(j,4) * u(i,4,k) &
 
 1885                         + dy(j,5) * u(i,5,k) &
 
 1886                         + dy(j,6) * u(i,6,k) &
 
 1887                         + dy(j,7) * u(i,7,k) &
 
 1888                         + dy(j,8) * u(i,8,k) &
 
 1889                         + dy(j,9) * u(i,9,k)
 
 1896          dudt(i,1,k) = dz(k,1) * u(i,1,1) &
 
 1897                      + dz(k,2) * u(i,1,2) &
 
 1898                      + dz(k,3) * u(i,1,3) &
 
 1899                      + dz(k,4) * u(i,1,4) &
 
 1900                      + dz(k,5) * u(i,1,5) &
 
 1901                      + dz(k,6) * u(i,1,6) &
 
 1902                      + dz(k,7) * u(i,1,7) &
 
 1903                      + dz(k,8) * u(i,1,8) &
 
 1904                      + dz(k,9) * u(i,1,9)
 
 1908    do i = 1, lx * lx * lx
 
 1909       du(i,1,1) = jacinv(i,1,1) &
 
 1911                      * ( drdx(i,1,1) * dudr(i,1,1) &
 
 1912                        + dsdx(i,1,1) * duds(i,1,1) &
 
 1913                        + dtdx(i,1,1) * dudt(i,1,1) ) &
 
 1915                      * ( drdy(i,1,1) * dudr(i,1,1) &
 
 1916                        + dsdy(i,1,1) * duds(i,1,1) &
 
 1917                        + dtdy(i,1,1) * dudt(i,1,1) ) &
 
 1919                      * ( drdz(i,1,1) * dudr(i,1,1) &
 
 1920                        + dsdz(i,1,1) * duds(i,1,1) &
 
 1921                        + dtdz(i,1,1) * dudt(i,1,1) ) )
 
 1924  end subroutine cpu_conv1_lx9_single
 
 1926  subroutine cpu_conv1_lx8_single(du, u, vx, vy, vz, dx, dy, dz, &
 
 1927       drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, jacinv)
 
 1928    integer, 
parameter :: lx = 8
 
 1929    real(kind=rp), 
dimension(lx, lx, lx), 
intent(inout) ::  du
 
 1930    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) ::  u, vx, vy, vz
 
 1931    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdx, dsdx, dtdx
 
 1932    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdy, dsdy, dtdy
 
 1933    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdz, dsdz, dtdz
 
 1934    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: jacinv
 
 1935    real(kind=rp), 
dimension(lx, lx), 
intent(in) :: dx, dy, dz
 
 1936    real(kind=rp), 
dimension(lx, lx, lx) ::  dudr
 
 1937    real(kind=rp), 
dimension(lx, lx, lx) ::  duds
 
 1938    real(kind=rp), 
dimension(lx, lx, lx) ::  dudt
 
 1943          dudr(i,j,1) = dx(i,1) * u(1,j,1) &
 
 1944                      + dx(i,2) * u(2,j,1) &
 
 1945                      + dx(i,3) * u(3,j,1) &
 
 1946                      + dx(i,4) * u(4,j,1) &
 
 1947                      + dx(i,5) * u(5,j,1) &
 
 1948                      + dx(i,6) * u(6,j,1) &
 
 1949                      + dx(i,7) * u(7,j,1) &
 
 1950                      + dx(i,8) * u(8,j,1)
 
 1957             duds(i,j,k) = dy(j,1) * u(i,1,k) &
 
 1958                         + dy(j,2) * u(i,2,k) &
 
 1959                         + dy(j,3) * u(i,3,k) &
 
 1960                         + dy(j,4) * u(i,4,k) &
 
 1961                         + dy(j,5) * u(i,5,k) &
 
 1962                         + dy(j,6) * u(i,6,k) &
 
 1963                         + dy(j,7) * u(i,7,k) &
 
 1964                         + dy(j,8) * u(i,8,k)
 
 1971          dudt(i,1,k) = dz(k,1) * u(i,1,1) &
 
 1972                      + dz(k,2) * u(i,1,2) &
 
 1973                      + dz(k,3) * u(i,1,3) &
 
 1974                      + dz(k,4) * u(i,1,4) &
 
 1975                      + dz(k,5) * u(i,1,5) &
 
 1976                      + dz(k,6) * u(i,1,6) &
 
 1977                      + dz(k,7) * u(i,1,7) &
 
 1978                      + dz(k,8) * u(i,1,8)
 
 1982    do i = 1, lx * lx * lx
 
 1983       du(i,1,1) = jacinv(i,1,1) &
 
 1985                      * ( drdx(i,1,1) * dudr(i,1,1) &
 
 1986                        + dsdx(i,1,1) * duds(i,1,1) &
 
 1987                        + dtdx(i,1,1) * dudt(i,1,1) ) &
 
 1989                      * ( drdy(i,1,1) * dudr(i,1,1) &
 
 1990                        + dsdy(i,1,1) * duds(i,1,1) &
 
 1991                        + dtdy(i,1,1) * dudt(i,1,1) ) &
 
 1993                      * ( drdz(i,1,1) * dudr(i,1,1) &
 
 1994                        + dsdz(i,1,1) * duds(i,1,1) &
 
 1995                        + dtdz(i,1,1) * dudt(i,1,1) ) )
 
 1998  end subroutine cpu_conv1_lx8_single
 
 2000  subroutine cpu_conv1_lx7_single(du, u, vx, vy, vz, dx, dy, dz, &
 
 2001       drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, jacinv)
 
 2002    integer, 
parameter :: lx = 7
 
 2003    real(kind=rp), 
dimension(lx, lx, lx), 
intent(inout) ::  du
 
 2004    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) ::  u, vx, vy, vz
 
 2005    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdx, dsdx, dtdx
 
 2006    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdy, dsdy, dtdy
 
 2007    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdz, dsdz, dtdz
 
 2008    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: jacinv
 
 2009    real(kind=rp), 
dimension(lx, lx), 
intent(in) :: dx, dy, dz
 
 2010    real(kind=rp), 
dimension(lx, lx, lx) ::  dudr
 
 2011    real(kind=rp), 
dimension(lx, lx, lx) ::  duds
 
 2012    real(kind=rp), 
dimension(lx, lx, lx) ::  dudt
 
 2017          dudr(i,j,1) = dx(i,1) * u(1,j,1) &
 
 2018                      + dx(i,2) * u(2,j,1) &
 
 2019                      + dx(i,3) * u(3,j,1) &
 
 2020                      + dx(i,4) * u(4,j,1) &
 
 2021                      + dx(i,5) * u(5,j,1) &
 
 2022                      + dx(i,6) * u(6,j,1) &
 
 2023                      + dx(i,7) * u(7,j,1)
 
 2030             duds(i,j,k) = dy(j,1) * u(i,1,k) &
 
 2031                         + dy(j,2) * u(i,2,k) &
 
 2032                         + dy(j,3) * u(i,3,k) &
 
 2033                         + dy(j,4) * u(i,4,k) &
 
 2034                         + dy(j,5) * u(i,5,k) &
 
 2035                         + dy(j,6) * u(i,6,k) &
 
 2036                         + dy(j,7) * u(i,7,k)
 
 2043          dudt(i,1,k) = dz(k,1) * u(i,1,1) &
 
 2044                      + dz(k,2) * u(i,1,2) &
 
 2045                      + dz(k,3) * u(i,1,3) &
 
 2046                      + dz(k,4) * u(i,1,4) &
 
 2047                      + dz(k,5) * u(i,1,5) &
 
 2048                      + dz(k,6) * u(i,1,6) &
 
 2049                      + dz(k,7) * u(i,1,7)
 
 2053    do i = 1, lx * lx * lx
 
 2054       du(i,1,1) = jacinv(i,1,1) &
 
 2056                      * ( drdx(i,1,1) * dudr(i,1,1) &
 
 2057                        + dsdx(i,1,1) * duds(i,1,1) &
 
 2058                        + dtdx(i,1,1) * dudt(i,1,1) ) &
 
 2060                      * ( drdy(i,1,1) * dudr(i,1,1) &
 
 2061                        + dsdy(i,1,1) * duds(i,1,1) &
 
 2062                        + dtdy(i,1,1) * dudt(i,1,1) ) &
 
 2064                      * ( drdz(i,1,1) * dudr(i,1,1) &
 
 2065                        + dsdz(i,1,1) * duds(i,1,1) &
 
 2066                        + dtdz(i,1,1) * dudt(i,1,1) ) )
 
 2069  end subroutine cpu_conv1_lx7_single
 
 2071  subroutine cpu_conv1_lx6_single(du, u, vx, vy, vz, dx, dy, dz, &
 
 2072       drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, jacinv)
 
 2073    integer, 
parameter :: lx = 6
 
 2074    real(kind=rp), 
dimension(lx, lx, lx), 
intent(inout) ::  du
 
 2075    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) ::  u, vx, vy, vz
 
 2076    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdx, dsdx, dtdx
 
 2077    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdy, dsdy, dtdy
 
 2078    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdz, dsdz, dtdz
 
 2079    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: jacinv
 
 2080    real(kind=rp), 
dimension(lx, lx), 
intent(in) :: dx, dy, dz
 
 2081    real(kind=rp), 
dimension(lx, lx, lx) ::  dudr
 
 2082    real(kind=rp), 
dimension(lx, lx, lx) ::  duds
 
 2083    real(kind=rp), 
dimension(lx, lx, lx) ::  dudt
 
 2088          dudr(i,j,1) = dx(i,1) * u(1,j,1) &
 
 2089                      + dx(i,2) * u(2,j,1) &
 
 2090                      + dx(i,3) * u(3,j,1) &
 
 2091                      + dx(i,4) * u(4,j,1) &
 
 2092                      + dx(i,5) * u(5,j,1) &
 
 2093                      + dx(i,6) * u(6,j,1)
 
 2100             duds(i,j,k) = dy(j,1) * u(i,1,k) &
 
 2101                         + dy(j,2) * u(i,2,k) &
 
 2102                         + dy(j,3) * u(i,3,k) &
 
 2103                         + dy(j,4) * u(i,4,k) &
 
 2104                         + dy(j,5) * u(i,5,k) &
 
 2105                         + dy(j,6) * u(i,6,k)
 
 2112          dudt(i,1,k) = dz(k,1) * u(i,1,1) &
 
 2113                      + dz(k,2) * u(i,1,2) &
 
 2114                      + dz(k,3) * u(i,1,3) &
 
 2115                      + dz(k,4) * u(i,1,4) &
 
 2116                      + dz(k,5) * u(i,1,5) &
 
 2117                      + dz(k,6) * u(i,1,6)
 
 2121    do i = 1, lx * lx * lx
 
 2122       du(i,1,1) = jacinv(i,1,1) &
 
 2124                      * ( drdx(i,1,1) * dudr(i,1,1) &
 
 2125                        + dsdx(i,1,1) * duds(i,1,1) &
 
 2126                        + dtdx(i,1,1) * dudt(i,1,1) ) &
 
 2128                      * ( drdy(i,1,1) * dudr(i,1,1) &
 
 2129                        + dsdy(i,1,1) * duds(i,1,1) &
 
 2130                        + dtdy(i,1,1) * dudt(i,1,1) ) &
 
 2132                      * ( drdz(i,1,1) * dudr(i,1,1) &
 
 2133                        + dsdz(i,1,1) * duds(i,1,1) &
 
 2134                        + dtdz(i,1,1) * dudt(i,1,1) ) )
 
 2137  end subroutine cpu_conv1_lx6_single
 
 2139  subroutine cpu_conv1_lx5_single(du, u, vx, vy, vz, dx, dy, dz, &
 
 2140       drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, jacinv)
 
 2141    integer, 
parameter :: lx = 5
 
 2142    real(kind=rp), 
dimension(lx, lx, lx), 
intent(inout) ::  du
 
 2143    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) ::  u, vx, vy, vz
 
 2144    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdx, dsdx, dtdx
 
 2145    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdy, dsdy, dtdy
 
 2146    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdz, dsdz, dtdz
 
 2147    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: jacinv
 
 2148    real(kind=rp), 
dimension(lx, lx), 
intent(in) :: dx, dy, dz
 
 2149    real(kind=rp), 
dimension(lx, lx, lx) ::  dudr
 
 2150    real(kind=rp), 
dimension(lx, lx, lx) ::  duds
 
 2151    real(kind=rp), 
dimension(lx, lx, lx) ::  dudt
 
 2156          dudr(i,j,1) = dx(i,1) * u(1,j,1) &
 
 2157                      + dx(i,2) * u(2,j,1) &
 
 2158                      + dx(i,3) * u(3,j,1) &
 
 2159                      + dx(i,4) * u(4,j,1) &
 
 2160                      + dx(i,5) * u(5,j,1)
 
 2167             duds(i,j,k) = dy(j,1) * u(i,1,k) &
 
 2168                         + dy(j,2) * u(i,2,k) &
 
 2169                         + dy(j,3) * u(i,3,k) &
 
 2170                         + dy(j,4) * u(i,4,k) &
 
 2171                         + dy(j,5) * u(i,5,k)
 
 2178          dudt(i,1,k) = dz(k,1) * u(i,1,1) &
 
 2179                      + dz(k,2) * u(i,1,2) &
 
 2180                      + dz(k,3) * u(i,1,3) &
 
 2181                      + dz(k,4) * u(i,1,4) &
 
 2182                      + dz(k,5) * u(i,1,5)
 
 2186    do i = 1, lx * lx * lx
 
 2187       du(i,1,1) = jacinv(i,1,1) &
 
 2189                      * ( drdx(i,1,1) * dudr(i,1,1) &
 
 2190                        + dsdx(i,1,1) * duds(i,1,1) &
 
 2191                        + dtdx(i,1,1) * dudt(i,1,1) ) &
 
 2193                      * ( drdy(i,1,1) * dudr(i,1,1) &
 
 2194                        + dsdy(i,1,1) * duds(i,1,1) &
 
 2195                        + dtdy(i,1,1) * dudt(i,1,1) ) &
 
 2197                      * ( drdz(i,1,1) * dudr(i,1,1) &
 
 2198                        + dsdz(i,1,1) * duds(i,1,1) &
 
 2199                        + dtdz(i,1,1) * dudt(i,1,1) ) )
 
 2202  end subroutine cpu_conv1_lx5_single
 
 2204  subroutine cpu_conv1_lx4_single(du, u, vx, vy, vz, dx, dy, dz, &
 
 2205       drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, jacinv)
 
 2206    integer, 
parameter :: lx = 4
 
 2207    real(kind=rp), 
dimension(lx, lx, lx), 
intent(inout) ::  du
 
 2208    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) ::  u, vx, vy, vz
 
 2209    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdx, dsdx, dtdx
 
 2210    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdy, dsdy, dtdy
 
 2211    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdz, dsdz, dtdz
 
 2212    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: jacinv
 
 2213    real(kind=rp), 
dimension(lx, lx), 
intent(in) :: dx, dy, dz
 
 2214    real(kind=rp), 
dimension(lx, lx, lx) ::  dudr
 
 2215    real(kind=rp), 
dimension(lx, lx, lx) ::  duds
 
 2216    real(kind=rp), 
dimension(lx, lx, lx) ::  dudt
 
 2221          dudr(i,j,1) = dx(i,1) * u(1,j,1) &
 
 2222                      + dx(i,2) * u(2,j,1) &
 
 2223                      + dx(i,3) * u(3,j,1) &
 
 2224                      + dx(i,4) * u(4,j,1)
 
 2231             duds(i,j,k) = dy(j,1) * u(i,1,k) &
 
 2232                         + dy(j,2) * u(i,2,k) &
 
 2233                         + dy(j,3) * u(i,3,k) &
 
 2234                         + dy(j,4) * u(i,4,k)
 
 2241          dudt(i,1,k) = dz(k,1) * u(i,1,1) &
 
 2242                      + dz(k,2) * u(i,1,2) &
 
 2243                      + dz(k,3) * u(i,1,3) &
 
 2244                      + dz(k,4) * u(i,1,4)
 
 2248    do i = 1, lx * lx * lx
 
 2249       du(i,1,1) = jacinv(i,1,1) &
 
 2251                      * ( drdx(i,1,1) * dudr(i,1,1) &
 
 2252                        + dsdx(i,1,1) * duds(i,1,1) &
 
 2253                        + dtdx(i,1,1) * dudt(i,1,1) ) &
 
 2255                      * ( drdy(i,1,1) * dudr(i,1,1) &
 
 2256                        + dsdy(i,1,1) * duds(i,1,1) &
 
 2257                        + dtdy(i,1,1) * dudt(i,1,1) ) &
 
 2259                      * ( drdz(i,1,1) * dudr(i,1,1) &
 
 2260                        + dsdz(i,1,1) * duds(i,1,1) &
 
 2261                        + dtdz(i,1,1) * dudt(i,1,1) ) )
 
 2264  end subroutine cpu_conv1_lx4_single
 
 2266  subroutine cpu_conv1_lx3_single(du, u, vx, vy, vz, dx, dy, dz, &
 
 2267       drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, jacinv)
 
 2268    integer, 
parameter :: lx = 3
 
 2269    real(kind=rp), 
dimension(lx, lx, lx), 
intent(inout) ::  du
 
 2270    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) ::  u, vx, vy, vz
 
 2271    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdx, dsdx, dtdx
 
 2272    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdy, dsdy, dtdy
 
 2273    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdz, dsdz, dtdz
 
 2274    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: jacinv
 
 2275    real(kind=rp), 
dimension(lx, lx), 
intent(in) :: dx, dy, dz
 
 2276    real(kind=rp), 
dimension(lx, lx, lx) ::  dudr
 
 2277    real(kind=rp), 
dimension(lx, lx, lx) ::  duds
 
 2278    real(kind=rp), 
dimension(lx, lx, lx) ::  dudt
 
 2283          dudr(i,j,1) = dx(i,1) * u(1,j,1) &
 
 2284                      + dx(i,2) * u(2,j,1) &
 
 2285                      + dx(i,3) * u(3,j,1)
 
 2292             duds(i,j,k) = dy(j,1) * u(i,1,k) &
 
 2293                         + dy(j,2) * u(i,2,k) &
 
 2294                         + dy(j,3) * u(i,3,k)
 
 2301          dudt(i,1,k) = dz(k,1) * u(i,1,1) &
 
 2302                      + dz(k,2) * u(i,1,2) &
 
 2303                      + dz(k,3) * u(i,1,3)
 
 2307    do i = 1, lx * lx * lx
 
 2308       du(i,1,1) = jacinv(i,1,1) &
 
 2310                      * ( drdx(i,1,1) * dudr(i,1,1) &
 
 2311                        + dsdx(i,1,1) * duds(i,1,1) &
 
 2312                        + dtdx(i,1,1) * dudt(i,1,1) ) &
 
 2314                      * ( drdy(i,1,1) * dudr(i,1,1) &
 
 2315                        + dsdy(i,1,1) * duds(i,1,1) &
 
 2316                        + dtdy(i,1,1) * dudt(i,1,1) ) &
 
 2318                      * ( drdz(i,1,1) * dudr(i,1,1) &
 
 2319                        + dsdz(i,1,1) * duds(i,1,1) &
 
 2320                        + dtdz(i,1,1) * dudt(i,1,1) ) )
 
 2323  end subroutine cpu_conv1_lx3_single
 
 2325  subroutine cpu_conv1_lx2_single(du, u, vx, vy, vz, dx, dy, dz, &
 
 2326       drdx, dsdx, dtdx, drdy, dsdy, dtdy, drdz, dsdz, dtdz, jacinv)
 
 2327    integer, 
parameter :: lx = 2
 
 2328    real(kind=rp), 
dimension(lx, lx, lx), 
intent(inout) ::  du
 
 2329    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) ::  u, vx, vy, vz
 
 2330    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdx, dsdx, dtdx
 
 2331    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdy, dsdy, dtdy
 
 2332    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: drdz, dsdz, dtdz
 
 2333    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: jacinv
 
 2334    real(kind=rp), 
dimension(lx, lx), 
intent(in) :: dx, dy, dz
 
 2335    real(kind=rp), 
dimension(lx, lx, lx) ::  dudr
 
 2336    real(kind=rp), 
dimension(lx, lx, lx) ::  duds
 
 2337    real(kind=rp), 
dimension(lx, lx, lx) ::  dudt
 
 2342          dudr(i,j,1) = dx(i,1) * u(1,j,1) &
 
 2343                      + dx(i,2) * u(2,j,1)
 
 2350             duds(i,j,k) = dy(j,1) * u(i,1,k) &
 
 2351                         + dy(j,2) * u(i,2,k)
 
 2358          dudt(i,1,k) = dz(k,1) * u(i,1,1) &
 
 2359                      + dz(k,2) * u(i,1,2)
 
 2363    do i = 1, lx * lx * lx
 
 2364       du(i,1,1) = jacinv(i,1,1) &
 
 2366                      * ( drdx(i,1,1) * dudr(i,1,1) &
 
 2367                        + dsdx(i,1,1) * duds(i,1,1) &
 
 2368                        + dtdx(i,1,1) * dudt(i,1,1) ) &
 
 2370                      * ( drdy(i,1,1) * dudr(i,1,1) &
 
 2371                        + dsdy(i,1,1) * duds(i,1,1) &
 
 2372                        + dtdy(i,1,1) * dudt(i,1,1) ) &
 
 2374                      * ( drdz(i,1,1) * dudr(i,1,1) &
 
 2375                        + dsdz(i,1,1) * duds(i,1,1) &
 
 2376                        + dtdz(i,1,1) * dudt(i,1,1) ) )
 
 2379  end subroutine cpu_conv1_lx2_single
 
 2381end submodule cpu_conv1