46     real(kind=
rp), 
allocatable :: d(:,:,:,:)
 
   47     type(
gs_t), 
pointer :: gs_h
 
 
   60    class(
jacobi_t), 
intent(inout) :: this
 
   61    type(
coef_t), 
intent(in), 
target :: coef
 
   62    type(
dofmap_t), 
intent(in), 
target :: dof
 
   63    type(
gs_t), 
intent(inout), 
target :: gs_h
 
   69    allocate(this%d(dof%Xh%lx,dof%Xh%ly,dof%Xh%lz, dof%msh%nelv))
 
 
   75    class(
jacobi_t), 
intent(inout) :: this
 
   76    if (
allocated(this%d)) 
then 
 
   87    integer, 
intent(in) :: n
 
   88    class(
jacobi_t), 
intent(inout) :: this
 
   89    real(kind=
rp), 
dimension(n), 
intent(inout) :: z
 
   90    real(kind=
rp), 
dimension(n), 
intent(inout) :: r
 
   91    call col3(z,r,this%d,n)
 
 
   96    class(
jacobi_t), 
intent(inout) :: this
 
   97    associate(dof => this%dof, coef => this%coef, gs_h => this%gs_h)
 
  100      select case(dof%Xh%lx)
 
  103              coef%G11, coef%G22, coef%G33, coef%G12, coef%G13, coef%G23, &
 
  104              dof%msh%dfrmd_el, dof%msh%nelv)
 
  107              coef%G11, coef%G22, coef%G33, coef%G12, coef%G13, coef%G23, &
 
  108              dof%msh%dfrmd_el, dof%msh%nelv)
 
  111              coef%G11, coef%G22, coef%G33, coef%G12, coef%G13, coef%G23, &
 
  112              dof%msh%dfrmd_el, dof%msh%nelv)
 
  115              coef%G11, coef%G22, coef%G33, coef%G12, coef%G13, coef%G23, &
 
  116              dof%msh%dfrmd_el, dof%msh%nelv)
 
  119              coef%G11, coef%G22, coef%G33, coef%G12, coef%G13, coef%G23, &
 
  120              dof%msh%dfrmd_el, dof%msh%nelv)
 
  123              coef%G11, coef%G22, coef%G33, coef%G12, coef%G13, coef%G23, &
 
  124              dof%msh%dfrmd_el, dof%msh%nelv)
 
  127              coef%G11, coef%G22, coef%G33, coef%G12, coef%G13, coef%G23, &
 
  128              dof%msh%dfrmd_el, dof%msh%nelv)
 
  131              coef%G11, coef%G22, coef%G33, coef%G12, coef%G13, coef%G23, &
 
  132              dof%msh%dfrmd_el, dof%msh%nelv)
 
  135              coef%G11, coef%G22, coef%G33, coef%G12, coef%G13, coef%G23, &
 
  136              dof%msh%dfrmd_el, dof%msh%nelv)
 
  139              coef%G11, coef%G22, coef%G33, coef%G12, coef%G13, coef%G23, &
 
  140              dof%msh%dfrmd_el, dof%msh%nelv)
 
  143              coef%G11, coef%G22, coef%G33, coef%G12, coef%G13, coef%G23, &
 
  144              dof%msh%dfrmd_el, dof%msh%nelv)
 
  147              coef%G11, coef%G22, coef%G33, coef%G12, coef%G13, coef%G23, &
 
  148              dof%msh%dfrmd_el, dof%msh%nelv)
 
  151              coef%G11, coef%G22, coef%G33, coef%G12, coef%G13, coef%G23, &
 
  152              dof%msh%dfrmd_el, dof%msh%nelv)
 
  155              coef%G11, coef%G22, coef%G33, coef%G12, coef%G13, coef%G23, &
 
  156              dof%msh%dfrmd_el, dof%msh%nelv, dof%Xh%lx)
 
  159      call col2(this%d,coef%h1,coef%dof%size())
 
  160      if (coef%ifh2) 
call addcol3(this%d,coef%h2,coef%B,coef%dof%size())
 
  161      call gs_h%op(this%d, dof%size(), gs_op_add)
 
  162      call invcol1(this%d,dof%size())
 
 
  168       G12, G13, G23, dfrmd_el, n, lx)
 
  169    integer, 
intent(in) :: n, lx
 
  170    real(kind=rp), 
intent(inout) :: d(lx, lx, lx, n)
 
  171    real(kind=rp), 
intent(in) :: g11(lx, lx, lx, n)
 
  172    real(kind=rp), 
intent(in) :: g22(lx, lx, lx, n)
 
  173    real(kind=rp), 
intent(in) :: g33(lx, lx, lx, n)
 
  174    real(kind=rp), 
intent(in) :: g12(lx, lx, lx, n)
 
  175    real(kind=rp), 
intent(in) :: g13(lx, lx, lx, n)
 
  176    real(kind=rp), 
intent(in) :: g23(lx, lx, lx, n)
 
  177    real(kind=rp), 
intent(in) :: dxt(lx, lx)
 
  178    real(kind=rp), 
intent(in) :: dyt(lx, lx)
 
  179    real(kind=rp), 
intent(in) :: dzt(lx, lx)
 
  180    logical, 
intent(in) :: dfrmd_el(n)
 
  181    integer :: i, j, k, l, e
 
  190                   d(i,j,k,e) = d(i,j,k,e) + &
 
  191                        g11(l,j,k,e) * dxt(i,l)**2
 
  200                   d(i,j,k,e) = d(i,j,k,e) + &
 
  201                        g22(i,l,k,e) * dyt(j,l)**2
 
  210                   d(i,j,k,e) = d(i,j,k,e) + &
 
  211                        g33(i,j,l,e) * dzt(k,l)**2
 
  217       if (dfrmd_el(e)) 
then 
  220                d(1,j,k,e) = d(1,j,k,e) &
 
  221                     + g12(1,j,k,e) * dxt(1,1)*dyt(j,j) &
 
  222                     + g13(1,j,k,e) * dxt(1,1)*dzt(k,k)
 
  223                d(lx,j,k,e) = d(lx,j,k,e) &
 
  224                     + g12(lx,j,k,e) * dxt(lx,lx)*dyt(j,j) &
 
  225                     + g13(lx,j,k,e) * dxt(lx,lx)*dzt(k,k)
 
  231                d(i,1,k,e) = d(i,1,k,e) &
 
  232                     + g12(i,1,k,e) * dyt(1,1)*dxt(i,i) &
 
  233                     + g23(i,1,k,e) * dyt(1,1)*dzt(k,k)
 
  234                d(i,lx,k,e) = d(i,lx,k,e) &
 
  235                     + g12(i,lx,k,e) * dyt(lx,lx)*dxt(i,i) &
 
  236                     + g23(i,lx,k,e) * dyt(lx,lx)*dzt(k,k)
 
  241                d(i,j,1,e) = d(i,j,1,e) &
 
  242                     + g13(i,j,1,e) * dzt(1,1)*dxt(i,i) &
 
  243                     + g23(i,j,1,e) * dzt(1,1)*dyt(j,j)
 
  244                d(i,j,lx,e) = d(i,j,lx,e) &
 
  245                     + g13(i,j,lx,e) * dzt(lx,lx)*dxt(i,i) &
 
  246                     + g23(i,j,lx,e) * dzt(lx,lx)*dyt(j,j)
 
 
  254       G12, G13, G23, dfrmd_el, n)
 
  255    integer, 
