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_GEOM_33_QF_H
5 : #define PALACE_LIBCEED_GEOM_33_QF_H
6 :
7 : #include "utils_33_qf.h"
8 :
9 111231 : CEED_QFUNCTION(f_build_geom_factor_33)(void *, CeedInt Q, const CeedScalar *const *in,
10 : CeedScalar *const *out)
11 : {
12 111231 : const CeedScalar *attr = in[0], *qw = in[1], *J = in[2];
13 111231 : CeedScalar *qd_attr = out[0], *qd_wdetJ = out[0] + Q, *qd_adjJt = out[0] + 2 * Q;
14 :
15 30032935 : CeedPragmaSIMD for (CeedInt i = 0; i < Q; i++)
16 : {
17 : CeedScalar J_loc[9], adjJt_loc[9];
18 29921704 : MatUnpack33(J + i, Q, J_loc);
19 : const CeedScalar detJ = AdjJt33<true>(J_loc, adjJt_loc);
20 :
21 29921704 : qd_attr[i] = attr[i];
22 29921704 : qd_wdetJ[i] = qw[i] * detJ;
23 29921704 : qd_adjJt[i + Q * 0] = adjJt_loc[0] / detJ;
24 29921704 : qd_adjJt[i + Q * 1] = adjJt_loc[1] / detJ;
25 29921704 : qd_adjJt[i + Q * 2] = adjJt_loc[2] / detJ;
26 29921704 : qd_adjJt[i + Q * 3] = adjJt_loc[3] / detJ;
27 29921704 : qd_adjJt[i + Q * 4] = adjJt_loc[4] / detJ;
28 29921704 : qd_adjJt[i + Q * 5] = adjJt_loc[5] / detJ;
29 29921704 : qd_adjJt[i + Q * 6] = adjJt_loc[6] / detJ;
30 29921704 : qd_adjJt[i + Q * 7] = adjJt_loc[7] / detJ;
31 29921704 : qd_adjJt[i + Q * 8] = adjJt_loc[8] / detJ;
32 : }
33 111231 : return 0;
34 : }
35 :
36 : #endif // PALACE_LIBCEED_GEOM_33_QF_H
|