MFEM  v4.3.0 Finite element discretization library
mfem::kernels Namespace Reference

## Classes

class  InvariantsEvaluator2D

class  InvariantsEvaluator3D

## Functions

template<int dim>
MFEM_HOST_DEVICE double DistanceSquared (const double *x, const double *y)
Compute the square of the Euclidean distance to another vector. More...

template<int dim>
MFEM_HOST_DEVICE void Diag (const double c, double *data)
Creates n x n diagonal matrix with diagonal elements c. More...

template<int dim>
MFEM_HOST_DEVICE void Subtract (const double a, const double *x, const double *y, double *z)
Vector subtraction operation: z = a * (x - y) More...

template<int dim>
MFEM_HOST_DEVICE void AddMultVWt (const double *v, const double *w, double *VWt)
Dense matrix operation: VWt += v w^t. More...

template<int H, int W, typename T >
MFEM_HOST_DEVICE void FNorm (double &scale_factor, double &scaled_fnorm2, const T *data)

template<int H, int W, typename T >
MFEM_HOST_DEVICE double FNorm (const T *data)
Compute the Frobenius norm of the matrix. More...

template<int H, int W, typename T >
MFEM_HOST_DEVICE double FNorm2 (const T *data)
Compute the square of the Frobenius norm of the matrix. More...

template<typename T >
MFEM_HOST_DEVICE double Norml2 (const int size, const T *data)
Returns the l2 norm of the Vector with given size and data. More...

template<typename TA , typename TX , typename TY >
MFEM_HOST_DEVICE void Mult (const int height, const int width, TA *data, const TX *x, TY *y)
Matrix vector multiplication: y = A x, where the matrix A is of size height x width with given data, while x and y specify the data of the input and output vectors. More...

template<typename T >
MFEM_HOST_DEVICE void Symmetrize (const int size, T *data)
Symmetrize a square matrix with given size and data: A -> (A+A^T)/2. More...

template<int dim, typename T >
MFEM_HOST_DEVICE T Det (const T *data)
Compute the determinant of a square matrix of size dim with given data. More...

template<int dim, typename T >
MFEM_HOST_DEVICE void CalcInverse (const T *data, T *inv_data)
Return the inverse of a matrix with given size and data into the matrix with data inv_data. More...

template<int dim, typename T >
Return the adjugate of a matrix. More...

template<typename TALPHA , typename TA , typename TB , typename TC >
MFEM_HOST_DEVICE void Add (const int height, const int width, const TALPHA alpha, const TA *Adata, const TB *Bdata, TC *Cdata)
Compute C = A + alpha*B, where the matrices A, B and C are of size height x width with data Adata, Bdata and Cdata. More...

template<typename TALPHA , typename TBETA , typename TA , typename TB , typename TC >
MFEM_HOST_DEVICE void Add (const int height, const int width, const TALPHA alpha, const TA *Adata, const TBETA beta, const TB *Bdata, TC *Cdata)
Compute C = alpha*A + beta*B, where the matrices A, B and C are of size height x width with data Adata, Bdata and Cdata. More...

template<typename TA , typename TB >
MFEM_HOST_DEVICE void Add (const int height, const int width, const TA *Adata, TB *Bdata)
Compute B += A, where the matrices A and B are of size height x width with data Adata and Bdata. More...

template<typename TA , typename TB >
MFEM_HOST_DEVICE void Add (const int height, const int width, const double alpha, const TA *Adata, TB *Bdata)
Compute B +=alpha*A, where the matrices A and B are of size height x width with data Adata and Bdata. More...

template<typename TA , typename TB >
MFEM_HOST_DEVICE void Set (const int height, const int width, const double alpha, const TA *Adata, TB *Bdata)
Compute B = alpha*A, where the matrices A and B are of size height x width with data Adata and Bdata. More...

template<typename TA , typename TB , typename TC >
MFEM_HOST_DEVICE void Mult (const int Aheight, const int Awidth, const int Bwidth, const TB *Bdata, const TC *Cdata, TA *Adata)
Matrix-matrix multiplication: A = B * C, where the matrices A, B and C are of sizes Aheight x Awidth, Aheight x Bwidth and Bwidth x Awidth, respectively. More...

template<typename TA , typename TB , typename TC >
MFEM_HOST_DEVICE void MultABt (const int Aheight, const int Awidth, const int Bheight, const TA *Adata, const TB *Bdata, TC *ABtdata)
Multiply a matrix of size Aheight x Awidth and data Adata with the transpose of a matrix of size Bheight x Awidth and data Bdata: A * Bt. Return the result in a matrix with data ABtdata. More...

