Peano
Loading...
Searching...
No Matches
DGUtils.cpph
Go to the documentation of this file.
1
2template <typename QStoreType>
5 int order,
6 const double* __restrict__ QuadratureNodes1d,
7 int unknownsPerDoF,
8 const QStoreType* __restrict__ Q,
10 int unknown
11) {
12 QStoreType result = 0.0;
13 dfor(currentDoF,order+1) {
14 double denominator = 1.0;
15 double enumerator = 1.0;
16 for (int d=0; d<Dimensions; d++) {
17 for (int i=0; i<order+1; i++) {
18 if ( i!=currentDoF(d) ) {
19 double normalisedQuadratePointDistance = QuadratureNodes1d[currentDoF(d)]-QuadratureNodes1d[i];
20 double distanceToQuadraturePoint1d = x(d)-( QuadratureNodes1d[i]*marker.h()(d)+marker.getOffset()(d) );
21 denominator *= normalisedQuadratePointDistance * marker.h()(d);
22 enumerator *= distanceToQuadraturePoint1d;
23 }
24 }
25 }
26 int dofLinearised = peano4::utils::dLinearised(currentDoF,order+1);
27 result += enumerator/denominator * Q[ dofLinearised * unknownsPerDoF + unknown ];
28 }
29 return result;
30}
31
32template<typename T>
37 int polynomialOrder,
38 const T* __restrict__ quadraturePoints
39) {
41
42 result(0) = quadraturePoints[index(0)];
43 result(1) = quadraturePoints[index(1)];
44#if Dimensions==3
45 result(Dimensions) = quadraturePoints[index(Dimensions)];
46#endif
47
48 return tarch::la::multiplyComponents(result,cellSize) + cellCentre - 0.5*cellSize;
49}
#define dfor(counter, max)
d-dimensional Loop
Definition Loop.h:313
tarch::la::Vector< Dimensions, double > getQuadraturePoint(const tarch::la::Vector< Dimensions, double > &cellCentre, const tarch::la::Vector< Dimensions, double > &cellSize, const tarch::la::Vector< Dimensions, int > &index, int polynomialOrder, const T *__restrict__ quadraturePoints)
Construct location of a quadrature point.
Definition DGUtils.cpph:33
QStoreType evaluatePolynomial(const peano4::datamanagement::CellMarker &marker, int order, const double *__restrict__ QuadratureNodes1d, int unknownsPerDoF, const QStoreType *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, int unknown)
Evaluate the DG polynomial.
Definition DGUtils.cpph:3
CPUGPUMethod int dLinearised(const tarch::la::Vector< Dimensions, int > &counter, int max)
Map d-dimensional vector onto integer index.
Definition Loop.cpp:106
Matrix< Rows, Cols, Scalar > multiplyComponents(const Matrix< Rows, X, Scalar > &lhs, const Matrix< X, Cols, Scalar > &rhs)
Simple vector class.
Definition Vector.h:134