39  module subroutine opr_cpu_cdtp(dtx, x, dr, ds, dt, coef, e_start, e_end)
 
   40    type(coef_t), 
intent(in) :: coef
 
   41    integer, 
intent(in) :: e_start, e_end
 
   42    real(kind=rp), 
intent(inout) :: dtx(coef%Xh%lxyz, e_end - e_start + 1)
 
   43    real(kind=rp), 
intent(inout) :: x(coef%Xh%lxyz, e_end - e_start + 1)
 
   44    real(kind=rp), 
intent(in) :: dr(coef%Xh%lxyz, e_end - e_start + 1)
 
   45    real(kind=rp), 
intent(in) :: ds(coef%Xh%lxyz, e_end - e_start + 1)
 
   46    real(kind=rp), 
intent(in) :: dt(coef%Xh%lxyz, e_end - e_start + 1)
 
   48    e_len = e_end - e_start + 1
 
   50    if (e_len .eq. 1) 
then 
   51       call opr_cpu_cdtp_single(dtx, x, dr, ds, dt, coef, e_start)
 
   53       call opr_cpu_cdtp_many(dtx, x, dr, ds, dt, coef, e_start, e_len)
 
   56  end subroutine opr_cpu_cdtp
 
   58  subroutine opr_cpu_cdtp_many(dtx, x, dr, ds, dt, coef, e_start, e_len)
 
   59    type(coef_t), 
intent(in) :: coef
 
   60    integer, 
intent(in) :: e_start, e_len
 
   61    real(kind=rp), 
intent(inout) :: dtx(coef%Xh%lxyz, e_len)
 
   62    real(kind=rp), 
intent(inout) :: x(coef%Xh%lxyz, e_len)
 
   63    real(kind=rp), 
intent(in) :: dr(coef%Xh%lxyz, e_len)
 
   64    real(kind=rp), 
intent(in) :: ds(coef%Xh%lxyz, e_len)
 
   65    real(kind=rp), 
intent(in) :: dt(coef%Xh%lxyz, e_len)
 
   67    associate(xh => coef%Xh)
 
   70         call cpu_cdtp_lx14(dtx, x, &
 
   71              dr(1, e_start), ds(1, e_start), dt(1, e_start), &
 
   72              xh%dxt, xh%dyt, xh%dzt, xh%w3, e_len)
 
   74         call cpu_cdtp_lx13(dtx, x, &
 
   75              dr(1, e_start), ds(1, e_start), dt(1, e_start), &
 
   76              xh%dxt, xh%dyt, xh%dzt, xh%w3, e_len)
 
   78         call cpu_cdtp_lx12(dtx, x, &
 
   79              dr(1, e_start), ds(1, e_start), dt(1, e_start), &
 
   80              xh%dxt, xh%dyt, xh%dzt, xh%w3, e_len)
 
   82         call cpu_cdtp_lx11(dtx, x, &
 
   83              dr(1, e_start), ds(1, e_start), dt(1, e_start), &
 
   84              xh%dxt, xh%dyt, xh%dzt, xh%w3, e_len)
 
   86         call cpu_cdtp_lx10(dtx, x, &
 
   87              dr(1, e_start), ds(1, e_start), dt(1, e_start), &
 
   88              xh%dxt, xh%dyt, xh%dzt, xh%w3, e_len)
 
   90         call cpu_cdtp_lx9(dtx, x, &
 
   91              dr(1, e_start), ds(1, e_start), dt(1, e_start), &
 
   92              xh%dxt, xh%dyt, xh%dzt, xh%w3, e_len)
 
   94         call cpu_cdtp_lx8(dtx, x, &
 
   95              dr(1, e_start), ds(1, e_start), dt(1, e_start), &
 
   96              xh%dxt, xh%dyt, xh%dzt, xh%w3, e_len)
 
   98         call cpu_cdtp_lx7(dtx, x, &
 
   99              dr(1, e_start), ds(1, e_start), dt(1, e_start), &
 
  100              xh%dxt, xh%dyt, xh%dzt, xh%w3, e_len)
 
  102         call cpu_cdtp_lx6(dtx, x, &
 
  103              dr(1, e_start), ds(1, e_start), dt(1, e_start), &
 
  104              xh%dxt, xh%dyt, xh%dzt, xh%w3, e_len)
 
  106         call cpu_cdtp_lx5(dtx, x, &
 
  107              dr(1, e_start), ds(1, e_start), dt(1, e_start), &
 
  108              xh%dxt, xh%dyt, xh%dzt, xh%w3, e_len)
 
  110         call cpu_cdtp_lx4(dtx, x, &
 
  111              dr(1, e_start), ds(1, e_start), dt(1, e_start), &
 
  112              xh%dxt, xh%dyt, xh%dzt, xh%w3, e_len)
 
  114         call cpu_cdtp_lx3(dtx, x, &
 
  115              dr(1, e_start), ds(1, e_start), dt(1, e_start), &
 
  116              xh%dxt, xh%dyt, xh%dzt, xh%w3, e_len)
 
  118         call cpu_cdtp_lx2(dtx, x, &
 
  119              dr(1, e_start), ds(1, e_start), dt(1, e_start), &
 
  120              xh%dxt, xh%dyt, xh%dzt, xh%w3, e_len)
 
  122         call cpu_cdtp_lx(dtx, x, &
 
  123              dr(1, e_start), ds(1, e_start), dt(1, e_start), &
 
  124              xh%dxt, xh%dyt, xh%dzt, xh%w3, e_len, xh%lx)
 
  128  end subroutine opr_cpu_cdtp_many
 
  130  subroutine opr_cpu_cdtp_single(dtx, x, dr, ds, dt, coef, e)
 
  131    integer, 
parameter :: e_len = 1
 
  132    type(coef_t), 
intent(in) :: coef
 
  133    integer, 
intent(in) :: e
 
  134    real(kind=rp), 
intent(inout) :: dtx(coef%Xh%lxyz, e_len)
 
  135    real(kind=rp), 
intent(inout) :: x(coef%Xh%lxyz, e_len)
 
  136    real(kind=rp), 
intent(in) :: dr(coef%Xh%lxyz, e_len)
 
  137    real(kind=rp), 
intent(in) :: ds(coef%Xh%lxyz, e_len)
 
  138    real(kind=rp), 
intent(in) :: dt(coef%Xh%lxyz, e_len)
 
  140    associate(xh => coef%Xh)
 
  143         call cpu_cdtp_lx14_single(dtx, x, dr(1,e), ds(1,e), dt(1,e), &
 
  144              xh%dxt, xh%dyt, xh%dzt, xh%w3)
 
  146         call cpu_cdtp_lx13_single(dtx, x, dr(1,e), ds(1,e), dt(1,e), &
 
  147              xh%dxt, xh%dyt, xh%dzt, xh%w3)
 
  149         call cpu_cdtp_lx12_single(dtx, x, dr(1,e), ds(1,e), dt(1,e), &
 
  150              xh%dxt, xh%dyt, xh%dzt, xh%w3)
 
  152         call cpu_cdtp_lx11_single(dtx, x, dr(1,e), ds(1,e), dt(1,e), &
 
  153              xh%dxt, xh%dyt, xh%dzt, xh%w3)
 
  155         call cpu_cdtp_lx10_single(dtx, x, dr(1,e), ds(1,e), dt(1,e), &
 
  156              xh%dxt, xh%dyt, xh%dzt, xh%w3)
 
  158         call cpu_cdtp_lx9_single(dtx, x, dr(1,e), ds(1,e), dt(1,e), &
 
  159              xh%dxt, xh%dyt, xh%dzt, xh%w3)
 
  161         call cpu_cdtp_lx8_single(dtx, x, dr(1,e), ds(1,e), dt(1,e), &
 
  162              xh%dxt, xh%dyt, xh%dzt, xh%w3)
 
  164         call cpu_cdtp_lx7_single(dtx, x, dr(1,e), ds(1,e), dt(1,e), &
 
  165              xh%dxt, xh%dyt, xh%dzt, xh%w3)
 
  167         call cpu_cdtp_lx6_single(dtx, x, dr(1,e), ds(1,e), dt(1,e), &
 
  168              xh%dxt, xh%dyt, xh%dzt, xh%w3)
 
  170         call cpu_cdtp_lx5_single(dtx, x, dr(1,e), ds(1,e), dt(1,e), &
 
  171              xh%dxt, xh%dyt, xh%dzt, xh%w3)
 
  173         call cpu_cdtp_lx4_single(dtx, x, dr(1,e), ds(1,e), dt(1,e), &
 
  174              xh%dxt, xh%dyt, xh%dzt, xh%w3)
 
  176         call cpu_cdtp_lx3_single(dtx, x, dr(1,e), ds(1,e), dt(1,e), &
 
  177              xh%dxt, xh%dyt, xh%dzt, xh%w3)
 
  179         call cpu_cdtp_lx2_single(dtx, x, dr(1,e), ds(1,e), dt(1,e), &
 
  180              xh%dxt, xh%dyt, xh%dzt, xh%w3)
 
  182         call cpu_cdtp_lx_single(dtx, x, dr(1,e), ds(1,e), dt(1,e), &
 
  183              xh%dxt, xh%dyt, xh%dzt, xh%w3, xh%lx)
 
  187  end subroutine opr_cpu_cdtp_single
 
  189  subroutine cpu_cdtp_lx(dtx, x, dr, ds, dt, dxt, dyt, dzt, w3, nel, lx)
 
  190    integer, 
intent(in) :: nel, lx
 
  191    real(kind=rp), 
dimension(lx, lx, lx, nel), 
intent(inout) :: dtx
 
  192    real(kind=rp), 
dimension(lx, lx, lx, nel), 
intent(in) :: x, dr, ds, dt
 
  193    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: w3
 
  194    real(kind=rp), 
intent(in), 
dimension(lx, lx) :: dxt, dyt, dzt
 
  195    real(kind=rp), 
dimension(lx, lx, lx) :: wx, ta1
 
  197    integer :: e, i, j, k, l
 
  202          wx(i,1,1) = x(i,1,1,e) * w3(i,1,1)
 
  206          ta1(i,1,1) = wx(i,1,1) * dr(i,1,1,e)
 
  214                tmp = tmp + dxt(i,k) * ta1(k,j,1)
 
  221          ta1(i,1,1) = wx(i,1,1) * ds(i,1,1,e)
 
  230                   tmp = tmp + dyt(j,l) * ta1(i,l,k)
 
  232                dtx(i,j,k,e) = dtx(i,j,k,e) + tmp
 
  238          ta1(i,1,1) = wx(i,1,1) * dt(i,1,1,e)
 
  246                tmp = tmp + dzt(k,l) * ta1(i,1,l)
 
  248             dtx(i,1,k,e) = dtx(i,1,k,e) + tmp
 
  253  end subroutine cpu_cdtp_lx
 
  255  subroutine cpu_cdtp_lx14(dtx, x, dr, ds, dt, dxt, dyt, dzt, w3, nel)
 
  256    integer, 
parameter :: lx = 14
 
  257    integer, 
intent(in) :: nel
 
  258    real(kind=rp), 