template<int dim>
MFEM_HOST_DEVICE void CalcEigenvalues (const double *data, double *lambda, double *vec)

template<int dim>
MFEM_HOST_DEVICE double CalcSingularvalue (const double *data, const int i)
Return the i'th singular value of the matrix of size dim with given data. More...

template<>
MFEM_HOST_DEVICE void CalcEigenvalues< 2 > (const double *data, double *lambda, double *vec)

template<>
MFEM_HOST_DEVICE void CalcEigenvalues< 3 > (const double *data, double *lambda, double *vec)

template<>
MFEM_HOST_DEVICE double CalcSingularvalue< 2 > (const double *data, const int i)
Return the i'th singular value of the matrix of size 2 with given data. More...

template<>
MFEM_HOST_DEVICE double CalcSingularvalue< 3 > (const double *data, const int i)
Return the i'th singular value of the matrix of size 3 with given data. More...

MFEM_HOST_DEVICE void LUSolve (const double *data, const int m, const int *ipiv, double *x)
Assuming L.U = P.A for a factored matrix (m x m),. More...

## Function Documentation

template<typename TALPHA , typename TA , typename TB , typename TC >
 MFEM_HOST_DEVICE void mfem::kernels::Add ( const int height, const int width, const TALPHA alpha, const TA * Adata, const TB * Bdata, TC * Cdata )
inline

Compute C = A + alpha*B, where the matrices A, B and C are of size height x width with data Adata, Bdata and Cdata.

Definition at line 237 of file kernels.hpp.

template<typename TALPHA , typename TBETA , typename TA , typename TB , typename TC >
 MFEM_HOST_DEVICE void mfem::kernels::Add ( const int height, const int width, const TALPHA alpha, const TA * Adata, const TBETA beta, const TB * Bdata, TC * Cdata )
inline

Compute C = alpha*A + beta*B, where the matrices A, B and C are of size height x width with data Adata, Bdata and Cdata.

Definition at line 254 of file kernels.hpp.

template<typename TA , typename TB >
 MFEM_HOST_DEVICE void mfem::kernels::Add ( const int height, const int width, const TA * Adata, TB * Bdata )
inline

Compute B += A, where the matrices A and B are of size height x width with data Adata and Bdata.

Definition at line 270 of file kernels.hpp.

template<typename TA , typename TB >
 MFEM_HOST_DEVICE void mfem::kernels::Add ( const int height, const int width, const double alpha, const TA * Adata, TB * Bdata )
inline

Compute B +=alpha*A, where the matrices A and B are of size height x width with data Adata and Bdata.

Definition at line 283 of file kernels.hpp.

template<int dim>
 MFEM_HOST_DEVICE void mfem::kernels::AddMultVWt ( const double * v, const double * w, double * VWt )
inline

Dense matrix operation: VWt += v w^t.

Definition at line 67 of file kernels.hpp.

template<int dim, typename T >
 MFEM_HOST_DEVICE void mfem::kernels::CalcAdjugate ( const T * data, T * adj_data )
inline

Return the adjugate of a matrix.

Definition at line 227 of file kernels.hpp.

template<int dim>
 MFEM_HOST_DEVICE void mfem::kernels::CalcEigenvalues ( const double * data, double * lambda, double * vec )

Compute the spectrum of the matrix of size dim with given data, returning the eigenvalues in the array lambda and the eigenvectors in the array vec (listed consecutively).

template<>
 MFEM_HOST_DEVICE void mfem::kernels::CalcEigenvalues< 2 > ( const double * data, double * lambda, double * vec )
inline

Compute the spectrum of the matrix of size 2 with given data, returning the eigenvalues in the array lambda and the eigenvectors in the array vec (listed consecutively).

Definition at line 1019 of file kernels.hpp.

template<>
 MFEM_HOST_DEVICE void mfem::kernels::CalcEigenvalues< 3 > ( const double * data, double * lambda, double * vec )
inline

Compute the spectrum of the matrix of size 3 with given data, returning the eigenvalues in the array lambda and the eigenvectors in the array vec (listed consecutively).

Definition at line 1050 of file kernels.hpp.

template<int dim, typename T >
 MFEM_HOST_DEVICE void mfem::kernels::CalcInverse ( const T * data, T * inv_data )
inline

Return the inverse of a matrix with given size and data into the matrix with data inv_data.

Definition at line 217 of file kernels.hpp.

template<int dim>
 MFEM_HOST_DEVICE double mfem::kernels::CalcSingularvalue ( const double * data, const int i )

