:orphan: # PetscFECreateTabulation Tabulates the basis functions, and perhaps derivatives, at the points provided. ## Synopsis ``` #include "petscfe.h" PetscErrorCode PetscFECreateTabulation(PetscFE fem, PetscInt nrepl, PetscInt npoints, const PetscReal points[], PetscInt K, PetscTabulation *T) ``` Not Collective ## Input Parameters - ***fem -*** The `PetscFE` object - ***nrepl -*** The number of replicas - ***npoints -*** The number of tabulation points in a replica - ***points -*** The tabulation point coordinates - ***K -*** The number of derivatives calculated ## Output Parameter - ***T -*** The basis function values and derivatives at tabulation points ## Note ```none T->T[0] = B[(p*pdim + i)*Nc + c] is the value at point p for basis function i and component c T->T[1] = D[((p*pdim + i)*Nc + c)*dim + d] is the derivative value at point p for basis function i, component c, in direction d T->T[2] = H[(((p*pdim + i)*Nc + c)*dim + d)*dim + e] is the value at point p for basis function i, component c, in directions d and e .seealso: `PetscTabulation`, `PetscFEGetCellTabulation()`, `PetscTabulationDestroy()` @*/ PetscErrorCode PetscFECreateTabulation(PetscFE fem, PetscInt nrepl, PetscInt npoints, const PetscReal points[], PetscInt K, PetscTabulation *T) { DM dm; PetscDualSpace Q; PetscInt Nb; /* Dimension of FE space P */ PetscInt Nc; /* Field components */ PetscInt cdim; /* Reference coordinate dimension */ PetscInt k; PetscFunctionBegin; if (!npoints || !fem->dualSpace || K < 0) { *T = NULL; PetscFunctionReturn(PETSC_SUCCESS); } PetscValidHeaderSpecific(fem, PETSCFE_CLASSID, 1); PetscValidRealPointer(points, 4); PetscValidPointer(T, 6); PetscCall(PetscFEGetDualSpace(fem, &Q)); PetscCall(PetscDualSpaceGetDM(Q, &dm)); PetscCall(DMGetDimension(dm, &cdim)); PetscCall(PetscDualSpaceGetDimension(Q, &Nb)); PetscCall(PetscFEGetNumComponents(fem, &Nc)); PetscCall(PetscMalloc1(1, T)); (*T)->K = !cdim ? 0 : K; (*T)->Nr = nrepl; (*T)->Np = npoints; (*T)->Nb = Nb; (*T)->Nc = Nc; (*T)->cdim = cdim; PetscCall(PetscMalloc1((*T)->K + 1, &(*T)->T)); for (k = 0; k <= (*T)->K; ++k) PetscCall(PetscMalloc1(nrepl * npoints * Nb * Nc * PetscPowInt(cdim, k), &(*T)->T[k])); PetscUseTypeMethod(fem, createtabulation, nrepl * npoints, points, K, *T); PetscFunctionReturn(PETSC_SUCCESS); } /*@C PetscFEComputeTabulation - Tabulates the basis functions, and perhaps derivatives, at the points provided. Not Collective Input Parameters: + fem - The `PetscFE` object . npoints - The number of tabulation points . points - The tabulation point coordinates . K - The number of derivatives calculated - T - An existing tabulation object with enough allocated space Output Parameter: . T - The basis function values and derivatives at tabulation points Note: .vb T->T[0] = B[(p*pdim + i)*Nc + c] is the value at point p for basis function i and component c T->T[1] = D[((p*pdim + i)*Nc + c)*dim + d] is the derivative value at point p for basis function i, component c, in direction d T->T[2] = H[(((p*pdim + i)*Nc + c)*dim + d)*dim + e] is the value at point p for basis function i, component c, in directions d and e ``` ## See Also `PetscTabulation`, `PetscFEGetCellTabulation()`, `PetscTabulationDestroy()` ## Level intermediate ## Location src/dm/dt/fe/interface/fe.c ## Implementations PetscFECreateTabulation_Basic in src/dm/dt/fe/impls/basic/febasic.c
PetscFECreateTabulation_Composite in src/dm/dt/fe/impls/composite/fecomposite.c
--- [Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/dm/dt/fe/interface/fe.c) [Index of all FE routines](index.md) [Table of Contents for all manual pages](/manualpages/index.md) [Index of all manual pages](/manualpages/singleindex.md)