dimension(lx, lx, lx, nel), 
intent(inout) :: dtx
 
  259    real(kind=rp), 
dimension(lx, lx, lx, nel), 
intent(in) :: x, dr, ds, dt
 
  260    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: w3
 
  261    real(kind=rp), 
intent(in), 
dimension(lx, lx) :: dxt, dyt, dzt
 
  262    real(kind=rp), 
dimension(lx, lx, lx) :: wx, ta1
 
  263    integer :: e, i, j, k
 
  268          wx(i,1,1) = x(i,1,1,e) * w3(i,1,1)
 
  272          ta1(i,1,1) = wx(i,1,1) * dr(i,1,1,e)
 
  277             dtx(i,j,1,e) = dxt(i,1) * ta1(1,j,1) &
 
  278                  + dxt(i,2) * ta1(2,j,1) &
 
  279                  + dxt(i,3) * ta1(3,j,1) &
 
  280                  + dxt(i,4) * ta1(4,j,1) &
 
  281                  + dxt(i,5) * ta1(5,j,1) &
 
  282                  + dxt(i,6) * ta1(6,j,1) &
 
  283                  + dxt(i,7) * ta1(7,j,1) &
 
  284                  + dxt(i,8) * ta1(8,j,1) &
 
  285                  + dxt(i,9) * ta1(9,j,1) &
 
  286                  + dxt(i,10) * ta1(10,j,1) &
 
  287                  + dxt(i,11) * ta1(11,j,1) &
 
  288                  + dxt(i,12) * ta1(12,j,1) &
 
  289                  + dxt(i,13) * ta1(13,j,1) &
 
  290                  + dxt(i,14) * ta1(14,j,1)
 
  295          ta1(i,1,1) = wx(i,1,1) * ds(i,1,1,e)
 
  301                dtx(i,j,k,e) = dtx(i,j,k,e) &
 
  302                     + dyt(j,1) * ta1(i,1,k) &
 
  303                     + dyt(j,2) * ta1(i,2,k) &
 
  304                     + dyt(j,3) * ta1(i,3,k) &
 
  305                     + dyt(j,4) * ta1(i,4,k) &
 
  306                     + dyt(j,5) * ta1(i,5,k) &
 
  307                     + dyt(j,6) * ta1(i,6,k) &
 
  308                     + dyt(j,7) * ta1(i,7,k) &
 
  309                     + dyt(j,8) * ta1(i,8,k) &
 
  310                     + dyt(j,9) * ta1(i,9,k) &
 
  311                     + dyt(j,10) * ta1(i,10,k) &
 
  312                     + dyt(j,11) * ta1(i,11,k) &
 
  313                     + dyt(j,12) * ta1(i,12,k) &
 
  314                     + dyt(j,13) * ta1(i,13,k) &
 
  315                     + dyt(j,14) * ta1(i,14,k)
 
  321          ta1(i,1,1) = wx(i,1,1) * dt(i,1,1,e)
 
  326             dtx(i,1,k,e) = dtx(i,1,k,e) &
 
  327                  + dzt(k,1) * ta1(i,1,1) &
 
  328                  + dzt(k,2) * ta1(i,1,2) &
 
  329                  + dzt(k,3) * ta1(i,1,3) &
 
  330                  + dzt(k,4) * ta1(i,1,4) &
 
  331                  + dzt(k,5) * ta1(i,1,5) &
 
  332                  + dzt(k,6) * ta1(i,1,6) &
 
  333                  + dzt(k,7) * ta1(i,1,7) &
 
  334                  + dzt(k,8) * ta1(i,1,8) &
 
  335                  + dzt(k,9) * ta1(i,1,9) &
 
  336                  + dzt(k,10) * ta1(i,1,10) &
 
  337                  + dzt(k,11) * ta1(i,1,11) &
 
  338                  + dzt(k,12) * ta1(i,1,12) &
 
  339                  + dzt(k,13) * ta1(i,1,13) &
 
  340                  + dzt(k,14) * ta1(i,1,14)
 
  345  end subroutine cpu_cdtp_lx14
 
  347  subroutine cpu_cdtp_lx13(dtx, x, dr, ds, dt, dxt, dyt, dzt, w3, nel)
 
  348    integer, 
parameter :: lx = 13
 
  349    integer, 
intent(in) :: nel
 
  350    real(kind=rp), 
dimension(lx, lx, lx, nel), 
intent(inout) :: dtx
 
  351    real(kind=rp), 
dimension(lx, lx, lx, nel), 
intent(in) :: x, dr, ds, dt
 
  352    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: w3
 
  353    real(kind=rp), 
intent(in), 
dimension(lx, lx) :: dxt, dyt, dzt
 
  354    real(kind=rp), 
dimension(lx, lx, lx) :: wx, ta1
 
  355    integer :: e, i, j, k
 
  360          wx(i,1,1) = x(i,1,1,e) * w3(i,1,1)
 
  364          ta1(i,1,1) = wx(i,1,1) * dr(i,1,1,e)
 
  369             dtx(i,j,1,e) = dxt(i,1) * ta1(1,j,1) &
 
  370                  + dxt(i,2) * ta1(2,j,1) &
 
  371                  + dxt(i,3) * ta1(3,j,1) &
 
  372                  + dxt(i,4) * ta1(4,j,1) &
 
  373                  + dxt(i,5) * ta1(5,j,1) &
 
  374                  + dxt(i,6) * ta1(6,j,1) &
 
  375                  + dxt(i,7) * ta1(7,j,1) &
 
  376                  + dxt(i,8) * ta1(8,j,1) &
 
  377                  + dxt(i,9) * ta1(9,j,1) &
 
  378                  + dxt(i,10) * ta1(10,j,1) &
 
  379                  + dxt(i,11) * ta1(11,j,1) &
 
  380                  + dxt(i,12) * ta1(12,j,1) &
 
  381                  + dxt(i,13) * ta1(13,j,1)
 
  386          ta1(i,1,1) = wx(i,1,1) * ds(i,1,1,e)
 
  392                dtx(i,j,k,e) = dtx(i,j,k,e) &
 
  393                     + dyt(j,1) * ta1(i,1,k) &
 
  394                     + dyt(j,2) * ta1(i,2,k) &
 
  395                     + dyt(j,3) * ta1(i,3,k) &
 
  396                     + dyt(j,4) * ta1(i,4,k) &
 
  397                     + dyt(j,5) * ta1(i,5,k) &
 
  398                     + dyt(j,6) * ta1(i,6,k) &
 
  399                     + dyt(j,7) * ta1(i,7,k) &
 
  400                     + dyt(j,8) * ta1(i,8,k) &
 
  401                     + dyt(j,9) * ta1(i,9,k) &
 
  402                     + dyt(j,10) * ta1(i,10,k) &
 
  403                     + dyt(j,11) * ta1(i,11,k) &
 
  404                     + dyt(j,12) * ta1(i,12,k) &
 
  405                     + dyt(j,13) * ta1(i,13,k)
 
  411          ta1(i,1,1) = wx(i,1,1) * dt(i,1,1,e)
 
  416             dtx(i,1,k,e) = dtx(i,1,k,e) &
 
  417                  + dzt(k,1) * ta1(i,1,1) &
 
  418                  + dzt(k,2) * ta1(i,1,2) &
 
  419                  + dzt(k,3) * ta1(i,1,3) &
 
  420                  + dzt(k,4) * ta1(i,1,4) &
 
  421                  + dzt(k,5) * ta1(i,1,5) &
 
  422                  + dzt(k,6) * ta1(i,1,6) &
 
  423                  + dzt(k,7) * ta1(i,1,7) &
 
  424                  + dzt(k,8) * ta1(i,1,8) &
 
  425                  + dzt(k,9) * ta1(i,1,9) &
 
  426                  + dzt(k,10) * ta1(i,1,10) &
 
  427                  + dzt(k,11) * ta1(i,1,11) &
 
  428                  + dzt(k,12) * ta1(i,1,12) &
 
  429                  + dzt(k,13) * ta1(i,1,13)
 
  434  end subroutine cpu_cdtp_lx13
 
  436  subroutine cpu_cdtp_lx12(dtx, x, dr, ds, dt, dxt, dyt, dzt, w3, nel)
 
  437    integer, 
parameter :: lx = 12
 
  438    integer, 
intent(in) :: nel
 
  439    real(kind=rp), 
dimension(lx, lx, lx, nel), 
intent(inout) :: dtx
 
  440    real(kind=rp), 
dimension(lx, lx, lx, nel), 
intent(in) :: x, dr, ds, dt
 
  441    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: w3
 
  442    real(kind=rp), 
intent(in), 
dimension(lx, lx) :: dxt, dyt, dzt
 
  443    real(kind=rp), 
dimension(lx, lx, lx) :: wx, ta1
 
  444    integer :: e, i, j, k
 
  449          wx(i,1,1) = x(i,1,1,e) * w3(i,1,1)
 
  453          ta1(i,1,1) = wx(i,1,1) * dr(i,1,1,e)
 
  458             dtx(i,j,1,e) = dxt(i,1) * ta1(1,j,1) &
 
  459                  + dxt(i,2) * ta1(2,j,1) &
 
  460                  + dxt(i,3) * ta1(3,j,1) &
 
  461                  + dxt(i,4) * ta1(4,j,1) &
 
  462                  + dxt(i,5) * ta1(5,j,1) &
 
  463                  + dxt(i,6) * ta1(6,j,1) &
 
  464                  + dxt(i,7) * ta1(7,j,1) &
 
  465                  + dxt(i,8) * ta1(8,j,1) &
 
  466                  + dxt(i,9) * ta1(9,j,1) &
 
  467                  + dxt(i,10) * ta1(10,j,1) &
 
  468                  + dxt(i,11) * ta1(11,j,1) &
 
  469                  + dxt(i,12) * ta1(12,j,1)
 
  474          ta1(i,1,1) = wx(i,1,1) * ds(i,1,1,e)
 
  480                dtx(i,j,k,e) = dtx(i,j,k,e) &
 
  481                     + dyt(j,1) * ta1(i,1,k) &
 
  482                     + dyt(j,2) * ta1(i,2,k) &
 
  483                     + dyt(j,3) * ta1(i,3,k) &
 
  484                     + dyt(j,4) * ta1(i,4,k) &
 
  485                     + dyt(j,5) * ta1(i,5,k) &
 
  486                     + dyt(j,6) * ta1(i,6,k) &
 
  487                     + dyt(j,7) * ta1(i,7,k) &
 
  488                     + dyt(j,8) * ta1(i,8,k) &
 
  489                     + dyt(j,9) * ta1(i,9,k) &
 
  490                     + dyt(j,10) * ta1(i,10,k) &
 
  491                     + dyt(j,11) * ta1(i,11,k) &
 
  492                     + dyt(j,12) * ta1(i,12,k)
 
  498          ta1(i,1,1) = wx(i,1,1) * dt(i,1,1,e)
 
  503             dtx(i,1,k,e) = dtx(i,1,k,e) &
 
  504                  + dzt(k,1) * ta1(i,1,1) &
 
  505                  + dzt(k,2) * ta1(i,1,2) &
 
  506                  + dzt(k,3) * ta1(i,1,3) &
 
  507                  + dzt(k,4) * ta1(i,1,4) &
 
  508                  + dzt(k,5) * ta1(i,1,5) &
 
  509                  + dzt(k,6) * ta1(i,1,6) &
 
  510                  + dzt(k,7) * ta1(i,1,7) &
 
  511                  + dzt(k,8) * ta1(i,1,8) &
 
  512                  + dzt(k,9) * ta1(i,1,9) &
 
  513                  + dzt(k,10) * ta1(i,1,10) &
 
  514                  + dzt(k,11) * ta1(i,1,11) &
 
  515                  + dzt(k,12) * ta1(i,1,12)
 
  520  end subroutine cpu_cdtp_lx12
 
  522  subroutine cpu_cdtp_lx11(dtx, x, dr, ds, dt, dxt, dyt, dzt, w3, nel)
 
  523    integer, 