parameter :: lx = 14
 
  256    integer, 
intent(in) :: n
 
  257    real(kind=rp), 
intent(inout) :: d(lx, lx, lx, n)
 
  258    real(kind=rp), 
intent(in) :: g11(lx, lx, lx, n)
 
  259    real(kind=rp), 
intent(in) :: g22(lx, lx, lx, n)
 
  260    real(kind=rp), 
intent(in) :: g33(lx, lx, lx, n)
 
  261    real(kind=rp), 
intent(in) :: g12(lx, lx, lx, n)
 
  262    real(kind=rp), 
intent(in) :: g13(lx, lx, lx, n)
 
  263    real(kind=rp), 
intent(in) :: g23(lx, lx, lx, n)
 
  264    real(kind=rp), 
intent(in) :: dxt(lx, lx)
 
  265    real(kind=rp), 
intent(in) :: dyt(lx, lx)
 
  266    real(kind=rp), 
intent(in) :: dzt(lx, lx)
 
  267    logical, 
intent(in) :: dfrmd_el(n)
 
  268    integer :: i, j, k, l, e
 
  277                   d(i,j,k,e) = d(i,j,k,e) + &
 
  278                        g11(l,j,k,e) * dxt(i,l)**2
 
  287                   d(i,j,k,e) = d(i,j,k,e) + &
 
  288                        g22(i,l,k,e) * dyt(j,l)**2
 
  297                   d(i,j,k,e) = d(i,j,k,e) + &
 
  298                        g33(i,j,l,e) * dzt(k,l)**2
 
  304       if (dfrmd_el(e)) 
then 
  307                d(1,j,k,e) = d(1,j,k,e) &
 
  308                     + g12(1,j,k,e) * dxt(1,1)*dyt(j,j) &
 
  309                     + g13(1,j,k,e) * dxt(1,1)*dzt(k,k)
 
  310                d(lx,j,k,e) = d(lx,j,k,e) &
 
  311                     + g12(lx,j,k,e) * dxt(lx,lx)*dyt(j,j) &
 
  312                     + g13(lx,j,k,e) * dxt(lx,lx)*dzt(k,k)
 
  318                d(i,1,k,e) = d(i,1,k,e) &
 
  319                     + g12(i,1,k,e) * dyt(1,1)*dxt(i,i) &
 
  320                     + g23(i,1,k,e) * dyt(1,1)*dzt(k,k)
 
  321                d(i,lx,k,e) = d(i,lx,k,e) &
 
  322                     + g12(i,lx,k,e) * dyt(lx,lx)*dxt(i,i) &
 
  323                     + g23(i,lx,k,e) * dyt(lx,lx)*dzt(k,k)
 
  328                d(i,j,1,e) = d(i,j,1,e) &
 
  329                     + g13(i,j,1,e) * dzt(1,1)*dxt(i,i) &
 
  330                     + g23(i,j,1,e) * dzt(1,1)*dyt(j,j)
 
  331                d(i,j,lx,e) = d(i,j,lx,e) &
 
  332                     + g13(i,j,lx,e) * dzt(lx,lx)*dxt(i,i) &
 
  333                     + g23(i,j,lx,e) * dzt(lx,lx)*dyt(j,j)
 
 
  341       G12, G13, G23, dfrmd_el, n)
 
  342    integer, 
parameter :: lx = 13
 
  343    integer, 
intent(in) :: n
 
  344    real(kind=rp), 
intent(inout) :: d(lx, lx, lx, n)
 
  345    real(kind=rp), 
intent(in) :: g11(lx, lx, lx, n)
 
  346    real(kind=rp), 
intent(in) :: g22(lx, lx, lx, n)
 
  347    real(kind=rp), 
intent(in) :: g33(lx, lx, lx, n)
 
  348    real(kind=rp), 
intent(in) :: g12(lx, lx, lx, n)
 
  349    real(kind=rp), 
intent(in) :: g13(lx, lx, lx, n)
 
  350    real(kind=rp), 
intent(in) :: g23(lx, lx, lx, n)
 
  351    real(kind=rp), 
intent(in) :: dxt(lx, lx)
 
  352    real(kind=rp), 
intent(in) :: dyt(lx, lx)
 
  353    real(kind=rp), 
intent(in) :: dzt(lx, lx)
 
  354    logical, 
intent(in) :: dfrmd_el(n)
 
  355    integer :: i, j, k, l, e
 
  364                   d(i,j,k,e) = d(i,j,k,e) + &
 
  365                        g11(l,j,k,e) * dxt(i,l)**2
 
  374                   d(i,j,k,e) = d(i,j,k,e) + &
 
  375                        g22(i,l,k,e) * dyt(j,l)**2
 
  384                   d(i,j,k,e) = d(i,j,k,e) + &
 
  385                        g33(i,j,l,e) * dzt(k,l)**2
 
  391       if (dfrmd_el(e)) 
then 
  394                d(1,j,k,e) = d(1,j,k,e) &
 
  395                     + g12(1,j,k,e) * dxt(1,1)*dyt(j,j) &
 
  396                     + g13(1,j,k,e) * dxt(1,1)*dzt(k,k)
 
  397                d(lx,j,k,e) = d(lx,j,k,e) &
 
  398                     + g12(lx,j,k,e) * dxt(lx,lx)*dyt(j,j) &
 
  399                     + g13(lx,j,k,e) * dxt(lx,lx)*dzt(k,k)
 
  405                d(i,1,k,e) = d(i,1,k,e) &
 
  406                     + g12(i,1,k,e) * dyt(1,1)*dxt(i,i) &
 
  407                     + g23(i,1,k,e) * dyt(1,1)*dzt(k,k)
 
  408                d(i,lx,k,e) = d(i,lx,k,e) &
 
  409                     + g12(i,lx,k,e) * dyt(lx,lx)*dxt(i,i) &
 
  410                     + g23(i,lx,k,e) * dyt(lx,lx)*dzt(k,k)
 
  415                d(i,j,1,e) = d(i,j,1,e) &
 
  416                     + g13(i,j,1,e) * dzt(1,1)*dxt(i,i) &
 
  417                     + g23(i,j,1,e) * dzt(1,1)*dyt(j,j)
 
  418                d(i,j,lx,e) = d(i,j,lx,e) &
 
  419                     + g13(i,j,lx,e) * dzt(lx,lx)*dxt(i,i) &
 
  420                     + g23(i,j,lx,e) * dzt(lx,lx)*dyt(j,j)
 
 
  428       G12, G13, G23, dfrmd_el, n)
 
  429    integer, 
