PlasCom2  1.0
XPACC Multi-physics simluation application
OperatorKernels.H
Go to the documentation of this file.
1 #ifndef __OPERATOR_KERNELS_H__
2 #define __OPERATOR_KERNELS_H__
3 
4 #include "FC.h"
5 
6 extern "C" {
7 
8  void FC_MODULE(operators,applyoperator,OPERATORS,APPLYOPERATOR)
9  (int *numDim,size_t *bufferSizes,int *numComponents,
10  size_t *numPointsBuffer,int *opDir,size_t *opInterval,
11  int *numStencils,int *stencilSizes,int *stencilStarts,
12  int *numStencilWeights,double *stencilWeights,
13  int *stencilOffsets,int *stencilID,
14  double *uBuffer,double *duBuffer);
15 
16  void FC_MODULE(operators,applyoperatorv,OPERATORS,APPLYOPERATORV)
17  (int *,size_t *,int *,size_t *,int *,size_t *,int *,int *,
18  int *,int *,double *,int *,int *,double *,double *);
19 
20  void FC_MODULE(operators,applyoperatorblobs,OPERATORS,APPLYOPERATORBLOBS)
21  (int *,size_t *,int *,size_t *,int *,int *,int *,int *,
22  int *,double *,int *,size_t *,size_t *,size_t *,double *,double *);
23 
24  void FC_MODULE(operators,applysinglestencil,OPERATORS,APPLYSINGLESTENCIL)
25  (int *,size_t *,int *,size_t *,int *,size_t *,size_t *,int *,
26  double *,int *,double *,double *);
27 
29  (int *numDim,size_t *numPoints,size_t *bufferSize,size_t *bufferInterval,
30  double *a, double *X,double *Y);
31 
33  (const int *numDim,const size_t *numPoints,const size_t *bufferSize,
34  const size_t *opInterval,const double *w,const double *x, double *y);
35 
37  (int *,size_t *,size_t *,size_t *,double *, double *,double *,double *);
38  void FC_MODULE(operators,zaxpby,OPERATORS,ZAXPBY)
39  (int *,size_t *,size_t *,size_t *,double *, double *,double *,double *,double *);
40  void FC_MODULE(operators,yaxpby,OPERATORS,YAXPBY)
41  (int *,size_t *,size_t *,size_t *,double *, double *,double *,double *);
43  (int *,size_t *,size_t *,size_t *,double *, double *,double *);
44 
45  void FC_MODULE(operators,zxdoty,OPERATORS,ZXDOTY)
46  (const int *numDim,const size_t *numPoints,const size_t *bufferSize,
47  const size_t *bufferInterval,const int *numComponents,const double *X,
48  const double *Y,double *Z);
49 
51  (int *numDim,size_t *numPoints,size_t *bufferSize,size_t *bufferInterval,
52  double *a, double *X);
53 
55  (const int *numDim,const size_t *numPoints,const size_t *bufferSize,
56  const size_t *bufferInterval,const double *X,const double *Y,double *Z);
57 
59  (const int *numDim,const size_t *numPoints,const size_t *bufferSize,
60  const size_t *bufferInterval,const double *X, double *Y);
61 
63  (int *,size_t *,size_t *,size_t *,double *, double *,double *,double *);
64  void FC_MODULE(operators,zwmxpy,OPERATORS,ZMWXPY)
65  (int *,size_t *,size_t *,size_t *,double *, double *,double *,double *);
66  void FC_MODULE(operators,assignmentyx,OPERATORS,ASSIGNMENTYX)
67  (int *,size_t *,size_t *,size_t *,double *, double *);
68  void FC_MODULE(operators,assignmentxa,OPERATORS,ASSIGNMENTXA)
69  (int *,size_t *,size_t *,size_t *,double *, double *);
70 
71  void FC_MODULE(operators,assignmentyabsx,OPERATORS,ASSIGNMENTYABSX)
72  (const int *numDim,const size_t *numPoints,const size_t *bufferSize,
73  const size_t *bufferInterval,double *X, double *Y);
74 
75  void FC_MODULE(operators,veclen,OPERATORS,VECLEN)
76  (const int *numDim,const size_t *numPoints,const size_t *bufferSize,
77  const size_t *bufferInterval,const int *numComp,const double *V,
78  double *lenV);
79 
80 
82  (int *numDim,size_t *numPoints,size_t *bufferSize,size_t *bufferInterval,
83  double *a, double *X,double *Y);
84 
85  void FC_MODULE(operators,zawpxy,OPERATORS,ZAWPXY)
86  (int *numDim,size_t *numPoints,size_t *bufferSize,size_t *bufferInterval,
87  double *a,double *W,double *X,double *Y,double *Z);
88 
89  void FC_MODULE(operators,zvwpxy,OPERATORS,ZVWPXY)
90  (int *numDim,size_t *numPoints,size_t *bufferSize,size_t *bufferInterval,
91  double *V,double *W,double *X,double *Y,double *Z);
92 
93  void FC_MODULE(operators,determinant3x3,OPERATORS,DETERMINANT3X3)
94  (size_t *numPoints,size_t *bufferSize,size_t *bufferInterval,
95  double *inMatrix,double *matrixDeterminant);
96 
97  void FC_MODULE(operators,determinant2x2,OPERATORS,DETERMINANT2X2)
98  (size_t *numPoints,size_t *bufferSize,size_t *bufferInterval,
99  double *inMatrix,double *matrixDeterminant);
100 
101  void FC_MODULE(operators,metricsum4,OPERATORS,METRICSUM4)
102  (int *numDim,size_t *numPoints,size_t *bufferSize,size_t *bufferInterval,
103  double *buf1,double *buf2,double *buf3,double *buf4,double *buf5,
104  double *buf6,double *buf7,double *metricSum);
105 };
106 
107 #endif
void size_t int size_t int size_t int int int int double int int double double *void size_t int size_t int int int int int double int size_t size_t size_t double double *void size_t int size_t int size_t size_t int double int double double *void size_t * numPoints
void const size_t const size_t const size_t const double * w
subroutine applyoperatorv(numDim, dimSizes, numComponents, numPoints, opDir, opInterval, numStencils, stencilSizes, stencilStarts, numValues, stencilWeights, stencilOffsets, stencilID, U, dU)
applyoperator applies an operator specified as a stencil set to the provided state data ...
Definition: Operators.f90:174
subroutine assignmentyx(numDim, numPoints, bufferSize, bufferInterval, X, Y)
ASSIGNMENTYX point-wise operator performing Y = X.
Definition: Operators.f90:1170
subroutine ywxpy(numDim, numPoints, bufferSize, bufferInterval, W, X, Y)
YWXPY point-wise operator performing Y = WX + Y, where all are vectors.
Definition: Operators.f90:835
void size_t int size_t int size_t int int int int double int int double double *void size_t int size_t int int int int int double int size_t size_t size_t double double *void size_t int size_t int size_t size_t int double int double double *void size_t size_t * bufferSize
void size_t int size_t int size_t int int * stencilSizes
void size_t int size_t int size_t int int int int double int int double double *void size_t int size_t int int int int int double int size_t size_t size_t double double *void size_t int size_t int size_t size_t int double int double double *void size_t size_t size_t double double * X
void size_t size_t size_t double double double double double double * buf6
subroutine assignmentyabsx(numDim, numPoints, bufferSize, bufferInterval, X, Y)
ASSIGNMENTYABSX point-wise operator performing X = scalar a.
Definition: Operators.f90:1275
void size_t int size_t int size_t int int int int double int int double * uBuffer
subroutine zaxpy(N1, N2, N3, localInterval, a, X, Y, Z)
Definition: RKUtil.f90:79
void size_t int size_t int * opDir
subroutine applyoperator(numDim, dimSizes, numComponents, numPoints, opDir, opInterval, numStencils, stencilSizes, stencilStarts, numValues, stencilWeights, stencilOffsets, stencilID, U, dU)
applyoperator applies an operator specified as a stencil set to the provided state data ...
Definition: Operators.f90:36
subroutine determinant3x3(numPoints, bufferSize, bufferInterval, inMatrix, matrixDeterminant)
Computes determinant of 3x3 matrix.
Definition: Operators.f90:1449
void size_t int size_t int size_t int int int * stencilStarts
void size_t size_t size_t double double * buf2
void const size_t const size_t const size_t const double const double double * y
void size_t size_t size_t double double double double double double double double * metricSum
subroutine zwxpy(numDim, numPoints, bufferSize, bufferInterval, W, X, Y, Z)
ZWXPY point-wise operator performing Z = WX + Y, where all are vectors.
Definition: Operators.f90:782
void size_t size_t double * inMatrix
void size_t size_t size_t double * buf1
subroutine yxy(numDim, numPoints, bufferSize, bufferInterval, X, Y)
YXY point-wise operator performing Y = XY (all vectors)
Definition: Operators.f90:731
void size_t int size_t * numPointsBuffer
void size_t int size_t int size_t int int int int * numStencilWeights
subroutine veclen(numDim, numPoints, bufferSize, bufferInterval, numComp, V, lenV)
VECLEN point-wise operator returning the length of a numComp-dimensional vector.
Definition: Operators.f90:1328
void size_t size_t size_t double double double double * buf4
subroutine assignmentxa(numDim, numPoints, bufferSize, bufferInterval, a, X)
ASSIGNMENTXA point-wise operator performing X = scalar a.
Definition: Operators.f90:1222
subroutine applyoperatorblobs(numDim, dimSizes, numComponents, numPointsBuffer, opDir, numStencils, stencilSizes, stencilStarts, numStencilValues, stencilWeights, stencilOffsets, numPointsStencil, numPointsApply, stencilPoints, U, dU)
applyoperatorblobs applies an operator by applying each stencil in turn to all the points to which it...
Definition: Operators.f90:312
void size_t size_t size_t double double double * buf3
void const size_t const size_t const size_t const double const double * x
void size_t size_t double double * matrixDeterminant
void size_t int size_t int size_t int int int int double int * stencilOffsets
void size_t size_t size_t double double * W
subroutine yaxpby(numDim, numPoints, bufferSize, bufferInterval, a, b, X, Y)
YAXPBY point-wise operator performing Y = aX + bY (scalar a,b)
Definition: Operators.f90:577
subroutine zxdoty(numDim, numPoints, bufferSize, bufferInterval, numComponents, X, Y, Z)
ZXDOTY numComponents-vector inner product Z = X * Y.
Definition: Operators.f90:1050
void size_t int size_t int size_t * opInterval
void size_t int size_t int size_t int int int int double int int * stencilID
void size_t * bufferSizes
subroutine zawpxy(numDim, numPoints, bufferSize, bufferInterval, a, W, X, Y, Z)
ZAWPXY point-wise operator performing Z = aW + XY.
Definition: Operators.f90:887
void size_t int size_t int size_t int int int int double int int double double *void size_t int size_t int int int int int double int size_t size_t size_t double double *void size_t int size_t int size_t size_t int double int double double *void size_t size_t size_t double * a
subroutine applysinglestencil(numDim, dimSizes, numComponents, numPointsBuffer, opDir, numPointsApply, applyPoints, stencilSize, stencilWeights, stencilOffsets, U, dU)
applysinglestencil applies an operator by applying a given stencil to the specified points ...
Definition: Operators.f90:382
void size_t size_t size_t double double double double *void size_t size_t size_t double double double double double *void size_t size_t size_t double double double double *void size_t size_t size_t double double double *void const size_t const size_t const size_t const int const double const double double * Z
subroutine determinant2x2(numPoints, bufferSize, bufferInterval, inMatrix, matrixDeterminant)
Computes determinant of 2x2 matrix.
Definition: Operators.f90:1501
void size_t int size_t int size_t int int int int double int int double double * duBuffer
subroutine zwmxpy(numDim, numPoints, bufferSize, bufferInterval, W, X, Y, Z)
ZWMXPY point-wise operator performing Z = W(X+Y) where all are vectors.
Definition: Operators.f90:997
subroutine yax(numDim, numPoints, bufferSize, bufferInterval, a, X, Y)
YAX point-wise operator performing Y = aX (scalar a)
Definition: Operators.f90:628
void const size_t const size_t const size_t const int const double * V
void size_t int size_t int size_t int int int int double int int double double *void size_t int size_t int int int int int double int size_t size_t size_t double double *void size_t int size_t int size_t size_t int double int double double *void size_t size_t size_t double double double * Y
void size_t int size_t int size_t int int int int double int int double double *void size_t int size_t int int int int int double int size_t size_t size_t double double *void size_t int size_t int size_t size_t int double int double double *void size_t size_t size_t * bufferInterval
void const size_t const size_t const size_t const int * numComp
subroutine zxy(numDim, numPoints, bufferSize, bufferInterval, X, Y, Z)
ZXY point-wise operator performing Z = XY (all vectors)
Definition: Operators.f90:679
subroutine zvwpxy(numDim, numPoints, bufferSize, bufferInterval, V, W, X, Y, Z)
ZVWPXY point-wise operator performing Z = VW + XY.
Definition: Operators.f90:941
void size_t size_t size_t double double double double double double double * buf7
void size_t int size_t int size_t int int int int double * stencilWeights
void size_t int size_t int size_t int * numStencils
void size_t size_t size_t double double double double double * buf5
subroutine yaxpy(N1, N2, N3, localInterval, a, X, Y)
Definition: RKUtil.f90:113
subroutine yaxm1(numDim, numPoints, bufferSize, bufferInterval, a, X, Y)
YAXM1 point-wise operator performing Y = a/X (scalar a)
Definition: Operators.f90:1396
void const size_t const size_t const size_t const int const double double * lenV
void size_t int * numComponents
subroutine metricsum4(numDim, numPoints, bufferSize, bufferInterval, buf1, buf2, buf3, buf4, buf5, buf6, buf7, metricSum)
Computes buf1*buf4 - buf2*buf3 + buf7*(buf5 - buf6)
Definition: Operators.f90:1536
void FC_MODULE(operators, applyoperator, OPERATORS, APPLYOPERATOR)(int *numDim
subroutine zaxpby(numDim, numPoints, bufferSize, bufferInterval, a, b, X, Y, Z)
ZAXPBY point-wise operator performing Z = aX + bY (scalar a,b)
Definition: Operators.f90:526
subroutine xax(numDim, numPoints, bufferSize, bufferInterval, a, X)
XAX point-wise operator performing X = aX (scalar a)
Definition: Operators.f90:1119