parameter :: lx = 11
 
  524    integer, 
intent(in) :: nel
 
  525    real(kind=rp), 
dimension(lx, lx, lx, nel), 
intent(inout) :: dtx
 
  526    real(kind=rp), 
dimension(lx, lx, lx, nel), 
intent(in) :: x, dr, ds, dt
 
  527    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: w3
 
  528    real(kind=rp), 
intent(in), 
dimension(lx, lx) :: dxt, dyt, dzt
 
  529    real(kind=rp), 
dimension(lx, lx, lx) :: wx, ta1
 
  530    integer :: e, i, j, k
 
  535          wx(i,1,1) = x(i,1,1,e) * w3(i,1,1)
 
  539          ta1(i,1,1) = wx(i,1,1) * dr(i,1,1,e)
 
  544             dtx(i,j,1,e) = dxt(i,1) * ta1(1,j,1) &
 
  545                  + dxt(i,2) * ta1(2,j,1) &
 
  546                  + dxt(i,3) * ta1(3,j,1) &
 
  547                  + dxt(i,4) * ta1(4,j,1) &
 
  548                  + dxt(i,5) * ta1(5,j,1) &
 
  549                  + dxt(i,6) * ta1(6,j,1) &
 
  550                  + dxt(i,7) * ta1(7,j,1) &
 
  551                  + dxt(i,8) * ta1(8,j,1) &
 
  552                  + dxt(i,9) * ta1(9,j,1) &
 
  553                  + dxt(i,10) * ta1(10,j,1) &
 
  554                  + dxt(i,11) * ta1(11,j,1)
 
  559          ta1(i,1,1) = wx(i,1,1) * ds(i,1,1,e)
 
  565                dtx(i,j,k,e) = dtx(i,j,k,e) &
 
  566                     + dyt(j,1) * ta1(i,1,k) &
 
  567                     + dyt(j,2) * ta1(i,2,k) &
 
  568                     + dyt(j,3) * ta1(i,3,k) &
 
  569                     + dyt(j,4) * ta1(i,4,k) &
 
  570                     + dyt(j,5) * ta1(i,5,k) &
 
  571                     + dyt(j,6) * ta1(i,6,k) &
 
  572                     + dyt(j,7) * ta1(i,7,k) &
 
  573                     + dyt(j,8) * ta1(i,8,k) &
 
  574                     + dyt(j,9) * ta1(i,9,k) &
 
  575                     + dyt(j,10) * ta1(i,10,k) &
 
  576                     + dyt(j,11) * ta1(i,11,k)
 
  582          ta1(i,1,1) = wx(i,1,1) * dt(i,1,1,e)
 
  587             dtx(i,1,k,e) = dtx(i,1,k,e) &
 
  588                  + dzt(k,1) * ta1(i,1,1) &
 
  589                  + dzt(k,2) * ta1(i,1,2) &
 
  590                  + dzt(k,3) * ta1(i,1,3) &
 
  591                  + dzt(k,4) * ta1(i,1,4) &
 
  592                  + dzt(k,5) * ta1(i,1,5) &
 
  593                  + dzt(k,6) * ta1(i,1,6) &
 
  594                  + dzt(k,7) * ta1(i,1,7) &
 
  595                  + dzt(k,8) * ta1(i,1,8) &
 
  596                  + dzt(k,9) * ta1(i,1,9) &
 
  597                  + dzt(k,10) * ta1(i,1,10) &
 
  598                  + dzt(k,11) * ta1(i,1,11)
 
  603  end subroutine cpu_cdtp_lx11
 
  605  subroutine cpu_cdtp_lx10(dtx, x, dr, ds, dt, dxt, dyt, dzt, w3, nel)
 
  606    integer, 
parameter :: lx = 10
 
  607    integer, 
intent(in) :: nel
 
  608    real(kind=rp), 
dimension(lx, lx, lx, nel), 
intent(inout) :: dtx
 
  609    real(kind=rp), 
dimension(lx, lx, lx, nel), 
intent(in) :: x, dr, ds, dt
 
  610    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: w3
 
  611    real(kind=rp), 
intent(in), 
dimension(lx, lx) :: dxt, dyt, dzt
 
  612    real(kind=rp), 
dimension(lx, lx, lx) :: wx, ta1
 
  613    integer :: e, i, j, k
 
  618          wx(i,1,1) = x(i,1,1,e) * w3(i,1,1)
 
  622          ta1(i,1,1) = wx(i,1,1) * dr(i,1,1,e)
 
  627             dtx(i,j,1,e) = dxt(i,1) * ta1(1,j,1) &
 
  628                  + dxt(i,2) * ta1(2,j,1) &
 
  629                  + dxt(i,3) * ta1(3,j,1) &
 
  630                  + dxt(i,4) * ta1(4,j,1) &
 
  631                  + dxt(i,5) * ta1(5,j,1) &
 
  632                  + dxt(i,6) * ta1(6,j,1) &
 
  633                  + dxt(i,7) * ta1(7,j,1) &
 
  634                  + dxt(i,8) * ta1(8,j,1) &
 
  635                  + dxt(i,9) * ta1(9,j,1) &
 
  636                  + dxt(i,10) * ta1(10,j,1)
 
  641          ta1(i,1,1) = wx(i,1,1) * ds(i,1,1,e)
 
  647                dtx(i,j,k,e) = dtx(i,j,k,e) &
 
  648                     + dyt(j,1) * ta1(i,1,k) &
 
  649                     + dyt(j,2) * ta1(i,2,k) &
 
  650                     + dyt(j,3) * ta1(i,3,k) &
 
  651                     + dyt(j,4) * ta1(i,4,k) &
 
  652                     + dyt(j,5) * ta1(i,5,k) &
 
  653                     + dyt(j,6) * ta1(i,6,k) &
 
  654                     + dyt(j,7) * ta1(i,7,k) &
 
  655                     + dyt(j,8) * ta1(i,8,k) &
 
  656                     + dyt(j,9) * ta1(i,9,k) &
 
  657                     + dyt(j,10) * ta1(i,10,k)
 
  664          ta1(i,1,1) = wx(i,1,1) * dt(i,1,1,e)
 
  669             dtx(i,1,k,e) = dtx(i,1,k,e) &
 
  670                  + dzt(k,1) * ta1(i,1,1) &
 
  671                  + dzt(k,2) * ta1(i,1,2) &
 
  672                  + dzt(k,3) * ta1(i,1,3) &
 
  673                  + dzt(k,4) * ta1(i,1,4) &
 
  674                  + dzt(k,5) * ta1(i,1,5) &
 
  675                  + dzt(k,6) * ta1(i,1,6) &
 
  676                  + dzt(k,7) * ta1(i,1,7) &
 
  677                  + dzt(k,8) * ta1(i,1,8) &
 
  678                  + dzt(k,9) * ta1(i,1,9) &
 
  679                  + dzt(k,10) * ta1(i,1,10)
 
  684  end subroutine cpu_cdtp_lx10
 
  686  subroutine cpu_cdtp_lx9(dtx, x, dr, ds, dt, dxt, dyt, dzt, w3, nel)
 
  687    integer, 
parameter :: lx = 9
 
  688    integer, 
intent(in) :: nel
 
  689    real(kind=rp), 
dimension(lx, lx, lx, nel), 
intent(inout) :: dtx
 
  690    real(kind=rp), 
dimension(lx, lx, lx, nel), 
intent(in) :: x, dr, ds, dt
 
  691    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: w3
 
  692    real(kind=rp), 
intent(in), 
dimension(lx, lx) :: dxt, dyt, dzt
 
  693    real(kind=rp), 
dimension(lx, lx, lx) :: wx, ta1
 
  694    integer :: e, i, j, k
 
  699          wx(i,1,1) = x(i,1,1,e) * w3(i,1,1)
 
  703          ta1(i,1,1) = wx(i,1,1) * dr(i,1,1,e)
 
  708             dtx(i,j,1,e) = dxt(i,1) * ta1(1,j,1) &
 
  709                  + dxt(i,2) * ta1(2,j,1) &
 
  710                  + dxt(i,3) * ta1(3,j,1) &
 
  711                  + dxt(i,4) * ta1(4,j,1) &
 
  712                  + dxt(i,5) * ta1(5,j,1) &
 
  713                  + dxt(i,6) * ta1(6,j,1) &
 
  714                  + dxt(i,7) * ta1(7,j,1) &
 
  715                  + dxt(i,8) * ta1(8,j,1) &
 
  716                  + dxt(i,9) * ta1(9,j,1)
 
  721          ta1(i,1,1) = wx(i,1,1) * ds(i,1,1,e)
 
  727                dtx(i,j,k,e) = dtx(i,j,k,e) &
 
  728                     + dyt(j,1) * ta1(i,1,k) &
 
  729                     + dyt(j,2) * ta1(i,2,k) &
 
  730                     + dyt(j,3) * ta1(i,3,k) &
 
  731                     + dyt(j,4) * ta1(i,4,k) &
 
  732                     + dyt(j,5) * ta1(i,5,k) &
 
  733                     + dyt(j,6) * ta1(i,6,k) &
 
  734                     + dyt(j,7) * ta1(i,7,k) &
 
  735                     + dyt(j,8) * ta1(i,8,k) &
 
  736                     + dyt(j,9) * ta1(i,9,k)
 
  742          ta1(i,1,1) = wx(i,1,1) * dt(i,1,1,e)
 
  747             dtx(i,1,k,e) = dtx(i,1,k,e) &
 
  748                  + dzt(k,1) * ta1(i,1,1) &
 
  749                  + dzt(k,2) * ta1(i,1,2) &
 
  750                  + dzt(k,3) * ta1(i,1,3) &
 
  751                  + dzt(k,4) * ta1(i,1,4) &
 
  752                  + dzt(k,5) * ta1(i,1,5) &
 
  753                  + dzt(k,6) * ta1(i,1,6) &
 
  754                  + dzt(k,7) * ta1(i,1,7) &
 
  755                  + dzt(k,8) * ta1(i,1,8) &
 
  756                  + dzt(k,9) * ta1(i,1,9)
 
  761  end subroutine cpu_cdtp_lx9
 
  763  subroutine cpu_cdtp_lx8(dtx, x, dr, ds, dt, dxt, dyt, dzt, w3, nel)
 
  764    integer, 
parameter :: lx = 8
 
  765    integer, 
intent(in) :: nel
 
  766    real(kind=rp), 
dimension(lx, lx, lx, nel), 
intent(inout) :: dtx
 
  767    real(kind=rp), 
dimension(lx, lx, lx, nel), 
intent(in) :: x, dr, ds, dt
 
  768    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: w3
 
  769    real(kind=rp), 
intent(in), 
dimension(lx, lx) :: dxt, dyt, dzt
 
  770    real(kind=rp), 
dimension(lx, lx, lx) :: wx, ta1
 
  771    integer :: e, i, j, k
 
  776          wx(i,1,1) = x(i,1,1,e) * w3(i,1,1)
 
  780          ta1(i,1,1) = wx(i,1,1) * dr(i,1,1,e)
 
  785             dtx(i,j,1,e) = dxt(i,1) * ta1(1,j,1) &
 
  786                  + dxt(i,2) * ta1(2,j,1) &
 
  787                  + dxt(i,3) * ta1(3,j,1) &
 
  788                  + dxt(i,4) * ta1(4,j,1) &
 
  789                  + dxt(i,5) * ta1(5,j,1) &
 
  790                  + dxt(i,6) * ta1(6,j,1) &
 
  791                  + dxt(i,7) * ta1(7,j,1) &
 
  792                  + dxt(i,8) * ta1(8,j,1)
 
  797          ta1(i,1,1) = wx(i,1,1) * ds(i,1,1,e)
 
  803                dtx(i,j,k,e) = dtx(i,j,k,e) &
 
  804                     + dyt(j,1) * ta1(i,1,k) &
 
  805                     + dyt(j,2) * ta1(i,2,k) &
 
  806                     + dyt(j,3) * ta1(i,3,k) &
 
  807                     + dyt(j,4) * ta1(i,4,k) &
 
  808                     + dyt(j,5) * ta1(i,5,k) &
 
  809                     + dyt(j,6) * ta1(i,6,k) &
 
  810                     + dyt(j,7) * ta1(i,7,k) &
 
  811                     + dyt(j,8) * ta1(i,8,k)
 
  817          ta1(i,1,1) = wx(i,1,1) * dt(i,1,1,e)
 
  822             dtx(i,1,k,e) = dtx(i,1,k,e) &
 
  823                  + dzt(k,1) * ta1(i,1,1) &
 
  824                  + dzt(k,2) * ta1(i,1,2) &
 
  825                  + dzt(k,3) * ta1(i,1,3) &
 
  826                  + dzt(k,4) * ta1(i,1,4) &
 
  827                  + dzt(k,5) * ta1(i,1,5) &
 
  828                  + dzt(k,6) * ta1(i,1,6) &
 
  829                  + dzt(k,7) * ta1(i,1,7) &
 
  830                  + dzt(k,8) * ta1(i,1,8)
 
  835  end subroutine cpu_cdtp_lx8
 
  837  subroutine cpu_cdtp_lx7(dtx, x, dr, ds, dt, dxt, dyt, dzt, w3, nel)
 
  838    integer, 
parameter :: lx = 7
 
  839    integer, 
intent(in) :: nel
 
  840    real(kind=rp), 
dimension(lx, lx, lx, nel), 
intent(inout) :: dtx
 
  841    real(kind=rp), 
dimension(lx, lx, lx, nel), 
intent(in) :: x, dr, ds, dt
 
  842    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: w3
 
  843    real(kind=rp), 
intent(in), 
dimension(lx, lx) :: dxt, dyt, dzt
 
  844    real(kind=rp), 
dimension(lx, lx, lx) :: wx, ta1
 
  845    integer :: e, i, j, k
 
  850          wx(i,1,1) = x(i,1,1,e) * w3(i,1,1)
 
  854          ta1(i,1,1) = wx(i,1,1) * dr(i,1,1,e)
 
  859             dtx(i,j,1,e) = dxt(i,1) * ta1(1,j,1) &
 
  860                  + dxt(i,2) * ta1(2,j,1) &
 
  861                  + dxt(i,3) * ta1(3,j,1) &
 
  862                  + dxt(i,4) * ta1(4,j,1) &
 
  863                  + dxt(i,5) * ta1(5,j,1) &
 
  864                  + dxt(i,6) * ta1(6,j,1) &
 
  865                  + dxt(i,7) * ta1(7,j,1)
 
  870          ta1(i,1,1) = wx(i,1,1) * ds(i,1,1,e)
 
  876                dtx(i,j,k,e) = dtx(i,j,k,e) &
 
  877                     + dyt(j,1) * ta1(i,1,k) &
 
  878                     + dyt(j,2) * ta1(i,2,k) &
 
  879                     + dyt(j,3) * ta1(i,3,k) &
 
  880                     + dyt(j,4) * ta1(i,4,k) &
 
  881                     + dyt(j,5) * ta1(i,5,k) &
 
  882                     + dyt(j,6) * ta1(i,6,k) &
 
  883                     + dyt(j,7) * ta1(i,7,k)
 
  889          ta1(i,1,1) = wx(i,1,1) * dt(i,1,1,e)
 
  894             dtx(i,1,k,e) = dtx(i,1,k,e) &
 
  895                  + dzt(k,1) * ta1(i,1,1) &
 
  896                  + dzt(k,2) * ta1(i,1,2) &
 
  897                  + dzt(k,3) * ta1(i,1,3) &
 
  898                  + dzt(k,4) * ta1(i,1,4) &
 
  899                  + dzt(k,5) * ta1(i,1,5) &
 
  900                  + dzt(k,6) * ta1(i,1,6) &
 
  901                  + dzt(k,7) * ta1(i,1,7)
 
  906  end subroutine cpu_cdtp_lx7
 
  908  subroutine cpu_cdtp_lx6(dtx, x, dr, ds, dt, dxt, dyt, dzt, w3, nel)
 
  909    integer, 
parameter :: lx = 6
 
  910    integer, 
intent(in) :: nel
 
  911    real(kind=rp), 
dimension(lx, lx, lx, nel), 
intent(inout) :: dtx
 
  912    real(kind=rp), 
dimension(lx, lx, lx, nel), 
intent(in) :: x, dr, ds, dt
 
  913    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: w3
 
  914    real(kind=rp), 
intent(in), 
dimension(lx, lx) :: dxt, dyt, dzt
 
  915    real(kind=rp), 
dimension(lx, lx, lx) :: wx, ta1
 
  916    integer :: e, i, j, k
 
  921          wx(i,1,1) = x(i,1,1,e) * w3(i,1,1)
 
  925          ta1(i,1,1) = wx(i,1,1) * dr(i,1,1,e)
 
  930             dtx(i,j,1,e) = dxt(i,1) * ta1(1,j,1) &
 
  931                  + dxt(i,2) * ta1(2,j,1) &
 
  932                  + dxt(i,3) * ta1(3,j,1) &
 
  933                  + dxt(i,4) * ta1(4,j,1) &
 
  934                  + dxt(i,5) * ta1(5,j,1) &
 
  935                  + dxt(i,6) * ta1(6,j,1)
 
  940          ta1(i,1,1) = wx(i,1,1) * ds(i,1,1,e)
 
  946                dtx(i,j,k,e) = dtx(i,j,k,e) &
 
  947                     + dyt(j,1) * ta1(i,1,k) &
 
  948                     + dyt(j,2) * ta1(i,2,k) &
 
  949                     + dyt(j,3) * ta1(i,3,k) &
 
  950                     + dyt(j,4) * ta1(i,4,k) &
 
  951                     + dyt(j,5) * ta1(i,5,k) &
 
  952                     + dyt(j,6) * ta1(i,6,k)
 
  958          ta1(i,1,1) = wx(i,1,1) * dt(i,1,1,e)
 
  963             dtx(i,1,k,e) = dtx(i,1,k,e) &
 
  964                  + dzt(k,1) * ta1(i,1,1) &
 
  965                  + dzt(k,2) * ta1(i,1,2) &
 
  966                  + dzt(k,3) * ta1(i,1,3) &
 
  967                  + dzt(k,4) * ta1(i,1,4) &
 
  968                  + dzt(k,5) * ta1(i,1,5) &
 
  969                  + dzt(k,6) * ta1(i,1,6)
 
  974  end subroutine cpu_cdtp_lx6
 
  976  subroutine cpu_cdtp_lx5(dtx, x, dr, ds, dt, dxt, dyt, dzt, w3, nel)
 
  977    integer, 
parameter :: lx = 5
 
  978    integer, 
intent(in) :: nel
 
  979    real(kind=rp), 
dimension(lx, lx, lx, nel), 
intent(inout) :: dtx
 
  980    real(kind=rp), 
dimension(lx, lx, lx, nel), 
intent(in) :: x, dr, ds, dt
 
  981    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: w3
 
  982    real(kind=rp), 
intent(in), 
dimension(lx, lx) :: dxt, dyt, dzt
 
  983    real(kind=rp), 
dimension(lx, lx, lx) :: wx, ta1
 
  984    integer :: e, i, j, k
 
  989          wx(i,1,1) = x(i,1,1,e) * w3(i,1,1)
 
  993          ta1(i,1,1) = wx(i,1,1) * dr(i,1,1,e)
 
  998             dtx(i,j,1,e) = dxt(i,1) * ta1(1,j,1) &
 
  999                  + dxt(i,2) * ta1(2,j,1) &
 
 1000                  + dxt(i,3) * ta1(3,j,1) &
 
 1001                  + dxt(i,4) * ta1(4,j,1) &
 
 1002                  + dxt(i,5) * ta1(5,j,1)
 
 1007          ta1(i,1,1) = wx(i,1,1) * ds(i,1,1,e)
 
 1013                dtx(i,j,k,e) = dtx(i,j,k,e) &
 
 1014                     + dyt(j,1) * ta1(i,1,k) &
 
 1015                     + dyt(j,2) * ta1(i,2,k) &
 
 1016                     + dyt(j,3) * ta1(i,3,k) &
 
 1017                     + dyt(j,4) * ta1(i,4,k) &
 
 1018                     + dyt(j,5) * ta1(i,5,k)
 
 1024          ta1(i,1,1) = wx(i,1,1) * dt(i,1,1,e)
 
 1029             dtx(i,1,k,e) = dtx(i,1,k,e) &
 
 1030                  + dzt(k,1) * ta1(i,1,1) &
 
 1031                  + dzt(k,2) * ta1(i,1,2) &
 
 1032                  + dzt(k,3) * ta1(i,1,3) &
 
 1033                  + dzt(k,4) * ta1(i,1,4) &
 
 1034                  + dzt(k,5) * ta1(i,1,5)
 
 1039  end subroutine cpu_cdtp_lx5
 
 1041  subroutine cpu_cdtp_lx4(dtx, x, dr, ds, dt, dxt, dyt, dzt, w3, nel)
 
 1042    integer, 
parameter :: lx = 4
 
 1043    integer, 
intent(in) :: nel
 
 1044    real(kind=rp), 