parameter :: lx = 12
 
  430    integer, 
intent(in) :: n
 
  431    real(kind=rp), 
intent(inout) :: d(lx, lx, lx, n)
 
  432    real(kind=rp), 
intent(in) :: g11(lx, lx, lx, n)
 
  433    real(kind=rp), 
intent(in) :: g22(lx, lx, lx, n)
 
  434    real(kind=rp), 
intent(in) :: g33(lx, lx, lx, n)
 
  435    real(kind=rp), 
intent(in) :: g12(lx, lx, lx, n)
 
  436    real(kind=rp), 
intent(in) :: g13(lx, lx, lx, n)
 
  437    real(kind=rp), 
intent(in) :: g23(lx, lx, lx, n)
 
  438    real(kind=rp), 
intent(in) :: dxt(lx, lx)
 
  439    real(kind=rp), 
intent(in) :: dyt(lx, lx)
 
  440    real(kind=rp), 
intent(in) :: dzt(lx, lx)
 
  441    logical, 
intent(in) :: dfrmd_el(n)
 
  442    integer :: i, j, k, l, e
 
  451                   d(i,j,k,e) = d(i,j,k,e) + &
 
  452                        g11(l,j,k,e) * dxt(i,l)**2
 
  461                   d(i,j,k,e) = d(i,j,k,e) + &
 
  462                        g22(i,l,k,e) * dyt(j,l)**2
 
  471                   d(i,j,k,e) = d(i,j,k,e) + &
 
  472                        g33(i,j,l,e) * dzt(k,l)**2
 
  478       if (dfrmd_el(e)) 
then 
  481                d(1,j,k,e) = d(1,j,k,e) &
 
  482                     + g12(1,j,k,e) * dxt(1,1)*dyt(j,j) &
 
  483                     + g13(1,j,k,e) * dxt(1,1)*dzt(k,k)
 
  484                d(lx,j,k,e) = d(lx,j,k,e) &
 
  485                     + g12(lx,j,k,e) * dxt(lx,lx)*dyt(j,j) &
 
  486                     + g13(lx,j,k,e) * dxt(lx,lx)*dzt(k,k)
 
  492                d(i,1,k,e) = d(i,1,k,e) &
 
  493                     + g12(i,1,k,e) * dyt(1,1)*dxt(i,i) &
 
  494                     + g23(i,1,k,e) * dyt(1,1)*dzt(k,k)
 
  495                d(i,lx,k,e) = d(i,lx,k,e) &
 
  496                     + g12(i,lx,k,e) * dyt(lx,lx)*dxt(i,i) &
 
  497                     + g23(i,lx,k,e) * dyt(lx,lx)*dzt(k,k)
 
  502                d(i,j,1,e) = d(i,j,1,e) &
 
  503                     + g13(i,j,1,e) * dzt(1,1)*dxt(i,i) &
 
  504                     + g23(i,j,1,e) * dzt(1,1)*dyt(j,j)
 
  505                d(i,j,lx,e) = d(i,j,lx,e) &
 
  506                     + g13(i,j,lx,e) * dzt(lx,lx)*dxt(i,i) &
 
  507                     + g23(i,j,lx,e) * dzt(lx,lx)*dyt(j,j)
 
 
  515       G12, G13, G23, dfrmd_el, n)
 
  516    integer, 
parameter :: lx = 11
 
  517    integer, 
intent(in) :: n
 
  518    real(kind=rp), 
intent(inout) :: d(lx, lx, lx, n)
 
  519    real(kind=rp), 
intent(in) :: g11(lx, lx, lx, n)
 
  520    real(kind=rp), 
intent(in) :: g22(lx, lx, lx, n)
 
  521    real(kind=rp), 
intent(in) :: g33(lx, lx, lx, n)
 
  522    real(kind=rp), 
intent(in) :: g12(lx, lx, lx, n)
 
  523    real(kind=rp), 
intent(in) :: g13(lx, lx, lx, n)
 
  524    real(kind=rp), 
intent(in) :: g23(lx, lx, lx, n)
 
  525    real(kind=rp), 
intent(in) :: dxt(lx, lx)
 
  526    real(kind=rp), 
intent(in) :: dyt(lx, lx)
 
  527    real(kind=rp), 
intent(in) :: dzt(lx, lx)
 
  528    logical, 
intent(in) :: dfrmd_el(n)
 
  529    integer :: i, j, k, l, e
 
  538                   d(i,j,k,e) = d(i,j,k,e) + &
 
  539                        g11(l,j,k,e) * dxt(i,l)**2
 
  548                   d(i,j,k,e) = d(i,j,k,e) + &
 
  549                        g22(i,l,k,e) * dyt(j,l)**2
 
  558                   d(i,j,k,e) = d(i,j,k,e) + &
 
  559                        g33(i,j,l,e) * dzt(k,l)**2
 
  565       if (dfrmd_el(e)) 
then 
  568                d(1,j,k,e) = d(1,j,k,e) &
 
  569                     + g12(1,j,k,e) * dxt(1,1)*dyt(j,j) &
 
  570                     + g13(1,j,k,e) * dxt(1,1)*dzt(k,k)
 
  571                d(lx,j,k,e) = d(lx,j,k,e) &
 
  572                     + g12(lx,j,k,e) * dxt(lx,lx)*dyt(j,j) &
 
  573                     + g13(lx,j,k,e) * dxt(lx,lx)*dzt(k,k)
 
  579                d(i,1,k,e) = d(i,1,k,e) &
 
  580                     + g12(i,1,k,e) * dyt(1,1)*dxt(i,i) &
 
  581                     + g23(i,1,k,e) * dyt(1,1)*dzt(k,k)
 
  582                d(i,lx,k,e) = d(i,lx,k,e) &
 
  583                     + g12(i,lx,k,e) * dyt(lx,lx)*dxt(i,i) &
 
  584                     + g23(i,lx,k,e) * dyt(lx,lx)*dzt(k,k)
 
  589                d(i,j,1,e) = d(i,j,1,e) &
 
  590                     + g13(i,j,1,e) * dzt(1,1)*dxt(i,i) &
 
  591                     + g23(i,j,1,e) * dzt(1,1)*dyt(j,j)
 
  592                d(i,j,lx,e) = d(i,j,lx,e) &
 
  593                     + g13(i,j,lx,e) * dzt(lx,lx)*dxt(i,i) &
 
  594                     + g23(i,j,lx,e) * dzt(lx,lx)*dyt(j,j)
 
 
  602       G12, G13, G23, dfrmd_el, n)
 
  603    integer, 