Return the i'th singular value of the matrix of size dim with given data.

template<>
 MFEM_HOST_DEVICE double mfem::kernels::CalcSingularvalue< 2 > ( const double * data, const int i )
inline

Return the i'th singular value of the matrix of size 2 with given data.

Definition at line 1252 of file kernels.hpp.

template<>
 MFEM_HOST_DEVICE double mfem::kernels::CalcSingularvalue< 3 > ( const double * data, const int i )
inline

Return the i'th singular value of the matrix of size 3 with given data.

Definition at line 1300 of file kernels.hpp.

template<int dim, typename T >
 MFEM_HOST_DEVICE T mfem::kernels::Det ( const T * data )
inline

Compute the determinant of a square matrix of size dim with given data.

Definition at line 208 of file kernels.hpp.

template<int dim>
 MFEM_HOST_DEVICE void mfem::kernels::Diag ( const double c, double * data )
inline

Creates n x n diagonal matrix with diagonal elements c.

Definition at line 49 of file kernels.hpp.

template<int dim>
 MFEM_HOST_DEVICE double mfem::kernels::DistanceSquared ( const double * x, const double * y )
inline

Compute the square of the Euclidean distance to another vector.

Definition at line 40 of file kernels.hpp.

template<int H, int W, typename T >
 MFEM_HOST_DEVICE void mfem::kernels::FNorm ( double & scale_factor, double & scaled_fnorm2, const T * data )
inline

Definition at line 79 of file kernels.hpp.

template<int H, int W, typename T >
 MFEM_HOST_DEVICE double mfem::kernels::FNorm ( const T * data )
inline

Compute the Frobenius norm of the matrix.

Definition at line 113 of file kernels.hpp.

template<int H, int W, typename T >
 MFEM_HOST_DEVICE double mfem::kernels::FNorm2 ( const T * data )
inline

Compute the square of the Frobenius norm of the matrix.

Definition at line 123 of file kernels.hpp.

 MFEM_HOST_DEVICE void mfem::kernels::LUSolve ( const double * data, const int m, const int * ipiv, double * x )
inline

Assuming L.U = P.A for a factored matrix (m x m),.

Definition at line 1541 of file kernels.hpp.

template<typename TA , typename TX , typename TY >
 MFEM_HOST_DEVICE void mfem::kernels::Mult ( const int height, const int width, TA * data, const TX * x, TY * y )
inline

Matrix vector multiplication: y = A x, where the matrix A is of size height x width with given data, while x and y specify the data of the input and output vectors.

Definition at line 163 of file kernels.hpp.

template<typename TA , typename TB , typename TC >
 MFEM_HOST_DEVICE void mfem::kernels::Mult ( const int Aheight, const int Awidth, const int Bwidth, const TB * Bdata, const TC * Cdata, TA * Adata )
inline

Matrix-matrix multiplication: A = B * C, where the matrices A, B and C are of sizes Aheight x Awidth, Aheight x Bwidth and Bwidth x Awidth, respectively.

Definition at line 312 of file kernels.hpp.

template<typename TA , typename TB , typename TC >
 MFEM_HOST_DEVICE void mfem::kernels::MultABt ( const int Aheight, const int Awidth, const int Bheight, const TA * Adata, const TB * Bdata, TC * ABtdata )
inline

Multiply a matrix of size Aheight x Awidth and data Adata with the transpose of a matrix of size Bheight x Awidth and data Bdata: A * Bt. Return the result in a matrix with data ABtdata.

Definition at line 334 of file kernels.hpp.

template<typename T >
 MFEM_HOST_DEVICE double mfem::kernels::Norml2 ( const int size, const T * data )
inline

Returns the l2 norm of the Vector with given size and data.

Definition at line 133 of file kernels.hpp.

template<typename TA , typename TB >
 MFEM_HOST_DEVICE void mfem::kernels::Set ( const int height, const int width, const double alpha, const TA * Adata, TB * Bdata )
inline

Compute B = alpha*A, where the matrices A and B are of size height x width with data Adata and Bdata.

Definition at line 297 of file kernels.hpp.

template<int dim>
 MFEM_HOST_DEVICE void mfem::kernels::Subtract ( const double a, const double * x, const double * y, double * z )
inline

Vector subtraction operation: z = a * (x - y)

Definition at line 58 of file kernels.hpp.

template<typename T >
 MFEM_HOST_DEVICE void mfem::kernels::Symmetrize ( const int size, T * data )
inline

Symmetrize a square matrix with given size and data: A -> (A+A^T)/2.

Definition at line 194 of file kernels.hpp.