dimension(lx, lx, lx, nel), 
intent(inout) :: dtx
 
 1045    real(kind=rp), 
dimension(lx, lx, lx, nel), 
intent(in) :: x, dr, ds, dt
 
 1046    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: w3
 
 1047    real(kind=rp), 
intent(in), 
dimension(lx, lx) :: dxt, dyt, dzt
 
 1048    real(kind=rp), 
dimension(lx, lx, lx) :: wx, ta1
 
 1049    integer :: e, i, j, k
 
 1054          wx(i,1,1) = x(i,1,1,e) * w3(i,1,1)
 
 1058          ta1(i,1,1) = wx(i,1,1) * dr(i,1,1,e)
 
 1063             dtx(i,j,1,e) = dxt(i,1) * ta1(1,j,1) &
 
 1064                  + dxt(i,2) * ta1(2,j,1) &
 
 1065                  + dxt(i,3) * ta1(3,j,1) &
 
 1066                  + dxt(i,4) * ta1(4,j,1)
 
 1071          ta1(i,1,1) = wx(i,1,1) * ds(i,1,1,e)
 
 1077                dtx(i,j,k,e) = dtx(i,j,k,e) &
 
 1078                     + dyt(j,1) * ta1(i,1,k) &
 
 1079                     + dyt(j,2) * ta1(i,2,k) &
 
 1080                     + dyt(j,3) * ta1(i,3,k) &
 
 1081                     + dyt(j,4) * ta1(i,4,k)
 
 1087          ta1(i,1,1) = wx(i,1,1) * dt(i,1,1,e)
 
 1092             dtx(i,1,k,e) = dtx(i,1,k,e) &
 
 1093                  + dzt(k,1) * ta1(i,1,1) &
 
 1094                  + dzt(k,2) * ta1(i,1,2) &
 
 1095                  + dzt(k,3) * ta1(i,1,3) &
 
 1096                  + dzt(k,4) * ta1(i,1,4)
 
 1101  end subroutine cpu_cdtp_lx4
 
 1103  subroutine cpu_cdtp_lx3(dtx, x, dr, ds, dt, dxt, dyt, dzt, w3, nel)
 
 1104    integer, 
parameter :: lx = 3
 
 1105    integer, 
intent(in) :: nel
 
 1106    real(kind=rp), 
dimension(lx, lx, lx, nel), 
intent(inout) :: dtx
 
 1107    real(kind=rp), 
dimension(lx, lx, lx, nel), 
intent(in) :: x, dr, ds, dt
 
 1108    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: w3
 
 1109    real(kind=rp), 
intent(in), 
dimension(lx, lx) :: dxt, dyt, dzt
 
 1110    real(kind=rp), 
dimension(lx, lx, lx) :: wx, ta1
 
 1111    integer :: e, i, j, k
 
 1116          wx(i,1,1) = x(i,1,1,e) * w3(i,1,1)
 
 1120          ta1(i,1,1) = wx(i,1,1) * dr(i,1,1,e)
 
 1125             dtx(i,j,1,e) = dxt(i,1) * ta1(1,j,1) &
 
 1126                  + dxt(i,2) * ta1(2,j,1) &
 
 1127                  + dxt(i,3) * ta1(3,j,1)
 
 1132          ta1(i,1,1) = wx(i,1,1) * ds(i,1,1,e)
 
 1138                dtx(i,j,k,e) = dtx(i,j,k,e) &
 
 1139                     + dyt(j,1) * ta1(i,1,k) &
 
 1140                     + dyt(j,2) * ta1(i,2,k) &
 
 1141                     + dyt(j,3) * ta1(i,3,k)
 
 1147          ta1(i,1,1) = wx(i,1,1) * dt(i,1,1,e)
 
 1152             dtx(i,1,k,e) = dtx(i,1,k,e) &
 
 1153                  + dzt(k,1) * ta1(i,1,1) &
 
 1154                  + dzt(k,2) * ta1(i,1,2) &
 
 1155                  + dzt(k,3) * ta1(i,1,3)
 
 1160  end subroutine cpu_cdtp_lx3
 
 1162  subroutine cpu_cdtp_lx2(dtx, x, dr, ds, dt, dxt, dyt, dzt, w3, nel)
 
 1163    integer, 
parameter :: lx = 2
 
 1164    integer, 
intent(in) :: nel
 
 1165    real(kind=rp), 
dimension(lx, lx, lx, nel), 
intent(inout) :: dtx
 
 1166    real(kind=rp), 
dimension(lx, lx, lx, nel), 
intent(in) :: x, dr, ds, dt
 
 1167    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: w3
 
 1168    real(kind=rp), 
intent(in), 
dimension(lx, lx) :: dxt, dyt, dzt
 
 1169    real(kind=rp), 
dimension(lx, lx, lx) :: wx, ta1
 
 1170    integer :: e, i, j, k
 
 1175          wx(i,1,1) = x(i,1,1,e) * w3(i,1,1)
 
 1179          ta1(i,1,1) = wx(i,1,1) * dr(i,1,1,e)
 
 1184             dtx(i,j,1,e) = dxt(i,1) * ta1(1,j,1) &
 
 1185                  + dxt(i,2) * ta1(2,j,1)
 
 1190          ta1(i,1,1) = wx(i,1,1) * ds(i,1,1,e)
 
 1196                dtx(i,j,k,e) = dtx(i,j,k,e) &
 
 1197                     + dyt(j,1) * ta1(i,1,k) &
 
 1198                     + dyt(j,2) * ta1(i,2,k)
 
 1204          ta1(i,1,1) = wx(i,1,1) * dt(i,1,1,e)
 
 1209             dtx(i,1,k,e) = dtx(i,1,k,e) &
 
 1210                  + dzt(k,1) * ta1(i,1,1) &
 
 1211                  + dzt(k,2) * ta1(i,1,2)
 
 1216  end subroutine cpu_cdtp_lx2
 
 1218  subroutine cpu_cdtp_lx_single(dtx, x, dr, ds, dt, dxt, dyt, dzt, w3, lx)
 
 1219    integer, 
intent(in) :: lx
 
 1220    real(kind=rp), 
dimension(lx, lx, lx), 
intent(inout) :: dtx
 
 1221    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: x, dr, ds, dt
 
 1222    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: w3
 
 1223    real(kind=rp), 
intent(in), 
dimension(lx, lx) :: dxt, dyt, dzt
 
 1224    real(kind=rp), 
dimension(lx, lx, lx) :: wx, ta1
 
 1225    real(kind=rp) :: tmp
 
 1226    integer :: i, j, k, l
 
 1229       wx(i,1,1) = x(i,1,1) * w3(i,1,1)
 
 1233       ta1(i,1,1) = wx(i,1,1) * dr(i,1,1)
 
 1241             tmp = tmp + dxt(i,k) * ta1(k,j,1)
 
 1248       ta1(i,1,1) = wx(i,1,1) * ds(i,1,1)
 
 1257                tmp = tmp + dyt(j,l) * ta1(i,l,k)
 
 1259             dtx(i,j,k) = dtx(i,j,k) + tmp
 
 1265       ta1(i,1,1) = wx(i,1,1) * dt(i,1,1)
 
 1273             tmp = tmp + dzt(k,l) * ta1(i,1,l)
 
 1275          dtx(i,1,k) = dtx(i,1,k) + tmp
 
 1279  end subroutine cpu_cdtp_lx_single
 
 1281  subroutine cpu_cdtp_lx14_single(dtx, x, dr, ds, dt, dxt, dyt, dzt, w3)
 
 1282    integer, 
parameter :: lx = 14
 
 1283    real(kind=rp), 
dimension(lx, lx, lx), 
intent(inout) :: dtx
 
 1284    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: x, dr, ds, dt
 
 1285    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: w3
 
 1286    real(kind=rp), 
intent(in), 
dimension(lx, lx) :: dxt, dyt, dzt
 
 1287    real(kind=rp), 
dimension(lx, lx, lx) :: wx, ta1
 
 1291       wx(i,1,1) = x(i,1,1) * w3(i,1,1)
 
 1295       ta1(i,1,1) = wx(i,1,1) * dr(i,1,1)
 
 1300          dtx(i,j,1) = dxt(i,1) * ta1(1,j,1) &
 
 1301               + dxt(i,2) * ta1(2,j,1) &
 
 1302               + dxt(i,3) * ta1(3,j,1) &
 
 1303               + dxt(i,4) * ta1(4,j,1) &
 
 1304               + dxt(i,5) * ta1(5,j,1) &
 
 1305               + dxt(i,6) * ta1(6,j,1) &
 
 1306               + dxt(i,7) * ta1(7,j,1) &
 
 1307               + dxt(i,8) * ta1(8,j,1) &
 
 1308               + dxt(i,9) * ta1(9,j,1) &
 
 1309               + dxt(i,10) * ta1(10,j,1) &
 
 1310               + dxt(i,11) * ta1(11,j,1) &
 
 1311               + dxt(i,12) * ta1(12,j,1) &
 
 1312               + dxt(i,13) * ta1(13,j,1) &
 
 1313               + dxt(i,14) * ta1(14,j,1)
 
 1318       ta1(i,1,1) = wx(i,1,1) * ds(i,1,1)
 
 1324             dtx(i,j,k) = dtx(i,j,k) &
 
 1325                  + dyt(j,1) * ta1(i,1,k) &
 
 1326                  + dyt(j,2) * ta1(i,2,k) &
 
 1327                  + dyt(j,3) * ta1(i,3,k) &
 
 1328                  + dyt(j,4) * ta1(i,4,k) &
 
 1329                  + dyt(j,5) * ta1(i,5,k) &
 
 1330                  + dyt(j,6) * ta1(i,6,k) &
 
 1331                  + dyt(j,7) * ta1(i,7,k) &
 
 1332                  + dyt(j,8) * ta1(i,8,k) &
 
 1333                  + dyt(j,9) * ta1(i,9,k) &
 
 1334                  + dyt(j,10) * ta1(i,10,k) &
 
 1335                  + dyt(j,11) * ta1(i,11,k) &
 
 1336                  + dyt(j,12) * ta1(i,12,k) &
 
 1337                  + dyt(j,13) * ta1(i,13,k) &
 
 1338                  + dyt(j,14) * ta1(i,14,k)
 
 1344       ta1(i,1,1) = wx(i,1,1) * dt(i,1,1)
 
 1349          dtx(i,1,k) = dtx(i,1,k) &
 
 1350               + dzt(k,1) * ta1(i,1,1) &
 
 1351               + dzt(k,2) * ta1(i,1,2) &
 
 1352               + dzt(k,3) * ta1(i,1,3) &
 
 1353               + dzt(k,4) * ta1(i,1,4) &
 
 1354               + dzt(k,5) * ta1(i,1,5) &
 
 1355               + dzt(k,6) * ta1(i,1,6) &
 
 1356               + dzt(k,7) * ta1(i,1,7) &
 
 1357               + dzt(k,8) * ta1(i,1,8) &
 
 1358               + dzt(k,9) * ta1(i,1,9) &
 
 1359               + dzt(k,10) * ta1(i,1,10) &
 
 1360               + dzt(k,11) * ta1(i,1,11) &
 
 1361               + dzt(k,12) * ta1(i,1,12) &
 
 1362               + dzt(k,13) * ta1(i,1,13) &
 
 1363               + dzt(k,14) * ta1(i,1,14)
 
 1367  end subroutine cpu_cdtp_lx14_single
 
 1369  subroutine cpu_cdtp_lx13_single(dtx, x, dr, ds, dt, dxt, dyt, dzt, w3)
 
 1370    integer, 
parameter :: lx = 13
 
 1371    real(kind=rp), 
dimension(lx, lx, lx), 
intent(inout) :: dtx
 
 1372    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: x, dr, ds, dt
 
 1373    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: w3
 
 1374    real(kind=rp), 
intent(in), 
dimension(lx, lx) :: dxt, dyt, dzt
 
 1375    real(kind=rp), 
dimension(lx, lx, lx) :: wx, ta1
 
 1379       wx(i,1,1) = x(i,1,1) * w3(i,1,1)
 
 1383       ta1(i,1,1) = wx(i,1,1) * dr(i,1,1)
 
 1388          dtx(i,j,1) = dxt(i,1) * ta1(1,j,1) &
 
 1389               + dxt(i,2) * ta1(2,j,1) &
 
 1390               + dxt(i,3) * ta1(3,j,1) &
 
 1391               + dxt(i,4) * ta1(4,j,1) &
 
 1392               + dxt(i,5) * ta1(5,j,1) &
 
 1393               + dxt(i,6) * ta1(6,j,1) &
 
 1394               + dxt(i,7) * ta1(7,j,1) &
 
 1395               + dxt(i,8) * ta1(8,j,1) &
 
 1396               + dxt(i,9) * ta1(9,j,1) &
 
 1397               + dxt(i,10) * ta1(10,j,1) &
 
 1398               + dxt(i,11) * ta1(11,j,1) &
 
 1399               + dxt(i,12) * ta1(12,j,1) &
 
 1400               + dxt(i,13) * ta1(13,j,1)
 
 1405       ta1(i,1,1) = wx(i,1,1) * ds(i,1,1)
 
 1411             dtx(i,j,k) = dtx(i,j,k) &
 
 1412                  + dyt(j,1) * ta1(i,1,k) &
 
 1413                  + dyt(j,2) * ta1(i,2,k) &
 
 1414                  + dyt(j,3) * ta1(i,3,k) &
 
 1415                  + dyt(j,4) * ta1(i,4,k) &
 
 1416                  + dyt(j,5) * ta1(i,5,k) &
 
 1417                  + dyt(j,6) * ta1(i,6,k) &
 
 1418                  + dyt(j,7) * ta1(i,7,k) &
 
 1419                  + dyt(j,8) * ta1(i,8,k) &
 
 1420                  + dyt(j,9) * ta1(i,9,k) &
 
 1421                  + dyt(j,10) * ta1(i,10,k) &
 
 1422                  + dyt(j,11) * ta1(i,11,k) &
 
 1423                  + dyt(j,12) * ta1(i,12,k) &
 
 1424                  + dyt(j,13) * ta1(i,13,k)
 
 1430       ta1(i,1,1) = wx(i,1,1) * dt(i,1,1)
 
 1435          dtx(i,1,k) = dtx(i,1,k) &
 
 1436               + dzt(k,1) * ta1(i,1,1) &
 
 1437               + dzt(k,2) * ta1(i,1,2) &
 
 1438               + dzt(k,3) * ta1(i,1,3) &
 
 1439               + dzt(k,4) * ta1(i,1,4) &
 
 1440               + dzt(k,5) * ta1(i,1,5) &
 
 1441               + dzt(k,6) * ta1(i,1,6) &
 
 1442               + dzt(k,7) * ta1(i,1,7) &
 
 1443               + dzt(k,8) * ta1(i,1,8) &
 
 1444               + dzt(k,9) * ta1(i,1,9) &
 
 1445               + dzt(k,10) * ta1(i,1,10) &
 
 1446               + dzt(k,11) * ta1(i,1,11) &
 
 1447               + dzt(k,12) * ta1(i,1,12) &
 
 1448               + dzt(k,13) * ta1(i,1,13)
 
 1452  end subroutine cpu_cdtp_lx13_single
 
 1454  subroutine cpu_cdtp_lx12_single(dtx, x, dr, ds, dt, dxt, dyt, dzt, w3)
 
 1455    integer, 
parameter :: lx = 12
 
 1456    real(kind=rp), 
dimension(lx, lx, lx), 
intent(inout) :: dtx
 
 1457    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: x, dr, ds, dt
 
 1458    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: w3
 
 1459    real(kind=rp), 
intent(in), 
dimension(lx, lx) :: dxt, dyt, dzt
 
 1460    real(kind=rp), 
dimension(lx, lx, lx) :: wx, ta1
 
 1464       wx(i,1,1) = x(i,1,1) * w3(i,1,1)
 
 1468       ta1(i,1,1) = wx(i,1,1) * dr(i,1,1)
 
 1473          dtx(i,j,1) = dxt(i,1) * ta1(1,j,1) &
 
 1474               + dxt(i,2) * ta1(2,j,1) &
 
 1475               + dxt(i,3) * ta1(3,j,1) &
 
 1476               + dxt(i,4) * ta1(4,j,1) &
 
 1477               + dxt(i,5) * ta1(5,j,1) &
 
 1478               + dxt(i,6) * ta1(6,j,1) &
 
 1479               + dxt(i,7) * ta1(7,j,1) &
 
 1480               + dxt(i,8) * ta1(8,j,1) &
 
 1481               + dxt(i,9) * ta1(9,j,1) &
 
 1482               + dxt(i,10) * ta1(10,j,1) &
 
 1483               + dxt(i,11) * ta1(11,j,1) &
 
 1484               + dxt(i,12) * ta1(12,j,1)
 
 1489       ta1(i,1,1) = wx(i,1,1) * ds(i,1,1)
 
 1495             dtx(i,j,k) = dtx(i,j,k) &
 
 1496                  + dyt(j,1) * ta1(i,1,k) &
 
 1497                  + dyt(j,2) * ta1(i,2,k) &
 
 1498                  + dyt(j,3) * ta1(i,3,k) &
 
 1499                  + dyt(j,4) * ta1(i,4,k) &
 
 1500                  + dyt(j,5) * ta1(i,5,k) &
 
 1501                  + dyt(j,6) * ta1(i,6,k) &
 
 1502                  + dyt(j,7) * ta1(i,7,k) &
 
 1503                  + dyt(j,8) * ta1(i,8,k) &
 
 1504                  + dyt(j,9) * ta1(i,9,k) &
 
 1505                  + dyt(j,10) * ta1(i,10,k) &
 
 1506                  + dyt(j,11) * ta1(i,11,k) &
 
 1507                  + dyt(j,12) * ta1(i,12,k)
 
 1513       ta1(i,1,1) = wx(i,1,1) * dt(i,1,1)
 
 1518          dtx(i,1,k) = dtx(i,1,k) &
 
 1519               + dzt(k,1) * ta1(i,1,1) &
 
 1520               + dzt(k,2) * ta1(i,1,2) &
 
 1521               + dzt(k,3) * ta1(i,1,3) &
 
 1522               + dzt(k,4) * ta1(i,1,4) &
 
 1523               + dzt(k,5) * ta1(i,1,5) &
 
 1524               + dzt(k,6) * ta1(i,1,6) &
 
 1525               + dzt(k,7) * ta1(i,1,7) &
 
 1526               + dzt(k,8) * ta1(i,1,8) &
 
 1527               + dzt(k,9) * ta1(i,1,9) &
 
 1528               + dzt(k,10) * ta1(i,1,10) &
 
 1529               + dzt(k,11) * ta1(i,1,11) &
 
 1530               + dzt(k,12) * ta1(i,1,12)
 
 1534  end subroutine cpu_cdtp_lx12_single
 
 1536  subroutine cpu_cdtp_lx11_single(dtx, x, dr, ds, dt, dxt, dyt, dzt, w3)
 
 1537    integer, 
parameter :: lx = 11
 
 1538    real(kind=rp), 
dimension(lx, lx, lx), 
intent(inout) :: dtx
 
 1539    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: x, dr, ds, dt
 
 1540    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: w3
 
 1541    real(kind=rp), 
intent(in), 
dimension(lx, lx) :: dxt, dyt, dzt
 
 1542    real(kind=rp), 
dimension(lx, lx, lx) :: wx, ta1
 
 1546       wx(i,1,1) = x(i,1,1) * w3(i,1,1)
 
 1550       ta1(i,1,1) = wx(i,1,1) * dr(i,1,1)
 
 1555          dtx(i,j,1) = dxt(i,1) * ta1(1,j,1) &
 
 1556               + dxt(i,2) * ta1(2,j,1) &
 
 1557               + dxt(i,3) * ta1(3,j,1) &
 
 1558               + dxt(i,4) * ta1(4,j,1) &
 
 1559               + dxt(i,5) * ta1(5,j,1) &
 
 1560               + dxt(i,6) * ta1(6,j,1) &
 
 1561               + dxt(i,7) * ta1(7,j,1) &
 
 1562               + dxt(i,8) * ta1(8,j,1) &
 
 1563               + dxt(i,9) * ta1(9,j,1) &
 
 1564               + dxt(i,10) * ta1(10,j,1) &
 
 1565               + dxt(i,11) * ta1(11,j,1)
 
 1570       ta1(i,1,1) = wx(i,1,1) * ds(i,1,1)
 
 1576             dtx(i,j,k) = dtx(i,j,k) &
 
 1577                  + dyt(j,1) * ta1(i,1,k) &
 
 1578                  + dyt(j,2) * ta1(i,2,k) &
 
 1579                  + dyt(j,3) * ta1(i,3,k) &
 
 1580                  + dyt(j,4) * ta1(i,4,k) &
 
 1581                  + dyt(j,5) * ta1(i,5,k) &
 
 1582                  + dyt(j,6) * ta1(i,6,k) &
 
 1583                  + dyt(j,7) * ta1(i,7,k) &
 
 1584                  + dyt(j,8) * ta1(i,8,k) &
 
 1585                  + dyt(j,9) * ta1(i,9,k) &
 
 1586                  + dyt(j,10) * ta1(i,10,k) &
 
 1587                  + dyt(j,11) * ta1(i,11,k)
 
 1593       ta1(i,1,1) = wx(i,1,1) * dt(i,1,1)
 
 1598          dtx(i,1,k) = dtx(i,1,k) &
 
 1599               + dzt(k,1) * ta1(i,1,1) &
 
 1600               + dzt(k,2) * ta1(i,1,2) &
 
 1601               + dzt(k,3) * ta1(i,1,3) &
 
 1602               + dzt(k,4) * ta1(i,1,4) &
 
 1603               + dzt(k,5) * ta1(i,1,5) &
 
 1604               + dzt(k,6) * ta1(i,1,6) &
 
 1605               + dzt(k,7) * ta1(i,1,7) &
 
 1606               + dzt(k,8) * ta1(i,1,8) &
 
 1607               + dzt(k,9) * ta1(i,1,9) &
 
 1608               + dzt(k,10) * ta1(i,1,10) &
 
 1609               + dzt(k,11) * ta1(i,1,11)
 
 1613  end subroutine cpu_cdtp_lx11_single
 
 1615  subroutine cpu_cdtp_lx10_single(dtx, x, dr, ds, dt, dxt, dyt, dzt, w3)
 
 1616    integer, 