parameter :: lx = 10
 
  604    integer, 
intent(in) :: n
 
  605    real(kind=rp), 
intent(inout) :: d(lx, lx, lx, n)
 
  606    real(kind=rp), 
intent(in) :: g11(lx, lx, lx, n)
 
  607    real(kind=rp), 
intent(in) :: g22(lx, lx, lx, n)
 
  608    real(kind=rp), 
intent(in) :: g33(lx, lx, lx, n)
 
  609    real(kind=rp), 
intent(in) :: g12(lx, lx, lx, n)
 
  610    real(kind=rp), 
intent(in) :: g13(lx, lx, lx, n)
 
  611    real(kind=rp), 
intent(in) :: g23(lx, lx, lx, n)
 
  612    real(kind=rp), 
intent(in) :: dxt(lx, lx)
 
  613    real(kind=rp), 
intent(in) :: dyt(lx, lx)
 
  614    real(kind=rp), 
intent(in) :: dzt(lx, lx)
 
  615    logical, 
intent(in) :: dfrmd_el(n)
 
  616    integer :: i, j, k, l, e
 
  625                   d(i,j,k,e) = d(i,j,k,e) + &
 
  626                        g11(l,j,k,e) * dxt(i,l)**2
 
  635                   d(i,j,k,e) = d(i,j,k,e) + &
 
  636                        g22(i,l,k,e) * dyt(j,l)**2
 
  645                   d(i,j,k,e) = d(i,j,k,e) + &
 
  646                        g33(i,j,l,e) * dzt(k,l)**2
 
  652       if (dfrmd_el(e)) 
then 
  655                d(1,j,k,e) = d(1,j,k,e) &
 
  656                     + g12(1,j,k,e) * dxt(1,1)*dyt(j,j) &
 
  657                     + g13(1,j,k,e) * dxt(1,1)*dzt(k,k)
 
  658                d(lx,j,k,e) = d(lx,j,k,e) &
 
  659                     + g12(lx,j,k,e) * dxt(lx,lx)*dyt(j,j) &
 
  660                     + g13(lx,j,k,e) * dxt(lx,lx)*dzt(k,k)
 
  666                d(i,1,k,e) = d(i,1,k,e) &
 
  667                     + g12(i,1,k,e) * dyt(1,1)*dxt(i,i) &
 
  668                     + g23(i,1,k,e) * dyt(1,1)*dzt(k,k)
 
  669                d(i,lx,k,e) = d(i,lx,k,e) &
 
  670                     + g12(i,lx,k,e) * dyt(lx,lx)*dxt(i,i) &
 
  671                     + g23(i,lx,k,e) * dyt(lx,lx)*dzt(k,k)
 
  676                d(i,j,1,e) = d(i,j,1,e) &
 
  677                     + g13(i,j,1,e) * dzt(1,1)*dxt(i,i) &
 
  678                     + g23(i,j,1,e) * dzt(1,1)*dyt(j,j)
 
  679                d(i,j,lx,e) = d(i,j,lx,e) &
 
  680                     + g13(i,j,lx,e) * dzt(lx,lx)*dxt(i,i) &
 
  681                     + g23(i,j,lx,e) * dzt(lx,lx)*dyt(j,j)
 
 
  689       G12, G13, G23, dfrmd_el, n)
 
  690    integer, 
parameter :: lx = 9
 
  691    integer, 
intent(in) :: n
 
  692    real(kind=rp), 
intent(inout) :: d(lx, lx, lx, n)
 
  693    real(kind=rp), 
intent(in) :: g11(lx, lx, lx, n)
 
  694    real(kind=rp), 
intent(in) :: g22(lx, lx, lx, n)
 
  695    real(kind=rp), 
intent(in) :: g33(lx, lx, lx, n)
 
  696    real(kind=rp), 
intent(in) :: g12(lx, lx, lx, n)
 
  697    real(kind=rp), 
intent(in) :: g13(lx, lx, lx, n)
 
  698    real(kind=rp), 
intent(in) :: g23(lx, lx, lx, n)
 
  699    real(kind=rp), 
intent(in) :: dxt(lx, lx)
 
  700    real(kind=rp), 
intent(in) :: dyt(lx, lx)
 
  701    real(kind=rp), 
intent(in) :: dzt(lx, lx)
 
  702    logical, 
intent(in) :: dfrmd_el(n)
 
  703    integer :: i, j, k, l, e
 
  712                   d(i,j,k,e) = d(i,j,k,e) + &
 
  713                        g11(l,j,k,e) * dxt(i,l)**2
 
  722                   d(i,j,k,e) = d(i,j,k,e) + &
 
  723                        g22(i,l,k,e) * dyt(j,l)**2
 
  732                   d(i,j,k,e) = d(i,j,k,e) + &
 
  733                        g33(i,j,l,e) * dzt(k,l)**2
 
  739       if (dfrmd_el(e)) 
then 
  742                d(1,j,k,e) = d(1,j,k,e) &
 
  743                     + g12(1,j,k,e) * dxt(1,1)*dyt(j,j) &
 
  744                     + g13(1,j,k,e) * dxt(1,1)*dzt(k,k)
 
  745                d(lx,j,k,e) = d(lx,j,k,e) &
 
  746                     + g12(lx,j,k,e) * dxt(lx,lx)*dyt(j,j) &
 
  747                     + g13(lx,j,k,e) * dxt(lx,lx)*dzt(k,k)
 
  753                d(i,1,k,e) = d(i,1,k,e) &
 
  754                     + g12(i,1,k,e) * dyt(1,1)*dxt(i,i) &
 
  755                     + g23(i,1,k,e) * dyt(1,1)*dzt(k,k)
 
  756                d(i,lx,k,e) = d(i,lx,k,e) &
 
  757                     + g12(i,lx,k,e) * dyt(lx,lx)*dxt(i,i) &
 
  758                     + g23(i,lx,k,e) * dyt(lx,lx)*dzt(k,k)
 
  763                d(i,j,1,e) = d(i,j,1,e) &
 
  764                     + g13(i,j,1,e) * dzt(1,1)*dxt(i,i) &
 
  765                     + g23(i,j,1,e) * dzt(1,1)*dyt(j,j)
 
  766                d(i,j,lx,e) = d(i,j,lx,e) &
 
  767                     + g13(i,j,lx,e) * dzt(lx,lx)*dxt(i,i) &
 
  768                     + g23(i,j,lx,e) * dzt(lx,lx)*dyt(j,j)
 
 
  776       G12, G13, G23, dfrmd_el, n)
 
  777    integer, 
