Line data Source code
1 : // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2 : // SPDX-License-Identifier: Apache-2.0
3 :
4 : #ifndef PALACE_LIBCEED_H1_3_QF_H
5 : #define PALACE_LIBCEED_H1_3_QF_H
6 :
7 : #include "../coeff/coeff_3_qf.h"
8 :
9 34853 : CEED_QFUNCTION(f_apply_h1_3)(void *__restrict__ ctx, CeedInt Q, const CeedScalar *const *in,
10 : CeedScalar *const *out)
11 : {
12 34853 : const CeedScalar *attr = in[0], *wdetJ = in[0] + Q, *u = in[1];
13 34853 : CeedScalar *v = out[0];
14 :
15 7828765 : CeedPragmaSIMD for (CeedInt i = 0; i < Q; i++)
16 : {
17 : CeedScalar coeff[9];
18 7793912 : CoeffUnpack3((const CeedIntScalar *)ctx, (CeedInt)attr[i], coeff);
19 :
20 7793912 : const CeedScalar u0 = u[i + Q * 0];
21 7793912 : const CeedScalar u1 = u[i + Q * 1];
22 7793912 : const CeedScalar u2 = u[i + Q * 2];
23 7793912 : v[i + Q * 0] = wdetJ[i] * (coeff[0] * u0 + coeff[3] * u1 + coeff[6] * u2);
24 7793912 : v[i + Q * 1] = wdetJ[i] * (coeff[1] * u0 + coeff[4] * u1 + coeff[7] * u2);
25 7793912 : v[i + Q * 2] = wdetJ[i] * (coeff[2] * u0 + coeff[5] * u1 + coeff[8] * u2);
26 : }
27 34853 : return 0;
28 : }
29 :
30 : #endif // PALACE_LIBCEED_H1_3_QF_H
|