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_22_QF_H
5 : #define PALACE_LIBCEED_GEOM_22_QF_H
6 :
7 : #include "utils_22_qf.h"
8 :
9 56849 : CEED_QFUNCTION(f_build_geom_factor_22)(void *, CeedInt Q, const CeedScalar *const *in,
10 : CeedScalar *const *out)
11 : {
12 56849 : const CeedScalar *attr = in[0], *qw = in[1], *J = in[2];
13 56849 : CeedScalar *qd_attr = out[0], *qd_wdetJ = out[0] + Q, *qd_adjJt = out[0] + 2 * Q;
14 :
15 4113113 : CeedPragmaSIMD for (CeedInt i = 0; i < Q; i++)
16 : {
17 : CeedScalar J_loc[4], adjJt_loc[4];
18 4056264 : MatUnpack22(J + i, Q, J_loc);
19 : const CeedScalar detJ = AdjJt22<true>(J_loc, adjJt_loc);
20 :
21 4056264 : qd_attr[i] = attr[i];
22 4056264 : qd_wdetJ[i] = qw[i] * detJ;
23 4056264 : qd_adjJt[i + Q * 0] = adjJt_loc[0] / detJ;
24 4056264 : qd_adjJt[i + Q * 1] = adjJt_loc[1] / detJ;
25 4056264 : qd_adjJt[i + Q * 2] = adjJt_loc[2] / detJ;
26 4056264 : qd_adjJt[i + Q * 3] = adjJt_loc[3] / detJ;
27 : }
28 56849 : return 0;
29 : }
30 :
31 : #endif // PALACE_LIBCEED_GEOM_22_QF_H
|