Neko  0.9.0
A portable framework for high-order spectral element flow simulations
tensor Module Reference

Tensor operations.

Data Types

interface  transpose
 
interface  triple_tensor_product
 

Functions/Subroutines

subroutine, public tensr3 (v, nv, u, nu, A, Bt, Ct, w)
 Tensor product \( v =(C \otimes B \otimes A) u \). More...
 
subroutine, public trsp (a, lda, b, ldb)
 Transpose of a rectangular tensor \( A = B^T \). More...
 
subroutine, public trsp1 (a, n)
 In-place transpose of a square tensor. More...
 
subroutine, public tnsr2d_el (v, nv, u, nu, A, Bt)
 Computes \( v = A u B^T \). More...
 
subroutine, public tnsr3d_el (v, nv, u, nu, A, Bt, Ct)
 Tensor product \( v =(C \otimes B \otimes A) u \) performed on a single element. More...
 
subroutine, public tnsr3d_el_list (v, nv, u, nu, A, Bt, Ct, el_list, n_pt)
 Tensor product \( v =(C \otimes B \otimes A) u \) performed on a subset of the elements. More...
 
subroutine, public tnsr3d (v, nv, u, nu, A, Bt, Ct, nelv)
 Tensor product \( v =(C \otimes B \otimes A) u \) performed on nelv elements. More...
 
subroutine, public tnsr1_3d (v, nv, nu, A, Bt, Ct, nelv)
 In place tensor product \( v =(C \otimes B \otimes A) v \). More...
 
subroutine, public addtnsr (s, h1, h2, h3, nx, ny, nz)
 Maps and adds to S a tensor product form of the three functions H1,H2,H3. This is a single element routine used for deforming geometry. More...
 
subroutine triple_tensor_product_scalar (v, u, nu, Hr, Hs, Ht)
 Computes the tensor product \( v =(H_t \otimes H_s \otimes H_r) u \). This operation is usually performed for spectral interpolation of a scalar field as defined by. More...
 
subroutine triple_tensor_product_vector (v, u1, u2, u3, nu, Hr, Hs, Ht)
 Computes the tensor product on a vector field \( \mathbf{v} =(H_t \otimes H_s \otimes H_r) \mathbf{u} \). This operation is usually performed for spectral interpolation on a 3D vector field \( \mathbf{u} = (u_1,u_2,u_3) \) as defined by. More...
 

Function/Subroutine Documentation

◆ addtnsr()

subroutine, public tensor::addtnsr ( real(kind=rp), dimension(nx, ny, nz), intent(inout)  s,
real(kind=rp), dimension(nx), intent(in)  h1,
real(kind=rp), dimension(ny), intent(in)  h2,
real(kind=rp), dimension(nz), intent(in)  h3,
integer, intent(in)  nx,
integer, intent(in)  ny,
integer, intent(in)  nz 
)

Definition at line 264 of file tensor.f90.

Here is the caller graph for this function:

◆ tensr3()

subroutine, public tensor::tensr3 ( real(kind=rp), dimension(nv, nv, nv), intent(inout)  v,
integer  nv,
real(kind=rp), dimension(nu, nu, nu), intent(inout)  u,
integer  nu,
real(kind=rp), dimension(nv, nu), intent(inout)  A,
real(kind=rp), dimension(nu, nv), intent(inout)  Bt,
real(kind=rp), dimension(nu, nv), intent(inout)  Ct,
real(kind=rp), dimension(nu*nu*nv), intent(inout)  w 
)
Todo:
Add 2d case

Definition at line 90 of file tensor.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ tnsr1_3d()

subroutine, public tensor::tnsr1_3d ( real(kind=rp), dimension(nv*nv*nv*nelv), intent(inout)  v,
integer, intent(inout)  nv,
integer, intent(inout)  nu,
real(kind=rp), dimension(nv,nu), intent(inout)  A,
real(kind=rp), dimension(nu, nv), intent(inout)  Bt,
real(kind=rp), dimension(nu,nv), intent(inout)  Ct,
integer, intent(inout)  nelv 
)

Definition at line 247 of file tensor.f90.

Here is the call graph for this function:

◆ tnsr2d_el()

subroutine, public tensor::tnsr2d_el ( real(kind=rp), dimension(nv*nv), intent(inout)  v,
integer, intent(in)  nv,
real(kind=rp), dimension(nu*nu), intent(inout)  u,
integer, intent(in)  nu,
real(kind=rp), dimension(nv,nu), intent(inout)  A,
real(kind=rp), dimension(nu,nv), intent(inout)  Bt 
)

Definition at line 153 of file tensor.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ tnsr3d()

