Lines Matching +full:- +full:j
1 // Copyright (c) 2017-2026, Lawrence Livermore National Security, LLC and other CEED contributors.
2 // All Rights Reserved. See the top-level LICENSE and NOTICE files for details.
4 // SPDX-License-Identifier: BSD-2-Clause
16 // -----------------------------------------------------------------------------
20 // Reference (parent) 2D coordinates: X \in [-1, 1]^2
22 // Global 3D physical coordinates given by the mesh: xx \in [-R, R]^3 with R radius of the sphere
24 // Local 3D physical coordinates on the 2D manifold: x \in [-l, l]^3 with l half edge of the cube i…
48 // dX_i/dx_j [2 * 3] = (dx_i/dX_j)+ = (dxdX^T dxdX)^(-1) dxdX
52 // g^{ij} = dX_i/dx_k dX_j/dx_k = (dxdX^T dxdX)^{-1}
58 // -----------------------------------------------------------------------------
60 const CeedScalar *X = in[0], *J = in[1], *w = in[2]; in SetupDiffGeo() local
73 {J[i + Q * 0], J[i + Q * 3]}, in SetupDiffGeo()
74 {J[i + Q * 1], J[i + Q * 4]}, in SetupDiffGeo()
75 {J[i + Q * 2], J[i + Q * 5]} in SetupDiffGeo()
79 // x = xx (xx^T xx)^{-1/2} in SetupDiffGeo()
80 // dx/dxx = I (xx^T xx)^{-1/2} - xx xx^T (xx^T xx)^{-3/2} in SetupDiffGeo()
83 for (int j = 0; j < 3; j++) { in SetupDiffGeo() local
84 for (int k = 0; k < 3; k++) xx_sq[j][k] = xx[j] * xx[k] / (sqrt(mod_xx_sq) * mod_xx_sq); in SetupDiffGeo()
88 …{1. / sqrt(mod_xx_sq) - xx_sq[0][0], -xx_sq[0][1], -xx_sq[0][2] … in SetupDiffGeo()
89 …{-xx_sq[1][0], 1. / sqrt(mod_xx_sq) - xx_sq[1][1], -xx_sq[1][2] … in SetupDiffGeo()
90 …{-xx_sq[2][0], -xx_sq[2][1], 1. / sqrt(mod_xx_sq) - xx… in SetupDiffGeo()
94 for (int j = 0; j < 3; j++) { in SetupDiffGeo() local
96 dxdX[j][k] = 0; in SetupDiffGeo()
97 for (int l = 0; l < 3; l++) dxdX[j][k] += dxdxx[j][l] * dxxdX[l][k]; in SetupDiffGeo()
101 // J is given by the cross product of the columns of dxdX in SetupDiffGeo()
102 …const CeedScalar J[3] = {dxdX[1][0] * dxdX[2][1] - dxdX[2][0] * dxdX[1][1], dxdX[2][0] * dxdX[0][1… in SetupDiffGeo() local
103 dxdX[0][0] * dxdX[1][1] - dxdX[1][0] * dxdX[0][1]}; in SetupDiffGeo()
105 // Use the magnitude of J as our detJ (volume scaling factor) in SetupDiffGeo()
106 const CeedScalar mod_J = sqrt(J[0] * J[0] + J[1] * J[1] + J[2] * J[2]); in SetupDiffGeo()
108 // Interp-to-Interp q_data in SetupDiffGeo()
111 // dxdX_k,j * dxdX_j,k in SetupDiffGeo()
113 for (int j = 0; j < 2; j++) { in SetupDiffGeo() local
115 dxdXTdxdX[j][k] = 0; in SetupDiffGeo()
116 for (int l = 0; l < 3; l++) dxdXTdxdX[j][k] += dxdX[l][j] * dxdX[l][k]; in SetupDiffGeo()
120 …const CeedScalar detdxdXTdxdX = dxdXTdxdX[0][0] * dxdXTdxdX[1][1] - dxdXTdxdX[1][0] * dxdXTdxdX[0]… in SetupDiffGeo()
125 dxdXTdxdX_inv[0][1] = -dxdXTdxdX[0][1] / detdxdXTdxdX; in SetupDiffGeo()
126 dxdXTdxdX_inv[1][0] = -dxdXTdxdX[1][0] / detdxdXTdxdX; in SetupDiffGeo()
139 // -----------------------------------------------------------------------------
141 // -----------------------------------------------------------------------------
173 // -----------------------------------------------------------------------------
177 // ug - Input vector gradient at quadrature points
178 // q_data - Geometric factors
181 // vg - Output vector (test functions) gradient at quadrature points
182 // -----------------------------------------------------------------------------
195 // -- Grad-to-Grad q_data in Diff()
196 // ---- dXdx_j,k * dXdx_k,j in Diff()
202 for (int j = 0; j < 2; j++) { // j = direction of vg in Diff() local
203 vg[i + j * Q] = w_det_J * (du[0] * dXdxdXdx_T[0][j] + du[1] * dXdxdXdx_T[1][j]); in Diff()
209 // -----------------------------------------------------------------------------