parameter :: lx = 8
 
  778    integer, 
intent(in) :: n
 
  779    real(kind=rp), 
intent(inout) :: d(lx, lx, lx, n)
 
  780    real(kind=rp), 
intent(in) :: g11(lx, lx, lx, n)
 
  781    real(kind=rp), 
intent(in) :: g22(lx, lx, lx, n)
 
  782    real(kind=rp), 
intent(in) :: g33(lx, lx, lx, n)
 
  783    real(kind=rp), 
intent(in) :: g12(lx, lx, lx, n)
 
  784    real(kind=rp), 
intent(in) :: g13(lx, lx, lx, n)
 
  785    real(kind=rp), 
intent(in) :: g23(lx, lx, lx, n)
 
  786    real(kind=rp), 
intent(in) :: dxt(lx, lx)
 
  787    real(kind=rp), 
intent(in) :: dyt(lx, lx)
 
  788    real(kind=rp), 
intent(in) :: dzt(lx, lx)
 
  789    logical, 
intent(in) :: dfrmd_el(n)
 
  790    integer :: i, j, k, l, e
 
  799                   d(i,j,k,e) = d(i,j,k,e) + &
 
  800                        g11(l,j,k,e) * dxt(i,l)**2
 
  809                   d(i,j,k,e) = d(i,j,k,e) + &
 
  810                        g22(i,l,k,e) * dyt(j,l)**2
 
  819                   d(i,j,k,e) = d(i,j,k,e) + &
 
  820                        g33(i,j,l,e) * dzt(k,l)**2
 
  826       if (dfrmd_el(e)) 
then 
  829                d(1,j,k,e) = d(1,j,k,e) &
 
  830                     + g12(1,j,k,e) * dxt(1,1)*dyt(j,j) &
 
  831                     + g13(1,j,k,e) * dxt(1,1)*dzt(k,k)
 
  832                d(lx,j,k,e) = d(lx,j,k,e) &
 
  833                     + g12(lx,j,k,e) * dxt(lx,lx)*dyt(j,j) &
 
  834                     + g13(lx,j,k,e) * dxt(lx,lx)*dzt(k,k)
 
  840                d(i,1,k,e) = d(i,1,k,e) &
 
  841                     + g12(i,1,k,e) * dyt(1,1)*dxt(i,i) &
 
  842                     + g23(i,1,k,e) * dyt(1,1)*dzt(k,k)
 
  843                d(i,lx,k,e) = d(i,lx,k,e) &
 
  844                     + g12(i,lx,k,e) * dyt(lx,lx)*dxt(i,i) &
 
  845                     + g23(i,lx,k,e) * dyt(lx,lx)*dzt(k,k)
 
  850                d(i,j,1,e) = d(i,j,1,e) &
 
  851                     + g13(i,j,1,e) * dzt(1,1)*dxt(i,i) &
 
  852                     + g23(i,j,1,e) * dzt(1,1)*dyt(j,j)
 
  853                d(i,j,lx,e) = d(i,j,lx,e) &
 
  854                     + g13(i,j,lx,e) * dzt(lx,lx)*dxt(i,i) &
 
  855                     + g23(i,j,lx,e) * dzt(lx,lx)*dyt(j,j)
 
 
  863       G12, G13, G23, dfrmd_el, n)
 
  864    integer, 
parameter :: lx = 7
 
  865    integer, 
intent(in) :: n
 
  866    real(kind=rp), 
intent(inout) :: d(lx, lx, lx, n)
 
  867    real(kind=rp), 
intent(in) :: g11(lx, lx, lx, n)
 
  868    real(kind=rp), 
intent(in) :: g22(lx, lx, lx, n)
 
  869    real(kind=rp), 
intent(in) :: g33(lx, lx, lx, n)
 
  870    real(kind=rp), 
intent(in) :: g12(lx, lx, lx, n)
 
  871    real(kind=rp), 
intent(in) :: g13(lx, lx, lx, n)
 
  872    real(kind=rp), 
intent(in) :: g23(lx, lx, lx, n)
 
  873    real(kind=rp), 
intent(in) :: dxt(lx, lx)
 
  874    real(kind=rp), 
intent(in) :: dyt(lx, lx)
 
  875    real(kind=rp), 
intent(in) :: dzt(lx, lx)
 
  876    logical, 
intent(in) :: dfrmd_el(n)
 
  877    integer :: i, j, k, l, e
 
  886                   d(i,j,k,e) = d(i,j,k,e) + &
 
  887                        g11(l,j,k,e) * dxt(i,l)**2
 
  896                   d(i,j,k,e) = d(i,j,k,e) + &
 
  897                        g22(i,l,k,e) * dyt(j,l)**2
 
  906                   d(i,j,k,e) = d(i,j,k,e) + &
 
  907                        g33(i,j,l,e) * dzt(k,l)**2
 
  913       if (dfrmd_el(e)) 
then 
  916                d(1,j,k,e) = d(1,j,k,e) &
 
  917                     + g12(1,j,k,e) * dxt(1,1)*dyt(j,j) &
 
  918                     + g13(1,j,k,e) * dxt(1,1)*dzt(k,k)
 
  919                d(lx,j,k,e) = d(lx,j,k,e) &
 
  920                     + g12(lx,j,k,e) * dxt(lx,lx)*dyt(j,j) &
 
  921                     + g13(lx,j,k,e) * dxt(lx,lx)*dzt(k,k)
 
  927                d(i,1,k,e) = d(i,1,k,e) &
 
  928                     + g12(i,1,k,e) * dyt(1,1)*dxt(i,i) &
 
  929                     + g23(i,1,k,e) * dyt(1,1)*dzt(k,k)
 
  930                d(i,lx,k,e) = d(i,lx,k,e) &
 
  931                     + g12(i,lx,k,e) * dyt(lx,lx)*dxt(i,i) &
 
  932                     + g23(i,lx,k,e) * dyt(lx,lx)*dzt(k,k)
 
  937                d(i,j,1,e) = d(i,j,1,e) &
 
  938                     + g13(i,j,1,e) * dzt(1,1)*dxt(i,i) &
 
  939                     + g23(i,j,1,e) * dzt(1,1)*dyt(j,j)
 
  940                d(i,j,lx,e) = d(i,j,lx,e) &
 
  941                     + g13(i,j,lx,e) * dzt(lx,lx)*dxt(i,i) &
 
  942                     + g23(i,j,lx,e) * dzt(lx,lx)*dyt(j,j)
 
 
  950       G12, G13, G23, dfrmd_el, n)
 
  951    integer, 