parameter :: lx = 10
 
 1617    real(kind=rp), 
dimension(lx, lx, lx), 
intent(inout) :: dtx
 
 1618    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: x, dr, ds, dt
 
 1619    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: w3
 
 1620    real(kind=rp), 
intent(in), 
dimension(lx, lx) :: dxt, dyt, dzt
 
 1621    real(kind=rp), 
dimension(lx, lx, lx) :: wx, ta1
 
 1625       wx(i,1,1) = x(i,1,1) * w3(i,1,1)
 
 1629       ta1(i,1,1) = wx(i,1,1) * dr(i,1,1)
 
 1634          dtx(i,j,1) = dxt(i,1) * ta1(1,j,1) &
 
 1635               + dxt(i,2) * ta1(2,j,1) &
 
 1636               + dxt(i,3) * ta1(3,j,1) &
 
 1637               + dxt(i,4) * ta1(4,j,1) &
 
 1638               + dxt(i,5) * ta1(5,j,1) &
 
 1639               + dxt(i,6) * ta1(6,j,1) &
 
 1640               + dxt(i,7) * ta1(7,j,1) &
 
 1641               + dxt(i,8) * ta1(8,j,1) &
 
 1642               + dxt(i,9) * ta1(9,j,1) &
 
 1643               + dxt(i,10) * ta1(10,j,1)
 
 1648       ta1(i,1,1) = wx(i,1,1) * ds(i,1,1)
 
 1654             dtx(i,j,k) = dtx(i,j,k) &
 
 1655                  + dyt(j,1) * ta1(i,1,k) &
 
 1656                  + dyt(j,2) * ta1(i,2,k) &
 
 1657                  + dyt(j,3) * ta1(i,3,k) &
 
 1658                  + dyt(j,4) * ta1(i,4,k) &
 
 1659                  + dyt(j,5) * ta1(i,5,k) &
 
 1660                  + dyt(j,6) * ta1(i,6,k) &
 
 1661                  + dyt(j,7) * ta1(i,7,k) &
 
 1662                  + dyt(j,8) * ta1(i,8,k) &
 
 1663                  + dyt(j,9) * ta1(i,9,k) &
 
 1664                  + dyt(j,10) * ta1(i,10,k)
 
 1671       ta1(i,1,1) = wx(i,1,1) * dt(i,1,1)
 
 1676          dtx(i,1,k) = dtx(i,1,k) &
 
 1677               + dzt(k,1) * ta1(i,1,1) &
 
 1678               + dzt(k,2) * ta1(i,1,2) &
 
 1679               + dzt(k,3) * ta1(i,1,3) &
 
 1680               + dzt(k,4) * ta1(i,1,4) &
 
 1681               + dzt(k,5) * ta1(i,1,5) &
 
 1682               + dzt(k,6) * ta1(i,1,6) &
 
 1683               + dzt(k,7) * ta1(i,1,7) &
 
 1684               + dzt(k,8) * ta1(i,1,8) &
 
 1685               + dzt(k,9) * ta1(i,1,9) &
 
 1686               + dzt(k,10) * ta1(i,1,10)
 
 1690  end subroutine cpu_cdtp_lx10_single
 
 1692  subroutine cpu_cdtp_lx9_single(dtx, x, dr, ds, dt, dxt, dyt, dzt, w3)
 
 1693    integer, 
parameter :: lx = 9
 
 1694    real(kind=rp), 
dimension(lx, lx, lx), 
intent(inout) :: dtx
 
 1695    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: x, dr, ds, dt
 
 1696    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: w3
 
 1697    real(kind=rp), 
intent(in), 
dimension(lx, lx) :: dxt, dyt, dzt
 
 1698    real(kind=rp), 
dimension(lx, lx, lx) :: wx, ta1
 
 1702       wx(i,1,1) = x(i,1,1) * w3(i,1,1)
 
 1706       ta1(i,1,1) = wx(i,1,1) * dr(i,1,1)
 
 1711          dtx(i,j,1) = dxt(i,1) * ta1(1,j,1) &
 
 1712               + dxt(i,2) * ta1(2,j,1) &
 
 1713               + dxt(i,3) * ta1(3,j,1) &
 
 1714               + dxt(i,4) * ta1(4,j,1) &
 
 1715               + dxt(i,5) * ta1(5,j,1) &
 
 1716               + dxt(i,6) * ta1(6,j,1) &
 
 1717               + dxt(i,7) * ta1(7,j,1) &
 
 1718               + dxt(i,8) * ta1(8,j,1) &
 
 1719               + dxt(i,9) * ta1(9,j,1)
 
 1724       ta1(i,1,1) = wx(i,1,1) * ds(i,1,1)
 
 1730             dtx(i,j,k) = dtx(i,j,k) &
 
 1731                  + dyt(j,1) * ta1(i,1,k) &
 
 1732                  + dyt(j,2) * ta1(i,2,k) &
 
 1733                  + dyt(j,3) * ta1(i,3,k) &
 
 1734                  + dyt(j,4) * ta1(i,4,k) &
 
 1735                  + dyt(j,5) * ta1(i,5,k) &
 
 1736                  + dyt(j,6) * ta1(i,6,k) &
 
 1737                  + dyt(j,7) * ta1(i,7,k) &
 
 1738                  + dyt(j,8) * ta1(i,8,k) &
 
 1739                  + dyt(j,9) * ta1(i,9,k)
 
 1745       ta1(i,1,1) = wx(i,1,1) * dt(i,1,1)
 
 1750          dtx(i,1,k) = dtx(i,1,k) &
 
 1751               + dzt(k,1) * ta1(i,1,1) &
 
 1752               + dzt(k,2) * ta1(i,1,2) &
 
 1753               + dzt(k,3) * ta1(i,1,3) &
 
 1754               + dzt(k,4) * ta1(i,1,4) &
 
 1755               + dzt(k,5) * ta1(i,1,5) &
 
 1756               + dzt(k,6) * ta1(i,1,6) &
 
 1757               + dzt(k,7) * ta1(i,1,7) &
 
 1758               + dzt(k,8) * ta1(i,1,8) &
 
 1759               + dzt(k,9) * ta1(i,1,9)
 
 1763  end subroutine cpu_cdtp_lx9_single
 
 1765  subroutine cpu_cdtp_lx8_single(dtx, x, dr, ds, dt, dxt, dyt, dzt, w3)
 
 1766    integer, 
parameter :: lx = 8
 
 1767    real(kind=rp), 
dimension(lx, lx, lx), 
intent(inout) :: dtx
 
 1768    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: x, dr, ds, dt
 
 1769    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: w3
 
 1770    real(kind=rp), 
intent(in), 
dimension(lx, lx) :: dxt, dyt, dzt
 
 1771    real(kind=rp), 
dimension(lx, lx, lx) :: wx, ta1
 
 1775       wx(i,1,1) = x(i,1,1) * w3(i,1,1)
 
 1779       ta1(i,1,1) = wx(i,1,1) * dr(i,1,1)
 
 1784          dtx(i,j,1) = dxt(i,1) * ta1(1,j,1) &
 
 1785               + dxt(i,2) * ta1(2,j,1) &
 
 1786               + dxt(i,3) * ta1(3,j,1) &
 
 1787               + dxt(i,4) * ta1(4,j,1) &
 
 1788               + dxt(i,5) * ta1(5,j,1) &
 
 1789               + dxt(i,6) * ta1(6,j,1) &
 
 1790               + dxt(i,7) * ta1(7,j,1) &
 
 1791               + dxt(i,8) * ta1(8,j,1)
 
 1796       ta1(i,1,1) = wx(i,1,1) * ds(i,1,1)
 
 1802             dtx(i,j,k) = dtx(i,j,k) &
 
 1803                  + dyt(j,1) * ta1(i,1,k) &
 
 1804                  + dyt(j,2) * ta1(i,2,k) &
 
 1805                  + dyt(j,3) * ta1(i,3,k) &
 
 1806                  + dyt(j,4) * ta1(i,4,k) &
 
 1807                  + dyt(j,5) * ta1(i,5,k) &
 
 1808                  + dyt(j,6) * ta1(i,6,k) &
 
 1809                  + dyt(j,7) * ta1(i,7,k) &
 
 1810                  + dyt(j,8) * ta1(i,8,k)
 
 1816       ta1(i,1,1) = wx(i,1,1) * dt(i,1,1)
 
 1821          dtx(i,1,k) = dtx(i,1,k) &
 
 1822               + dzt(k,1) * ta1(i,1,1) &
 
 1823               + dzt(k,2) * ta1(i,1,2) &
 
 1824               + dzt(k,3) * ta1(i,1,3) &
 
 1825               + dzt(k,4) * ta1(i,1,4) &
 
 1826               + dzt(k,5) * ta1(i,1,5) &
 
 1827               + dzt(k,6) * ta1(i,1,6) &
 
 1828               + dzt(k,7) * ta1(i,1,7) &
 
 1829               + dzt(k,8) * ta1(i,1,8)
 
 1833  end subroutine cpu_cdtp_lx8_single
 
 1835  subroutine cpu_cdtp_lx7_single(dtx, x, dr, ds, dt, dxt, dyt, dzt, w3)
 
 1836    integer, 
parameter :: lx = 7
 
 1837    real(kind=rp), 
dimension(lx, lx, lx), 
intent(inout) :: dtx
 
 1838    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: x, dr, ds, dt
 
 1839    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: w3
 
 1840    real(kind=rp), 
intent(in), 
dimension(lx, lx) :: dxt, dyt, dzt
 
 1841    real(kind=rp), 
dimension(lx, lx, lx) :: wx, ta1
 
 1845       wx(i,1,1) = x(i,1,1) * w3(i,1,1)
 
 1849       ta1(i,1,1) = wx(i,1,1) * dr(i,1,1)
 
 1854          dtx(i,j,1) = dxt(i,1) * ta1(1,j,1) &
 
 1855               + dxt(i,2) * ta1(2,j,1) &
 
 1856               + dxt(i,3) * ta1(3,j,1) &
 
 1857               + dxt(i,4) * ta1(4,j,1) &
 
 1858               + dxt(i,5) * ta1(5,j,1) &
 
 1859               + dxt(i,6) * ta1(6,j,1) &
 
 1860               + dxt(i,7) * ta1(7,j,1)
 
 1865       ta1(i,1,1) = wx(i,1,1) * ds(i,1,1)
 
 1871             dtx(i,j,k) = dtx(i,j,k) &
 
 1872                  + dyt(j,1) * ta1(i,1,k) &
 
 1873                  + dyt(j,2) * ta1(i,2,k) &
 
 1874                  + dyt(j,3) * ta1(i,3,k) &
 
 1875                  + dyt(j,4) * ta1(i,4,k) &
 
 1876                  + dyt(j,5) * ta1(i,5,k) &
 
 1877                  + dyt(j,6) * ta1(i,6,k) &
 
 1878                  + dyt(j,7) * ta1(i,7,k)
 
 1884       ta1(i,1,1) = wx(i,1,1) * dt(i,1,1)
 
 1889          dtx(i,1,k) = dtx(i,1,k) &
 
 1890               + dzt(k,1) * ta1(i,1,1) &
 
 1891               + dzt(k,2) * ta1(i,1,2) &
 
 1892               + dzt(k,3) * ta1(i,1,3) &
 
 1893               + dzt(k,4) * ta1(i,1,4) &
 
 1894               + dzt(k,5) * ta1(i,1,5) &
 
 1895               + dzt(k,6) * ta1(i,1,6) &
 
 1896               + dzt(k,7) * ta1(i,1,7)
 
 1900  end subroutine cpu_cdtp_lx7_single
 
 1902  subroutine cpu_cdtp_lx6_single(dtx, x, dr, ds, dt, dxt, dyt, dzt, w3)
 
 1903    integer, 
