LCOV - code coverage report
Current view: top level - fem/qfunctions/21 - utils_21_qf.h (source / functions) Coverage Total Hit
Test: Palace Coverage Report Lines: 45.5 % 22 10
Test Date: 2025-10-23 22:45:05 Functions: - 0 0
Legend: Lines: hit not hit

            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_UTILS_21_QF_H
       5              : #define PALACE_LIBCEED_UTILS_21_QF_H
       6              : 
       7              : #ifndef CEED_RUNNING_JIT_PASS
       8              : #include <math.h>
       9              : #endif
      10              : 
      11              : CEED_QFUNCTION_HELPER CeedScalar DetJ21(const CeedScalar J[2])
      12              : {
      13              :   // J: 0
      14              :   //    1
      15              :   return sqrt(J[0] * J[0] + J[1] * J[1]);
      16              : }
      17              : 
      18              : template <bool ComputeDet = false>
      19              : CEED_QFUNCTION_HELPER CeedScalar AdjJt21(const CeedScalar J[2], CeedScalar adjJt[2])
      20              : {
      21              :   // Compute adj(J)^T / det(J) and store the result.
      22              :   // J: 0   adj(J): 1/sqrt(J^T J) J^T
      23              :   //    1
      24       443832 :   const CeedScalar d = sqrt(J[0] * J[0] + J[1] * J[1]);
      25       443832 :   adjJt[0] = J[0] / d;
      26       443832 :   adjJt[1] = J[1] / d;
      27              :   return ComputeDet ? d : 0.0;
      28              : }
      29              : 
      30              : CEED_QFUNCTION_HELPER void MatUnpack21(const CeedScalar *A, const CeedInt A_stride,
      31              :                                        CeedScalar A_loc[2])
      32              : {
      33       512976 :   A_loc[0] = A[A_stride * 0];
      34       512976 :   A_loc[1] = A[A_stride * 1];
      35              : }
      36              : 
      37              : CEED_QFUNCTION_HELPER void MultAtBCx21(const CeedScalar A[2], const CeedScalar B[4],
      38              :                                        const CeedScalar C[2], const CeedScalar x[1],
      39              :                                        CeedScalar y[1])
      40              : {
      41              :   // A: 0   B: 0 2   C: 0
      42              :   //    1      1 3      1
      43              :   CeedScalar z[2], t;
      44              : 
      45        69144 :   y[0] = C[0] * x[0];
      46        69144 :   t = C[1] * x[0];
      47              : 
      48        69144 :   z[0] = B[0] * y[0] + B[2] * t;
      49        69144 :   z[1] = B[1] * y[0] + B[3] * t;
      50              : 
      51        69144 :   y[0] = A[0] * z[0] + A[1] * z[1];
      52              : }
      53              : 
      54              : CEED_QFUNCTION_HELPER void MultBAx21(const CeedScalar A[2], const CeedScalar B[4],
      55              :                                      const CeedScalar x[1], CeedScalar y[2])
      56              : {
      57              :   // A: 0   B: 0 2
      58              :   //    1      1 3
      59              :   CeedScalar z[2];
      60              : 
      61            0 :   z[0] = A[0] * x[0];
      62            0 :   z[1] = A[1] * x[0];
      63              : 
      64            0 :   y[0] = B[0] * z[0] + B[2] * z[1];
      65            0 :   y[1] = B[1] * z[0] + B[3] * z[1];
      66              : }
      67              : 
      68              : CEED_QFUNCTION_HELPER void MultAtBA21(const CeedScalar A[2], const CeedScalar B[4],
      69              :                                       CeedScalar C[1])
      70              : {
      71              :   // A: 0   B: 0 2   C: 0
      72              :   //    1      1 3
      73              : 
      74              :   // First compute entries of R = B A.
      75            0 :   const CeedScalar R11 = B[0] * A[0] + B[2] * A[1];
      76            0 :   const CeedScalar R21 = B[1] * A[0] + B[3] * A[1];
      77              : 
      78            0 :   C[0] = A[0] * R11 + A[1] * R21;
      79              : }
      80              : 
      81              : CEED_QFUNCTION_HELPER void MultAtBC21(const CeedScalar A[2], const CeedScalar B[4],
      82              :                                       const CeedScalar C[2], CeedScalar D[1])
      83              : {
      84              :   // A, C: 0   B: 0 2   D: 0
      85              :   //       1      1 3
      86              : 
      87              :   // First compute entries of R = B C.
      88            0 :   const CeedScalar R11 = B[0] * C[0] + B[2] * C[1];
      89            0 :   const CeedScalar R21 = B[1] * C[0] + B[3] * C[1];
      90              : 
      91            0 :   D[0] = A[0] * R11 + A[1] * R21;
      92              : }
      93              : 
      94              : CEED_QFUNCTION_HELPER void MultBA21(const CeedScalar A[2], const CeedScalar B[4],
      95              :                                     CeedScalar C[2])
      96              : {
      97              :   // A: 0   B: 0 2   C: 0
      98              :   //    1      1 3      1
      99            0 :   C[0] = B[0] * A[0] + B[2] * A[1];
     100            0 :   C[1] = B[1] * A[0] + B[3] * A[1];
     101              : }
     102              : 
     103              : #endif  // PALACE_LIBCEED_UTILS_21_QF_H
        

Generated by: LCOV version 2.0-1