parameter :: lx = 6
 
  952    integer, 
intent(in) :: n
 
  953    real(kind=rp), 
intent(inout) :: d(lx, lx, lx, n)
 
  954    real(kind=rp), 
intent(in) :: g11(lx, lx, lx, n)
 
  955    real(kind=rp), 
intent(in) :: g22(lx, lx, lx, n)
 
  956    real(kind=rp), 
intent(in) :: g33(lx, lx, lx, n)
 
  957    real(kind=rp), 
intent(in) :: g12(lx, lx, lx, n)
 
  958    real(kind=rp), 
intent(in) :: g13(lx, lx, lx, n)
 
  959    real(kind=rp), 
intent(in) :: g23(lx, lx, lx, n)
 
  960    real(kind=rp), 
intent(in) :: dxt(lx, lx)
 
  961    real(kind=rp), 
intent(in) :: dyt(lx, lx)
 
  962    real(kind=rp), 
intent(in) :: dzt(lx, lx)
 
  963    logical, 
intent(in) :: dfrmd_el(n)
 
  964    integer :: i, j, k, l, e
 
  973                   d(i,j,k,e) = d(i,j,k,e) + &
 
  974                        g11(l,j,k,e) * dxt(i,l)**2
 
  983                   d(i,j,k,e) = d(i,j,k,e) + &
 
  984                        g22(i,l,k,e) * dyt(j,l)**2
 
  993                   d(i,j,k,e) = d(i,j,k,e) + &
 
  994                        g33(i,j,l,e) * dzt(k,l)**2
 
 1000       if (dfrmd_el(e)) 
then 
 1003                d(1,j,k,e) = d(1,j,k,e) &
 
 1004                     + g12(1,j,k,e) * dxt(1,1)*dyt(j,j) &
 
 1005                     + g13(1,j,k,e) * dxt(1,1)*dzt(k,k)
 
 1006                d(lx,j,k,e) = d(lx,j,k,e) &
 
 1007                     + g12(lx,j,k,e) * dxt(lx,lx)*dyt(j,j) &
 
 1008                     + g13(lx,j,k,e) * dxt(lx,lx)*dzt(k,k)
 
 1014                d(i,1,k,e) = d(i,1,k,e) &
 
 1015                     + g12(i,1,k,e) * dyt(1,1)*dxt(i,i) &
 
 1016                     + g23(i,1,k,e) * dyt(1,1)*dzt(k,k)
 
 1017                d(i,lx,k,e) = d(i,lx,k,e) &
 
 1018                     + g12(i,lx,k,e) * dyt(lx,lx)*dxt(i,i) &
 
 1019                     + g23(i,lx,k,e) * dyt(lx,lx)*dzt(k,k)
 
 1024                d(i,j,1,e) = d(i,j,1,e) &
 
 1025                     + g13(i,j,1,e) * dzt(1,1)*dxt(i,i) &
 
 1026                     + g23(i,j,1,e) * dzt(1,1)*dyt(j,j)
 
 1027                d(i,j,lx,e) = d(i,j,lx,e) &
 
 1028                     + g13(i,j,lx,e) * dzt(lx,lx)*dxt(i,i) &
 
 1029                     + g23(i,j,lx,e) * dzt(lx,lx)*dyt(j,j)
 
 
 1037       G12, G13, G23, dfrmd_el, n)
 
 1038    integer, 
parameter :: lx = 5
 
 1039    integer, 
intent(in) :: n
 
 1040    real(kind=rp), 
intent(inout) :: d(lx, lx, lx, n)
 
 1041    real(kind=rp), 
intent(in) :: g11(lx, lx, lx, n)
 
 1042    real(kind=rp), 
intent(in) :: g22(lx, lx, lx, n)
 
 1043    real(kind=rp), 
intent(in) :: g33(lx, lx, lx, n)
 
 1044    real(kind=rp), 
intent(in) :: g12(lx, lx, lx, n)
 
 1045    real(kind=rp), 
intent(in) :: g13(lx, lx, lx, n)
 
 1046    real(kind=rp), 
intent(in) :: g23(lx, lx, lx, n)
 
 1047    real(kind=rp), 
intent(in) :: dxt(lx, lx)
 
 1048    real(kind=rp), 
intent(in) :: dyt(lx, lx)
 
 1049    real(kind=rp), 
intent(in) :: dzt(lx, lx)
 
 1050    logical, 
intent(in) :: dfrmd_el(n)
 
 1051    integer :: i, j, k, l, e
 
 1060                   d(i,j,k,e) = d(i,j,k,e) + &
 
 1061                        g11(l,j,k,e) * dxt(i,l)**2
 
 1070                   d(i,j,k,e) = d(i,j,k,e) + &
 
 1071                        g22(i,l,k,e) * dyt(j,l)**2
 
 1080                   d(i,j,k,e) = d(i,j,k,e) + &
 
 1081                        g33(i,j,l,e) * dzt(k,l)**2
 
 1087       if (dfrmd_el(e)) 
then 
 1090                d(1,j,k,e) = d(1,j,k,e) &
 
 1091                     + g12(1,j,k,e) * dxt(1,1)*dyt(j,j) &
 
 1092                     + g13(1,j,k,e) * dxt(1,1)*dzt(k,k)
 
 1093                d(lx,j,k,e) = d(lx,j,k,e) &
 
 1094                     + g12(lx,j,k,e) * dxt(lx,lx)*dyt(j,j) &
 
 1095                     + g13(lx,j,k,e) * dxt(lx,lx)*dzt(k,k)
 
 1101                d(i,1,k,e) = d(i,1,k,e) &
 
 1102                     + g12(i,1,k,e) * dyt(1,1)*dxt(i,i) &
 
 1103                     + g23(i,1,k,e) * dyt(1,1)*dzt(k,k)
 
 1104                d(i,lx,k,e) = d(i,lx,k,e) &
 
 1105                     + g12(i,lx,k,e) * dyt(lx,lx)*dxt(i,i) &
 
 1106                     + g23(i,lx,k,e) * dyt(lx,lx)*dzt(k,k)
 
 1111                d(i,j,1,e) = d(i,j,1,e) &
 
 1112                     + g13(i,j,1,e) * dzt(1,1)*dxt(i,i) &
 
 1113                     + g23(i,j,1,e) * dzt(1,1)*dyt(j,j)
 
 1114                d(i,j,lx,e) = d(i,j,lx,e) &
 
 1115                     + g13(i,j,lx,e) * dzt(lx,lx)*dxt(i,i) &
 
 1116                     + g23(i,j,lx,e) * dzt(lx,lx)*dyt(j,j)
 
 
 1124       G12, G13, G23, dfrmd_el, n)
 
 1125    integer, 
