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_HDIV_MASS_BUILD_33_QF_H
5 : #define PALACE_LIBCEED_HDIV_MASS_BUILD_33_QF_H
6 :
7 : #include "../coeff/coeff_3_qf.h"
8 : #include "utils_33_qf.h"
9 :
10 0 : CEED_QFUNCTION(f_build_hdivmass_33)(void *__restrict__ ctx, CeedInt Q,
11 : const CeedScalar *const *in, CeedScalar *const *out)
12 : {
13 0 : const CeedScalar *attr = in[0], *wdetJ = in[0] + Q, *adjJt = in[0] + 2 * Q;
14 0 : CeedScalar *__restrict__ qd1 = out[0], *__restrict__ qd2 = out[0] + 9 * Q;
15 :
16 0 : CeedPragmaSIMD for (CeedInt i = 0; i < Q; i++)
17 : {
18 : CeedScalar adjJt_loc[9];
19 0 : MatUnpack33(adjJt + i, Q, adjJt_loc);
20 : {
21 : CeedScalar coeff[9], qd_loc[9];
22 0 : CoeffUnpack3((const CeedIntScalar *)ctx, (CeedInt)attr[i], coeff);
23 : MultAtBA33(adjJt_loc, coeff, qd_loc);
24 :
25 0 : qd1[i + Q * 0] = wdetJ[i] * qd_loc[0];
26 0 : qd1[i + Q * 1] = wdetJ[i] * qd_loc[1];
27 0 : qd1[i + Q * 2] = wdetJ[i] * qd_loc[2];
28 0 : qd1[i + Q * 3] = wdetJ[i] * qd_loc[3];
29 0 : qd1[i + Q * 4] = wdetJ[i] * qd_loc[4];
30 0 : qd1[i + Q * 5] = wdetJ[i] * qd_loc[5];
31 0 : qd1[i + Q * 6] = wdetJ[i] * qd_loc[6];
32 0 : qd1[i + Q * 7] = wdetJ[i] * qd_loc[7];
33 0 : qd1[i + Q * 8] = wdetJ[i] * qd_loc[8];
34 : }
35 : {
36 : CeedScalar coeff[9], J_loc[9], qd_loc[9];
37 0 : CoeffUnpack3(CoeffPairSecond<3>((const CeedIntScalar *)ctx), (CeedInt)attr[i], coeff);
38 : AdjJt33(adjJt_loc, J_loc);
39 : MultAtBA33(J_loc, coeff, qd_loc);
40 :
41 0 : qd2[i + Q * 0] = wdetJ[i] * qd_loc[0];
42 0 : qd2[i + Q * 1] = wdetJ[i] * qd_loc[1];
43 0 : qd2[i + Q * 2] = wdetJ[i] * qd_loc[2];
44 0 : qd2[i + Q * 3] = wdetJ[i] * qd_loc[3];
45 0 : qd2[i + Q * 4] = wdetJ[i] * qd_loc[4];
46 0 : qd2[i + Q * 5] = wdetJ[i] * qd_loc[5];
47 0 : qd2[i + Q * 6] = wdetJ[i] * qd_loc[6];
48 0 : qd2[i + Q * 7] = wdetJ[i] * qd_loc[7];
49 0 : qd2[i + Q * 8] = wdetJ[i] * qd_loc[8];
50 : }
51 : }
52 0 : return 0;
53 : }
54 :
55 : #endif // PALACE_LIBCEED_HDIV_MASS_BUILD_33_QF_H
|