Lines Matching refs:ni
320 PetscErrorCode PetscLagNodeIndicesGetData_Internal(PetscLagNodeIndices ni, PetscInt *nodeIdxDim, Pe… in PetscLagNodeIndicesGetData_Internal() argument
323 *nodeIdxDim = ni->nodeIdxDim; in PetscLagNodeIndicesGetData_Internal()
324 *nodeVecDim = ni->nodeVecDim; in PetscLagNodeIndicesGetData_Internal()
325 *nNodes = ni->nNodes; in PetscLagNodeIndicesGetData_Internal()
326 *nodeIdx = ni->nodeIdx; in PetscLagNodeIndicesGetData_Internal()
327 *nodeVec = ni->nodeVec; in PetscLagNodeIndicesGetData_Internal()
331 static PetscErrorCode PetscLagNodeIndicesReference(PetscLagNodeIndices ni) in PetscLagNodeIndicesReference() argument
334 if (ni) ni->refct++; in PetscLagNodeIndicesReference()
338 static PetscErrorCode PetscLagNodeIndicesDuplicate(PetscLagNodeIndices ni, PetscLagNodeIndices *niN… in PetscLagNodeIndicesDuplicate() argument
343 (*niNew)->nodeIdxDim = ni->nodeIdxDim; in PetscLagNodeIndicesDuplicate()
344 (*niNew)->nodeVecDim = ni->nodeVecDim; in PetscLagNodeIndicesDuplicate()
345 (*niNew)->nNodes = ni->nNodes; in PetscLagNodeIndicesDuplicate()
346 PetscCall(PetscMalloc1(ni->nNodes * ni->nodeIdxDim, &((*niNew)->nodeIdx))); in PetscLagNodeIndicesDuplicate()
347 PetscCall(PetscArraycpy((*niNew)->nodeIdx, ni->nodeIdx, ni->nNodes * ni->nodeIdxDim)); in PetscLagNodeIndicesDuplicate()
348 PetscCall(PetscMalloc1(ni->nNodes * ni->nodeVecDim, &((*niNew)->nodeVec))); in PetscLagNodeIndicesDuplicate()
349 PetscCall(PetscArraycpy((*niNew)->nodeVec, ni->nodeVec, ni->nNodes * ni->nodeVecDim)); in PetscLagNodeIndicesDuplicate()
354 static PetscErrorCode PetscLagNodeIndicesDestroy(PetscLagNodeIndices *ni) in PetscLagNodeIndicesDestroy() argument
357 if (!*ni) PetscFunctionReturn(PETSC_SUCCESS); in PetscLagNodeIndicesDestroy()
358 if (--(*ni)->refct > 0) { in PetscLagNodeIndicesDestroy()
359 *ni = NULL; in PetscLagNodeIndicesDestroy()
362 PetscCall(PetscFree((*ni)->nodeIdx)); in PetscLagNodeIndicesDestroy()
363 PetscCall(PetscFree((*ni)->nodeVec)); in PetscLagNodeIndicesDestroy()
364 PetscCall(PetscFree((*ni)->perm)); in PetscLagNodeIndicesDestroy()
365 PetscCall(PetscFree(*ni)); in PetscLagNodeIndicesDestroy()
366 *ni = NULL; in PetscLagNodeIndicesDestroy()
380 static PetscErrorCode PetscLagNodeIndicesComputeVertexOrder(DM dm, PetscLagNodeIndices ni, PetscBoo… in PetscLagNodeIndicesComputeVertexOrder() argument
402 PetscInt nodeIdxDim = ni->nodeIdxDim; in PetscLagNodeIndicesComputeVertexOrder()
410 const PetscInt *iv = &(ni->nodeIdx[idxOrder[v] * nodeIdxDim]); in PetscLagNodeIndicesComputeVertexOrder()
411 const PetscInt *iw = &(ni->nodeIdx[idxOrder[w] * nodeIdxDim]); in PetscLagNodeIndicesComputeVertexOrder()
425 …for (d = 0; d < nodeIdxDim; d++) newNodeIdx[v * ni->nodeIdxDim + d] = ni->nodeIdx[idxOrder[v] * no… in PetscLagNodeIndicesComputeVertexOrder()
427 PetscCall(PetscFree(ni->nodeIdx)); in PetscLagNodeIndicesComputeVertexOrder()
428 ni->nodeIdx = newNodeIdx; in PetscLagNodeIndicesComputeVertexOrder()
458 PetscCall(PetscMalloc1(ni->nodeIdxDim * nVerts, &newNodeIdx)); in PetscLagNodeIndicesComputeVertexOrder()
461 …for (d = 0; d < ni->nodeIdxDim; d++) newNodeIdx[revlexOrder[v] * ni->nodeIdxDim + d] = ni->nodeIdx… in PetscLagNodeIndicesComputeVertexOrder()
463 PetscCall(PetscFree(ni->nodeIdx)); in PetscLagNodeIndicesComputeVertexOrder()
464 ni->nodeIdx = newNodeIdx; in PetscLagNodeIndicesComputeVertexOrder()
465 ni->perm = invClosureOrder; in PetscLagNodeIndicesComputeVertexOrder()
475 PetscLagNodeIndices ni; in PetscLagNodeIndicesCreateSimplexVertices() local
479 PetscCall(PetscNew(&ni)); in PetscLagNodeIndicesCreateSimplexVertices()
481 ni->nodeIdxDim = dim + 1; in PetscLagNodeIndicesCreateSimplexVertices()
482 ni->nodeVecDim = 0; in PetscLagNodeIndicesCreateSimplexVertices()
483 ni->nNodes = dim + 1; in PetscLagNodeIndicesCreateSimplexVertices()
484 ni->refct = 1; in PetscLagNodeIndicesCreateSimplexVertices()
485 PetscCall(PetscCalloc1((dim + 1) * (dim + 1), &ni->nodeIdx)); in PetscLagNodeIndicesCreateSimplexVertices()
486 for (d = 0; d < dim + 1; d++) ni->nodeIdx[d * (dim + 2)] = 1; in PetscLagNodeIndicesCreateSimplexVertices()
487 PetscCall(PetscLagNodeIndicesComputeVertexOrder(dm, ni, PETSC_FALSE)); in PetscLagNodeIndicesCreateSimplexVertices()
488 *nodeIndices = ni; in PetscLagNodeIndicesCreateSimplexVertices()
499 PetscLagNodeIndices ni; in PetscLagNodeIndicesCreateTensorVertices() local
505 PetscCall(PetscNew(&ni)); in PetscLagNodeIndicesCreateTensorVertices()
507 ni->nodeIdxDim = nodeIdxDim = subNodeIdxDim + 2; in PetscLagNodeIndicesCreateTensorVertices()
508 ni->nodeVecDim = 0; in PetscLagNodeIndicesCreateTensorVertices()
509 ni->nNodes = nVerts = 2 * nSubVerts; in PetscLagNodeIndicesCreateTensorVertices()
510 ni->refct = 1; in PetscLagNodeIndicesCreateTensorVertices()
511 PetscCall(PetscCalloc1(nodeIdxDim * nVerts, &ni->nodeIdx)); in PetscLagNodeIndicesCreateTensorVertices()
514 …for (g = 0; g < subNodeIdxDim; g++) ni->nodeIdx[f * nodeIdxDim + g] = facetni->nodeIdx[e * subNode… in PetscLagNodeIndicesCreateTensorVertices()
515 ni->nodeIdx[f * nodeIdxDim + subNodeIdxDim] = (1 - d); in PetscLagNodeIndicesCreateTensorVertices()
516 ni->nodeIdx[f * nodeIdxDim + subNodeIdxDim + 1] = d; in PetscLagNodeIndicesCreateTensorVertices()
519 PetscCall(PetscLagNodeIndicesComputeVertexOrder(dm, ni, PETSC_TRUE)); in PetscLagNodeIndicesCreateTensorVertices()
520 *nodeIndices = ni; in PetscLagNodeIndicesCreateTensorVertices()
657 PetscLagNodeIndices ni; in PetscLagNodeIndicesTensor() local
671 PetscCall(PetscNew(&ni)); in PetscLagNodeIndicesTensor()
672 ni->nodeIdxDim = nodeIdxDim = tracei->nodeIdxDim + fiberi->nodeIdxDim; in PetscLagNodeIndicesTensor()
673 ni->nodeVecDim = Nk; in PetscLagNodeIndicesTensor()
674 ni->nNodes = nNodes = tracei->nNodes * fiberi->nNodes; in PetscLagNodeIndicesTensor()
675 ni->refct = 1; in PetscLagNodeIndicesTensor()
676 PetscCall(PetscMalloc1(nNodes * nodeIdxDim, &ni->nodeIdx)); in PetscLagNodeIndicesTensor()
682 …for (m = 0; m < tracei->nodeIdxDim; m++) ni->nodeIdx[l * nodeIdxDim + n++] = tracei->nodeIdx[i * t… in PetscLagNodeIndicesTensor()
683 …for (m = 0; m < fiberi->nodeIdxDim; m++) ni->nodeIdx[l * nodeIdxDim + n++] = fiberi->nodeIdx[j * f… in PetscLagNodeIndicesTensor()
688 PetscCall(PetscMalloc1(nNodes * Nk, &ni->nodeVec)); in PetscLagNodeIndicesTensor()
738 for (d = 0; d < Nk; d++) ni->nodeVec[l * Nk + d] = sign * work[d]; in PetscLagNodeIndicesTensor()
745 *nodeIndices = ni; in PetscLagNodeIndicesTensor()
752 PetscLagNodeIndices ni; in PetscLagNodeIndicesMerge() local
756 PetscCall(PetscNew(&ni)); in PetscLagNodeIndicesMerge()
757 ni->nodeIdxDim = nodeIdxDim = niA->nodeIdxDim; in PetscLagNodeIndicesMerge()
759 ni->nodeVecDim = nodeVecDim = niA->nodeVecDim; in PetscLagNodeIndicesMerge()
761 ni->nNodes = nNodes = niA->nNodes + niB->nNodes; in PetscLagNodeIndicesMerge()
762 ni->refct = 1; in PetscLagNodeIndicesMerge()
763 PetscCall(PetscMalloc1(nNodes * nodeIdxDim, &ni->nodeIdx)); in PetscLagNodeIndicesMerge()
764 PetscCall(PetscMalloc1(nNodes * nodeVecDim, &ni->nodeVec)); in PetscLagNodeIndicesMerge()
765 PetscCall(PetscArraycpy(ni->nodeIdx, niA->nodeIdx, niA->nNodes * nodeIdxDim)); in PetscLagNodeIndicesMerge()
766 PetscCall(PetscArraycpy(ni->nodeVec, niA->nodeVec, niA->nNodes * nodeVecDim)); in PetscLagNodeIndicesMerge()
767 …PetscCall(PetscArraycpy(&ni->nodeIdx[niA->nNodes * nodeIdxDim], niB->nodeIdx, niB->nNodes * nodeId… in PetscLagNodeIndicesMerge()
768 …PetscCall(PetscArraycpy(&ni->nodeVec[niA->nNodes * nodeVecDim], niB->nodeVec, niB->nNodes * nodeVe… in PetscLagNodeIndicesMerge()
769 *nodeIndices = ni; in PetscLagNodeIndicesMerge()
809 static PetscErrorCode PetscLagNodeIndicesGetPermutation(PetscLagNodeIndices ni, PetscInt *perm[]) in PetscLagNodeIndicesGetPermutation() argument
812 if (!ni->perm) { in PetscLagNodeIndicesGetPermutation()
814 PetscInt m = ni->nNodes; in PetscLagNodeIndicesGetPermutation()
815 PetscInt nodeIdxDim = ni->nodeIdxDim; in PetscLagNodeIndicesGetPermutation()
824 for (j = 0; j < nodeIdxDim; j++) sorter[k++] = ni->nodeIdx[l++]; in PetscLagNodeIndicesGetPermutation()
849 ni->perm = prm; in PetscLagNodeIndicesGetPermutation()
852 *perm = ni->perm; in PetscLagNodeIndicesGetPermutation()
1353 PetscLagNodeIndices ni; in PetscDualSpaceLagrangeCreateSimplexNodeMat() local
1360 PetscCall(PetscNew(&ni)); in PetscDualSpaceLagrangeCreateSimplexNodeMat()
1361 ni->nodeIdxDim = dim + 1; in PetscDualSpaceLagrangeCreateSimplexNodeMat()
1362 ni->nodeVecDim = Nk; in PetscDualSpaceLagrangeCreateSimplexNodeMat()
1363 ni->nNodes = nNodes * Nk; in PetscDualSpaceLagrangeCreateSimplexNodeMat()
1364 ni->refct = 1; in PetscDualSpaceLagrangeCreateSimplexNodeMat()
1365 PetscCall(PetscMalloc1(nNodes * Nk * (dim + 1), &ni->nodeIdx)); in PetscDualSpaceLagrangeCreateSimplexNodeMat()
1366 PetscCall(PetscMalloc1(nNodes * Nk * Nk, &ni->nodeVec)); in PetscDualSpaceLagrangeCreateSimplexNodeMat()
1369 for (k = 0; k < Nk; k++) ni->nodeVec[(i * Nk + j) * Nk + k] = (j == k) ? 1. : 0.; in PetscDualSpaceLagrangeCreateSimplexNodeMat()
1384 for (j = 0; j < dim + 1; j++) ni->nodeIdx[(k * Nk + c) * (dim + 1) + j] = tup[j] + 1; in PetscDualSpaceLagrangeCreateSimplexNodeMat()
1406 ni->nodeIdx[(k * Nk + c) * (dim + 1) + j] = tup[j] + 1; in PetscDualSpaceLagrangeCreateSimplexNodeMat()
1428 *nodeIndices = ni; in PetscDualSpaceLagrangeCreateSimplexNodeMat()
1443 PetscLagNodeIndices ni, verti; in PetscDualSpaceLagrangeCreateAllNodeIdx() local
1454 PetscCall(PetscNew(&ni)); in PetscDualSpaceLagrangeCreateAllNodeIdx()
1455 ni->nodeIdxDim = nodeIdxDim = verti->nodeIdxDim; in PetscDualSpaceLagrangeCreateAllNodeIdx()
1456 ni->nodeVecDim = Nk; in PetscDualSpaceLagrangeCreateAllNodeIdx()
1457 ni->nNodes = nDofs; in PetscDualSpaceLagrangeCreateAllNodeIdx()
1458 ni->refct = 1; in PetscDualSpaceLagrangeCreateAllNodeIdx()
1459 PetscCall(PetscMalloc1(nodeIdxDim * nDofs, &ni->nodeIdx)); in PetscDualSpaceLagrangeCreateAllNodeIdx()
1460 PetscCall(PetscMalloc1(Nk * nDofs, &ni->nodeVec)); in PetscDualSpaceLagrangeCreateAllNodeIdx()
1464 PetscCall(PetscArraycpy(ni->nodeIdx, lag->intNodeIndices->nodeIdx, spintdim * nodeIdxDim)); in PetscDualSpaceLagrangeCreateAllNodeIdx()
1465 PetscCall(PetscArraycpy(ni->nodeVec, lag->intNodeIndices->nodeVec, spintdim * Nk)); in PetscDualSpaceLagrangeCreateAllNodeIdx()
1476 …, plag->vertIndices, plag->intNodeIndices, 0, formDegree, &ni->nodeIdx[off * nodeIdxDim], &ni->nod… in PetscDualSpaceLagrangeCreateAllNodeIdx()
1478 lag->allNodeIndices = ni; in PetscDualSpaceLagrangeCreateAllNodeIdx()
1944 static PetscErrorCode MatPermuteByNodeIdx(Mat A, PetscLagNodeIndices ni, Mat *Aperm) in MatPermuteByNodeIdx() argument
1947 PetscInt nodeIdxDim = ni->nodeIdxDim; in MatPermuteByNodeIdx()
1948 PetscInt nodeVecDim = ni->nodeVecDim; in MatPermuteByNodeIdx()
1956 PetscCall(PetscLagNodeIndicesGetPermutation(ni, &perm)); in MatPermuteByNodeIdx()
1961 …for (j = 0; j < nodeIdxDim; j++) nIdxPerm[i * nodeIdxDim + j] = ni->nodeIdx[perm[i] * nodeIdxDim +… in MatPermuteByNodeIdx()
1963 …for (j = 0; j < nodeVecDim; j++) nVecPerm[i * nodeVecDim + j] = ni->nodeVec[perm[i] * nodeVecDim +… in MatPermuteByNodeIdx()
1972 PetscCall(PetscFree(ni->nodeIdx)); in MatPermuteByNodeIdx()
1973 PetscCall(PetscFree(ni->nodeVec)); in MatPermuteByNodeIdx()
1974 ni->nodeIdx = nIdxPerm; in MatPermuteByNodeIdx()
1975 ni->nodeVec = nVecPerm; in MatPermuteByNodeIdx()
2469 PetscLagNodeIndices ni; in PetscDualSpaceCreateInteriorSymmetryMatrix_Lagrange() local
2489 PetscCall(PetscNew(&ni)); in PetscDualSpaceCreateInteriorSymmetryMatrix_Lagrange()
2490 ni->refct = 1; in PetscDualSpaceCreateInteriorSymmetryMatrix_Lagrange()
2491 ni->nodeIdxDim = nodeIdxDim = intNodeIndices->nodeIdxDim; in PetscDualSpaceCreateInteriorSymmetryMatrix_Lagrange()
2492 ni->nodeVecDim = nodeVecDim = intNodeIndices->nodeVecDim; in PetscDualSpaceCreateInteriorSymmetryMatrix_Lagrange()
2493 ni->nNodes = nNodes = intNodeIndices->nNodes; in PetscDualSpaceCreateInteriorSymmetryMatrix_Lagrange()
2494 PetscCall(PetscMalloc1(nNodes * nodeIdxDim, &ni->nodeIdx)); in PetscDualSpaceCreateInteriorSymmetryMatrix_Lagrange()
2495 PetscCall(PetscMalloc1(nNodes * nodeVecDim, &ni->nodeVec)); in PetscDualSpaceCreateInteriorSymmetryMatrix_Lagrange()
2497 …ward(dm, vertIndices, 0, vertIndices, intNodeIndices, ornt, formDegree, ni->nodeIdx, ni->nodeVec)); in PetscDualSpaceCreateInteriorSymmetryMatrix_Lagrange()
2500 PetscCall(PetscLagNodeIndicesGetPermutation(ni, &permOrnt)); in PetscDualSpaceCreateInteriorSymmetryMatrix_Lagrange()
2503 PetscInt *nind = &(ni->nodeIdx[permOrnt[n] * nodeIdxDim]); in PetscDualSpaceCreateInteriorSymmetryMatrix_Lagrange()
2508 PetscInt *mind = &(ni->nodeIdx[permOrnt[nEnd] * nodeIdxDim]); in PetscDualSpaceCreateInteriorSymmetryMatrix_Lagrange()
2548 PetscInt *nind = &(ni->nodeIdx[permOrnt[n] * nodeIdxDim]); in PetscDualSpaceCreateInteriorSymmetryMatrix_Lagrange()
2553 PetscInt *mind = &(ni->nodeIdx[permOrnt[nEnd] * nodeIdxDim]); in PetscDualSpaceCreateInteriorSymmetryMatrix_Lagrange()
2568 W[(m - n) * nodeVecDim + d] = ni->nodeVec[permOrnt[m] * nodeVecDim + d]; in PetscDualSpaceCreateInteriorSymmetryMatrix_Lagrange()
2603 …for (d = 0; d < nodeVecDim; d++) W[(m - n) * nodeVecDim + d] = ni->nodeVec[permOrnt[m] * nodeVecDi… in PetscDualSpaceCreateInteriorSymmetryMatrix_Lagrange()
2622 PetscCall(PetscLagNodeIndicesDestroy(&ni)); in PetscDualSpaceCreateInteriorSymmetryMatrix_Lagrange()