parameter :: lx = 4
 
 1126    integer, 
intent(in) :: n
 
 1127    real(kind=rp), 
intent(inout) :: d(lx, lx, lx, n)
 
 1128    real(kind=rp), 
intent(in) :: g11(lx, lx, lx, n)
 
 1129    real(kind=rp), 
intent(in) :: g22(lx, lx, lx, n)
 
 1130    real(kind=rp), 
intent(in) :: g33(lx, lx, lx, n)
 
 1131    real(kind=rp), 
intent(in) :: g12(lx, lx, lx, n)
 
 1132    real(kind=rp), 
intent(in) :: g13(lx, lx, lx, n)
 
 1133    real(kind=rp), 
intent(in) :: g23(lx, lx, lx, n)
 
 1134    real(kind=rp), 
intent(in) :: dxt(lx, lx)
 
 1135    real(kind=rp), 
intent(in) :: dyt(lx, lx)
 
 1136    real(kind=rp), 
intent(in) :: dzt(lx, lx)
 
 1137    logical, 
intent(in) :: dfrmd_el(n)
 
 1138    integer :: i, j, k, l, e
 
 1147                   d(i,j,k,e) = d(i,j,k,e) + &
 
 1148                        g11(l,j,k,e) * dxt(i,l)**2
 
 1157                   d(i,j,k,e) = d(i,j,k,e) + &
 
 1158                        g22(i,l,k,e) * dyt(j,l)**2
 
 1167                   d(i,j,k,e) = d(i,j,k,e) + &
 
 1168                        g33(i,j,l,e) * dzt(k,l)**2
 
 1174       if (dfrmd_el(e)) 
then 
 1177                d(1,j,k,e) = d(1,j,k,e) &
 
 1178                     + g12(1,j,k,e) * dxt(1,1)*dyt(j,j) &
 
 1179                     + g13(1,j,k,e) * dxt(1,1)*dzt(k,k)
 
 1180                d(lx,j,k,e) = d(lx,j,k,e) &
 
 1181                     + g12(lx,j,k,e) * dxt(lx,lx)*dyt(j,j) &
 
 1182                     + g13(lx,j,k,e) * dxt(lx,lx)*dzt(k,k)
 
 1188                d(i,1,k,e) = d(i,1,k,e) &
 
 1189                     + g12(i,1,k,e) * dyt(1,1)*dxt(i,i) &
 
 1190                     + g23(i,1,k,e) * dyt(1,1)*dzt(k,k)
 
 1191                d(i,lx,k,e) = d(i,lx,k,e) &
 
 1192                     + g12(i,lx,k,e) * dyt(lx,lx)*dxt(i,i) &
 
 1193                     + g23(i,lx,k,e) * dyt(lx,lx)*dzt(k,k)
 
 1198                d(i,j,1,e) = d(i,j,1,e) &
 
 1199                     + g13(i,j,1,e) * dzt(1,1)*dxt(i,i) &
 
 1200                     + g23(i,j,1,e) * dzt(1,1)*dyt(j,j)
 
 1201                d(i,j,lx,e) = d(i,j,lx,e) &
 
 1202                     + g13(i,j,lx,e) * dzt(lx,lx)*dxt(i,i) &
 
 1203                     + g23(i,j,lx,e) * dzt(lx,lx)*dyt(j,j)
 
 
 1211       G12, G13, G23, dfrmd_el, n)
 
 1212    integer, 
parameter :: lx = 3
 
 1213    integer, 
intent(in) :: n
 
 1214    real(kind=rp), 
intent(inout) :: d(lx, lx, lx, n)
 
 1215    real(kind=rp), 
intent(in) :: g11(lx, lx, lx, n)
 
 1216    real(kind=rp), 
intent(in) :: g22(lx, lx, lx, n)
 
 1217    real(kind=rp), 
intent(in) :: g33(lx, lx, lx, n)
 
 1218    real(kind=rp), 
intent(in) :: g12(lx, lx, lx, n)
 
 1219    real(kind=rp), 
intent(in) :: g13(lx, lx, lx, n)
 
 1220    real(kind=rp), 
intent(in) :: g23(lx, lx, lx, n)
 
 1221    real(kind=rp), 
intent(in) :: dxt(lx, lx)
 
 1222    real(kind=rp), 
intent(in) :: dyt(lx, lx)
 
 1223    real(kind=rp), 
intent(in) :: dzt(lx, lx)
 
 1224    logical, 
intent(in) :: dfrmd_el(n)
 
 1225    integer :: i, j, k, l, e
 
 1234                   d(i,j,k,e) = d(i,j,k,e) + &
 
 1235                        g11(l,j,k,e) * dxt(i,l)**2
 
 1244                   d(i,j,k,e) = d(i,j,k,e) + &
 
 1245                        g22(i,l,k,e) * dyt(j,l)**2
 
 1254                   d(i,j,k,e) = d(i,j,k,e) + &
 
 1255                        g33(i,j,l,e) * dzt(k,l)**2
 
 1261       if (dfrmd_el(e)) 
then 
 1264                d(1,j,k,e) = d(1,j,k,e) &
 
 1265                     + g12(1,j,k,e) * dxt(1,1)*dyt(j,j) &
 
 1266                     + g13(1,j,k,e) * dxt(1,1)*dzt(k,k)
 
 1267                d(lx,j,k,e) = d(lx,j,k,e) &
 
 1268                     + g12(lx,j,k,e) * dxt(lx,lx)*dyt(j,j) &
 
 1269                     + g13(lx,j,k,e) * dxt(lx,lx)*dzt(k,k)
 
 1275                d(i,1,k,e) = d(i,1,k,e) &
 
 1276                     + g12(i,1,k,e) * dyt(1,1)*dxt(i,i) &
 
 1277                     + g23(i,1,k,e) * dyt(1,1)*dzt(k,k)
 
 1278                d(i,lx,k,e) = d(i,lx,k,e) &
 
 1279                     + g12(i,lx,k,e) * dyt(lx,lx)*dxt(i,i) &
 
 1280                     + g23(i,lx,k,e) * dyt(lx,lx)*dzt(k,k)
 
 1285                d(i,j,1,e) = d(i,j,1,e) &
 
 1286                     + g13(i,j,1,e) * dzt(1,1)*dxt(i,i) &
 
 1287                     + g23(i,j,1,e) * dzt(1,1)*dyt(j,j)
 
 1288                d(i,j,lx,e) = d(i,j,lx,e) &
 
 1289                     + g13(i,j,lx,e) * dzt(lx,lx)*dxt(i,i) &
 
 1290                     + g23(i,j,lx,e) * dzt(lx,lx)*dyt(j,j)
 
 
 1298       G12, G13, G23, dfrmd_el, n)
 
 1299    integer, 
parameter :: lx = 2
 
 1300    integer, 
intent(in) :: n
 
 1301    real(kind=rp), 
intent(inout) :: d(lx, lx, lx, n)
 
 1302    real(kind=rp), 
intent(in) :: g11(lx, lx, lx, n)
 
 1303    real(kind=rp), 
intent(in) :: g22(lx, lx, lx, n)
 
 1304    real(kind=rp), 
intent(in) :: g33(lx, lx, lx, n)
 
 1305    real(kind=rp), 
intent(in) :: g12(lx, lx, lx, n)
 
 1306    real(kind=rp), 
intent(in) :: g13(lx, lx, lx, n)
 
 1307    real(kind=rp), 
intent(in) :: g23(lx, lx, lx, n)
 
 1308    real(kind=rp), 
intent(in) :: dxt(lx, lx)
 
 1309    real(kind=rp), 
intent(in) :: dyt(lx, lx)
 
 1310    real(kind=rp), 
intent(in) :: dzt(lx, lx)
 
 1311    logical, 
intent(in) :: dfrmd_el(n)
 
 1312    integer :: i, j, k, l, e
 
 1321                   d(i,j,k,e) = d(i,j,k,e) + &
 
 1322                        g11(l,j,k,e) * dxt(i,l)**2
 
 1331                   d(i,j,k,e) = d(i,j,k,e) + &
 
 1332                        g22(i,l,k,e) * dyt(j,l)**2
 
 1341                   d(i,j,k,e) = d(i,j,k,e) + &
 
 1342                        g33(i,j,l,e) * dzt(k,l)**2
 
 1348       if (dfrmd_el(e)) 
then 
 1351                d(1,j,k,e) = d(1,j,k,e) &
 
 1352                     + g12(1,j,k,e) * dxt(1,1)*dyt(j,j) &
 
 1353                     + g13(1,j,k,e) * dxt(1,1)*dzt(k,k)
 
 1354                d(lx,j,k,e) = d(lx,j,k,e) &
 
 1355                     + g12(lx,j,k,e) * dxt(lx,lx)*dyt(j,j) &
 
 1356                     + g13(lx,j,k,e) * dxt(lx,lx)*dzt(k,k)
 
 1362                d(i,1,k,e) = d(i,1,k,e) &
 
 1363                     + g12(i,1,k,e) * dyt(1,1)*dxt(i,i) &
 
 1364                     + g23(i,1,k,e) * dyt(1,1)*dzt(k,k)
 
 1365                d(i,lx,k,e) = d(i,lx,k,e) &
 
 1366                     + g12(i,lx,k,e) * dyt(lx,lx)*dxt(i,i) &
 
 1367                     + g23(i,lx,k,e) * dyt(lx,lx)*dzt(k,k)
 
 1372                d(i,j,1,e) = d(i,j,1,e) &
 
 1373                     + g13(i,j,1,e) * dzt(1,1)*dxt(i,i) &
 
 1374                     + g23(i,j,1,e) * dzt(1,1)*dyt(j,j)
 
 1375                d(i,j,lx,e) = d(i,j,lx,e) &
 
 1376                     + g13(i,j,lx,e) * dzt(lx,lx)*dxt(i,i) &
 
 1377                     + g23(i,j,lx,e) * dzt(lx,lx)*dyt(j,j)
 
 
__device__ T solve(const T u, const T y, const T guess, const T nu, const T kappa, const T B)
 
Defines a mapping of the degrees of freedom.
 
subroutine jacobi_update_lx8(d, dxt, dyt, dzt, g11, g22, g33, g12, g13, g23, dfrmd_el, n)
 
subroutine jacobi_solve(this, z, r, n)
The jacobi preconditioner   where .
 
subroutine jacobi_update(this)
Update Jacobi preconditioner if the geometry G has changed.
 
subroutine jacobi_update_lx7(d, dxt, dyt, dzt, g11, g22, g33, g12, g13, g23, dfrmd_el, n)
 
subroutine jacobi_update_lx11(d, dxt, dyt, dzt, g11, g22, g33, g12, g13, g23, dfrmd_el, n)
 
subroutine jacobi_update_lx10(d, dxt, dyt, dzt, g11, g22, g33, g12, g13, g23, dfrmd_el, n)
 
subroutine jacobi_init(this, coef, dof, gs_h)
 
subroutine jacobi_free(this)
 
subroutine jacobi_update_lx(d, dxt, dyt, dzt, g11, g22, g33, g12, g13, g23, dfrmd_el, n, lx)
Generic CPU kernel for updating the Jacobi preconditioner.
 
subroutine jacobi_update_lx13(d, dxt, dyt, dzt, g11, g22, g33, g12, g13, g23, dfrmd_el, n)
 
subroutine jacobi_update_lx12(d, dxt, dyt, dzt, g11, g22, g33, g12, g13, g23, dfrmd_el, n)
 
subroutine jacobi_update_lx5(d, dxt, dyt, dzt, g11, g22, g33, g12, g13, g23, dfrmd_el, n)
 
subroutine jacobi_update_lx9(d, dxt, dyt, dzt, g11, g22, g33, g12, g13, g23, dfrmd_el, n)
 
subroutine jacobi_update_lx14(d, dxt, dyt, dzt, g11, g22, g33, g12, g13, g23, dfrmd_el, n)
 
subroutine jacobi_update_lx4(d, dxt, dyt, dzt, g11, g22, g33, g12, g13, g23, dfrmd_el, n)
 
subroutine jacobi_update_lx3(d, dxt, dyt, dzt, g11, g22, g33, g12, g13, g23, dfrmd_el, n)
 
subroutine jacobi_update_lx6(d, dxt, dyt, dzt, g11, g22, g33, g12, g13, g23, dfrmd_el, n)
 
subroutine jacobi_update_lx2(d, dxt, dyt, dzt, g11, g22, g33, g12, g13, g23, dfrmd_el, n)
 
subroutine, public addcol3(a, b, c, n)
Returns .
 
subroutine, public invcol1(a, n)
Invert a vector .
 
subroutine, public col2(a, b, n)
Vector multiplication .
 
subroutine, public col3(a, b, c, n)
Vector multiplication with 3 vectors .
 
integer, parameter, public rp
Global precision used in computations.
 
Coefficients defined on a given (mesh, ) tuple. Arrays use indices (i,j,k,e): element e,...
 
Defines a jacobi preconditioner.
 
Defines a canonical Krylov preconditioner.