subroutine, public tensor::tnsr3d ( real(kind=rp), dimension(nv*nv*nv,nelv), intent(inout)  v,
integer, intent(inout)  nv,
real(kind=rp), dimension(nu*nu*nu,nelv), intent(inout)  u,
integer, intent(inout)  nu,
real(kind=rp), dimension(nv,nu), intent(inout)  A,
real(kind=rp), dimension(nu, nv), intent(inout)  Bt,
real(kind=rp), dimension(nu,nv), intent(inout)  Ct,
integer, intent(inout)  nelv 
)

Definition at line 222 of file tensor.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ tnsr3d_el()

subroutine, public tensor::tnsr3d_el ( real(kind=rp), dimension(nv*nv*nv), intent(inout)  v,
integer, intent(in)  nv,
real(kind=rp), dimension(nu*nu*nu), intent(inout)  u,
integer, intent(in)  nu,
real(kind=rp), dimension(nv,nu), intent(inout)  A,
real(kind=rp), dimension(nu, nv), intent(inout)  Bt,
real(kind=rp), dimension(nu,nv), intent(inout)  Ct 
)

Definition at line 170 of file tensor.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ tnsr3d_el_list()

subroutine, public tensor::tnsr3d_el_list ( real(kind=rp), dimension(nv*nv*nv, n_pt), intent(inout)  v,
integer, intent(in)  nv,
real(kind=rp), dimension(nu*nu*nu,1), intent(inout)  u,
integer, intent(in)  nu,
real(kind=rp), dimension(nv,nu,n_pt), intent(inout)  A,
real(kind=rp), dimension(nu, nv,n_pt), intent(inout)  Bt,
real(kind=rp), dimension(nu,nv,n_pt), intent(inout)  Ct,
integer, dimension(n_pt), intent(in)  el_list,
integer, intent(in)  n_pt 
)

Definition at line 187 of file tensor.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ triple_tensor_product_scalar()

subroutine tensor::triple_tensor_product_scalar ( real(kind=rp), intent(inout)  v,
real(kind=rp), dimension(nu,nu,nu), intent(inout)  u,
integer, intent(in)  nu,
real(kind=rp), dimension(nu), intent(inout)  Hr,
real(kind=rp), dimension(nu), intent(inout)  Hs,
real(kind=rp), dimension(nu), intent(inout)  Ht 
)
private

\begin{eqnarray*} v(r,s,t) = \sum_{i=0}^{N}{\sum_{j=0}^{N}{ \sum_{k=0}^{N}{u_{ijk}h_i(r)h_j(s)h_k(t)}}} \end{eqnarray*}

Parameters
vInterpolated value (scalar).
uField values at the GLL points (e.g. velocity in x-direction).
nuSize of the interpolation weights (usually lx).
HrInterpolation weights in the r-direction.
HsInterpolation weights in the s-direction.
HtInterpolation weights in the t-direction.

Definition at line 297 of file tensor.f90.

Here is the caller graph for this function:

◆ triple_tensor_product_vector()

subroutine tensor::triple_tensor_product_vector ( real(kind=rp), dimension(3), intent(inout)  v,
real(kind=rp), dimension(nu,nu,nu), intent(inout)  u1,
real(kind=rp), dimension(nu,nu,nu), intent(inout)  u2,
real(kind=rp), dimension(nu,nu,nu), intent(inout)  u3,
integer, intent(in)  nu,
real(kind=rp), dimension(nu), intent(inout)  Hr,
real(kind=rp), dimension(nu), intent(inout)  Hs,
real(kind=rp), dimension(nu), intent(inout)  Ht 
)
private

\begin{eqnarray*} \mathbf{v}(r,s,t) = \sum_{i=0}^{N}{\sum_{j=0}^{N}{ \sum_{k=0}^{N}{\mathbf{u}_{ijk}h_i(r)h_j(s)h_k(t)}}} \end{eqnarray*}

Parameters
vInterpolated value (scalar).
u13D-array containing values at the GLL points (e.g. velocity).
u23D-array containing values at the GLL points (e.g. velocity).
u33D-array containing values at the GLL points (e.g. velocity).
nuSize of the interpolation weights (usually lx).
HrInterpolation weights in the r-direction.
HsInterpolation weights in the s-direction.
HtInterpolation weights in the t-direction.

Definition at line 333 of file tensor.f90.

◆ trsp()

subroutine, public tensor::trsp ( real(kind=rp), dimension(lda, ldb), intent(inout)  a,
integer, intent(in)  lda,
real(kind=rp), dimension(ldb, lda), intent(in)  b,
integer, intent(in)  ldb 
)

Definition at line 120 of file tensor.f90.

Here is the caller graph for this function:

◆ trsp1()

subroutine, public tensor::trsp1 ( real(kind=rp), dimension(n, n), intent(inout)  a,
integer, intent(in)  n 
)

Definition at line 136 of file tensor.f90.

Here is the caller graph for this function: