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