parameter :: lx = 6
 
 1904    real(kind=rp), 
dimension(lx, lx, lx), 
intent(inout) :: dtx
 
 1905    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: x, dr, ds, dt
 
 1906    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: w3
 
 1907    real(kind=rp), 
intent(in), 
dimension(lx, lx) :: dxt, dyt, dzt
 
 1908    real(kind=rp), 
dimension(lx, lx, lx) :: wx, ta1
 
 1912       wx(i,1,1) = x(i,1,1) * w3(i,1,1)
 
 1916       ta1(i,1,1) = wx(i,1,1) * dr(i,1,1)
 
 1921          dtx(i,j,1) = dxt(i,1) * ta1(1,j,1) &
 
 1922               + dxt(i,2) * ta1(2,j,1) &
 
 1923               + dxt(i,3) * ta1(3,j,1) &
 
 1924               + dxt(i,4) * ta1(4,j,1) &
 
 1925               + dxt(i,5) * ta1(5,j,1) &
 
 1926               + dxt(i,6) * ta1(6,j,1)
 
 1931       ta1(i,1,1) = wx(i,1,1) * ds(i,1,1)
 
 1937             dtx(i,j,k) = dtx(i,j,k) &
 
 1938                  + dyt(j,1) * ta1(i,1,k) &
 
 1939                  + dyt(j,2) * ta1(i,2,k) &
 
 1940                  + dyt(j,3) * ta1(i,3,k) &
 
 1941                  + dyt(j,4) * ta1(i,4,k) &
 
 1942                  + dyt(j,5) * ta1(i,5,k) &
 
 1943                  + dyt(j,6) * ta1(i,6,k)
 
 1949       ta1(i,1,1) = wx(i,1,1) * dt(i,1,1)
 
 1954          dtx(i,1,k) = dtx(i,1,k) &
 
 1955               + dzt(k,1) * ta1(i,1,1) &
 
 1956               + dzt(k,2) * ta1(i,1,2) &
 
 1957               + dzt(k,3) * ta1(i,1,3) &
 
 1958               + dzt(k,4) * ta1(i,1,4) &
 
 1959               + dzt(k,5) * ta1(i,1,5) &
 
 1960               + dzt(k,6) * ta1(i,1,6)
 
 1964  end subroutine cpu_cdtp_lx6_single
 
 1966  subroutine cpu_cdtp_lx5_single(dtx, x, dr, ds, dt, dxt, dyt, dzt, w3)
 
 1967    integer, 
parameter :: lx = 5
 
 1968    real(kind=rp), 
dimension(lx, lx, lx), 
intent(inout) :: dtx
 
 1969    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: x, dr, ds, dt
 
 1970    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: w3
 
 1971    real(kind=rp), 
intent(in), 
dimension(lx, lx) :: dxt, dyt, dzt
 
 1972    real(kind=rp), 
dimension(lx, lx, lx) :: wx, ta1
 
 1976       wx(i,1,1) = x(i,1,1) * w3(i,1,1)
 
 1980       ta1(i,1,1) = wx(i,1,1) * dr(i,1,1)
 
 1985          dtx(i,j,1) = dxt(i,1) * ta1(1,j,1) &
 
 1986               + dxt(i,2) * ta1(2,j,1) &
 
 1987               + dxt(i,3) * ta1(3,j,1) &
 
 1988               + dxt(i,4) * ta1(4,j,1) &
 
 1989               + dxt(i,5) * ta1(5,j,1)
 
 1994       ta1(i,1,1) = wx(i,1,1) * ds(i,1,1)
 
 2000             dtx(i,j,k) = dtx(i,j,k) &
 
 2001                  + dyt(j,1) * ta1(i,1,k) &
 
 2002                  + dyt(j,2) * ta1(i,2,k) &
 
 2003                  + dyt(j,3) * ta1(i,3,k) &
 
 2004                  + dyt(j,4) * ta1(i,4,k) &
 
 2005                  + dyt(j,5) * ta1(i,5,k)
 
 2011       ta1(i,1,1) = wx(i,1,1) * dt(i,1,1)
 
 2016          dtx(i,1,k) = dtx(i,1,k) &
 
 2017               + dzt(k,1) * ta1(i,1,1) &
 
 2018               + dzt(k,2) * ta1(i,1,2) &
 
 2019               + dzt(k,3) * ta1(i,1,3) &
 
 2020               + dzt(k,4) * ta1(i,1,4) &
 
 2021               + dzt(k,5) * ta1(i,1,5)
 
 2025  end subroutine cpu_cdtp_lx5_single
 
 2027  subroutine cpu_cdtp_lx4_single(dtx, x, dr, ds, dt, dxt, dyt, dzt, w3)
 
 2028    integer, 
parameter :: lx = 4
 
 2029    real(kind=rp), 
dimension(lx, lx, lx), 
intent(inout) :: dtx
 
 2030    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: x, dr, ds, dt
 
 2031    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: w3
 
 2032    real(kind=rp), 
intent(in), 
dimension(lx, lx) :: dxt, dyt, dzt
 
 2033    real(kind=rp), 
dimension(lx, lx, lx) :: wx, ta1
 
 2037       wx(i,1,1) = x(i,1,1) * w3(i,1,1)
 
 2041       ta1(i,1,1) = wx(i,1,1) * dr(i,1,1)
 
 2046          dtx(i,j,1) = dxt(i,1) * ta1(1,j,1) &
 
 2047               + dxt(i,2) * ta1(2,j,1) &
 
 2048               + dxt(i,3) * ta1(3,j,1) &
 
 2049               + dxt(i,4) * ta1(4,j,1)
 
 2054       ta1(i,1,1) = wx(i,1,1) * ds(i,1,1)
 
 2060             dtx(i,j,k) = dtx(i,j,k) &
 
 2061                  + dyt(j,1) * ta1(i,1,k) &
 
 2062                  + dyt(j,2) * ta1(i,2,k) &
 
 2063                  + dyt(j,3) * ta1(i,3,k) &
 
 2064                  + dyt(j,4) * ta1(i,4,k)
 
 2070       ta1(i,1,1) = wx(i,1,1) * dt(i,1,1)
 
 2075          dtx(i,1,k) = dtx(i,1,k) &
 
 2076               + dzt(k,1) * ta1(i,1,1) &
 
 2077               + dzt(k,2) * ta1(i,1,2) &
 
 2078               + dzt(k,3) * ta1(i,1,3) &
 
 2079               + dzt(k,4) * ta1(i,1,4)
 
 2083  end subroutine cpu_cdtp_lx4_single
 
 2085  subroutine cpu_cdtp_lx3_single(dtx, x, dr, ds, dt, dxt, dyt, dzt, w3)
 
 2086    integer, 
parameter :: lx = 3
 
 2087    real(kind=rp), 
dimension(lx, lx, lx), 
intent(inout) :: dtx
 
 2088    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: x, dr, ds, dt
 
 2089    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: w3
 
 2090    real(kind=rp), 
intent(in), 
dimension(lx, lx) :: dxt, dyt, dzt
 
 2091    real(kind=rp), 
dimension(lx, lx, lx) :: wx, ta1
 
 2095       wx(i,1,1) = x(i,1,1) * w3(i,1,1)
 
 2099       ta1(i,1,1) = wx(i,1,1) * dr(i,1,1)
 
 2104          dtx(i,j,1) = dxt(i,1) * ta1(1,j,1) &
 
 2105               + dxt(i,2) * ta1(2,j,1) &
 
 2106               + dxt(i,3) * ta1(3,j,1)
 
 2111       ta1(i,1,1) = wx(i,1,1) * ds(i,1,1)
 
 2117             dtx(i,j,k) = dtx(i,j,k) &
 
 2118                  + dyt(j,1) * ta1(i,1,k) &
 
 2119                  + dyt(j,2) * ta1(i,2,k) &
 
 2120                  + dyt(j,3) * ta1(i,3,k)
 
 2126       ta1(i,1,1) = wx(i,1,1) * dt(i,1,1)
 
 2131          dtx(i,1,k) = dtx(i,1,k) &
 
 2132               + dzt(k,1) * ta1(i,1,1) &
 
 2133               + dzt(k,2) * ta1(i,1,2) &
 
 2134               + dzt(k,3) * ta1(i,1,3)
 
 2138  end subroutine cpu_cdtp_lx3_single
 
 2140  subroutine cpu_cdtp_lx2_single(dtx, x, dr, ds, dt, dxt, dyt, dzt, w3)
 
 2141    integer, 
parameter :: lx = 2
 
 2142    real(kind=rp), 
dimension(lx, lx, lx), 
intent(inout) :: dtx
 
 2143    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: x, dr, ds, dt
 
 2144    real(kind=rp), 
dimension(lx, lx, lx), 
intent(in) :: w3
 
 2145    real(kind=rp), 
intent(in), 
dimension(lx, lx) :: dxt, dyt, dzt
 
 2146    real(kind=rp), 
dimension(lx, lx, lx) :: wx, ta1
 
 2150       wx(i,1,1) = x(i,1,1) * w3(i,1,1)
 
 2154       ta1(i,1,1) = wx(i,1,1) * dr(i,1,1)
 
 2159          dtx(i,j,1) = dxt(i,1) * ta1(1,j,1) &
 
 2160               + dxt(i,2) * ta1(2,j,1)
 
 2165       ta1(i,1,1) = wx(i,1,1) * ds(i,1,1)
 
 2171             dtx(i,j,k) = dtx(i,j,k) &
 
 2172                  + dyt(j,1) * ta1(i,1,k) &
 
 2173                  + dyt(j,2) * ta1(i,2,k)
 
 2179       ta1(i,1,1) = wx(i,1,1) * dt(i,1,1)
 
 2184          dtx(i,1,k) = dtx(i,1,k) &
 
 2185               + dzt(k,1) * ta1(i,1,1) &
 
 2186               + dzt(k,2) * ta1(i,1,2)
 
 2190  end subroutine cpu_cdtp_lx2_single
 
 2191end submodule cpu_cdtp