Lines Matching refs:fem
112 PetscErrorCode PetscFESetType(PetscFE fem, PetscFEType name) in PetscFESetType() argument
118 PetscValidHeaderSpecific(fem, PETSCFE_CLASSID, 1); in PetscFESetType()
119 PetscCall(PetscObjectTypeCompare((PetscObject)fem, name, &match)); in PetscFESetType()
124 …PetscCheck(r, PetscObjectComm((PetscObject)fem), PETSC_ERR_ARG_UNKNOWN_TYPE, "Unknown PetscFE type… in PetscFESetType()
126 PetscTryTypeMethod(fem, destroy); in PetscFESetType()
127 fem->ops->destroy = NULL; in PetscFESetType()
129 PetscCall((*r)(fem)); in PetscFESetType()
130 PetscCall(PetscObjectChangeTypeName((PetscObject)fem, name)); in PetscFESetType()
149 PetscErrorCode PetscFEGetType(PetscFE fem, PetscFEType *name) in PetscFEGetType() argument
152 PetscValidHeaderSpecific(fem, PETSCFE_CLASSID, 1); in PetscFEGetType()
155 *name = ((PetscObject)fem)->type_name; in PetscFEGetType()
194 PetscErrorCode PetscFEView(PetscFE fem, PetscViewer viewer) in PetscFEView() argument
199 PetscValidHeaderSpecific(fem, PETSCFE_CLASSID, 1); in PetscFEView()
201 if (!viewer) PetscCall(PetscViewerASCIIGetStdout(PetscObjectComm((PetscObject)fem), &viewer)); in PetscFEView()
202 PetscCall(PetscObjectPrintClassNamePrefixType((PetscObject)fem, viewer)); in PetscFEView()
204 PetscTryTypeMethod(fem, view, viewer); in PetscFEView()
224 PetscErrorCode PetscFESetFromOptions(PetscFE fem) in PetscFESetFromOptions() argument
231 PetscValidHeaderSpecific(fem, PETSCFE_CLASSID, 1); in PetscFESetFromOptions()
232 if (!((PetscObject)fem)->type_name) { in PetscFESetFromOptions()
235 defaultType = ((PetscObject)fem)->type_name; in PetscFESetFromOptions()
239 PetscObjectOptionsBegin((PetscObject)fem); in PetscFESetFromOptions()
242 PetscCall(PetscFESetType(fem, name)); in PetscFESetFromOptions()
243 } else if (!((PetscObject)fem)->type_name) { in PetscFESetFromOptions()
244 PetscCall(PetscFESetType(fem, defaultType)); in PetscFESetFromOptions()
246 …cell blocks to integrate concurrently", "PetscSpaceSetTileSizes", fem->numBlocks, &fem->numBlocks,… in PetscFESetFromOptions()
247 …of cell batches to integrate serially", "PetscSpaceSetTileSizes", fem->numBatches, &fem->numBatche… in PetscFESetFromOptions()
248 PetscTryTypeMethod(fem, setfromoptions, PetscOptionsObject); in PetscFESetFromOptions()
250 PetscCall(PetscObjectProcessOptionsHandlers((PetscObject)fem, PetscOptionsObject)); in PetscFESetFromOptions()
252 PetscCall(PetscFEViewFromOptions(fem, NULL, "-petscfe_view")); in PetscFESetFromOptions()
268 PetscErrorCode PetscFESetUp(PetscFE fem) in PetscFESetUp() argument
271 PetscValidHeaderSpecific(fem, PETSCFE_CLASSID, 1); in PetscFESetUp()
272 if (fem->setupcalled) PetscFunctionReturn(PETSC_SUCCESS); in PetscFESetUp()
273 PetscCall(PetscLogEventBegin(PETSCFE_SetUp, fem, 0, 0, 0)); in PetscFESetUp()
274 fem->setupcalled = PETSC_TRUE; in PetscFESetUp()
275 PetscTryTypeMethod(fem, setup); in PetscFESetUp()
276 PetscCall(PetscLogEventEnd(PETSCFE_SetUp, fem, 0, 0, 0)); in PetscFESetUp()
292 PetscErrorCode PetscFEDestroy(PetscFE *fem) in PetscFEDestroy() argument
295 if (!*fem) PetscFunctionReturn(PETSC_SUCCESS); in PetscFEDestroy()
296 PetscValidHeaderSpecific(*fem, PETSCFE_CLASSID, 1); in PetscFEDestroy()
298 if (--((PetscObject)*fem)->refct > 0) { in PetscFEDestroy()
299 *fem = NULL; in PetscFEDestroy()
302 ((PetscObject)*fem)->refct = 0; in PetscFEDestroy()
304 if ((*fem)->subspaces) { in PetscFEDestroy()
307 PetscCall(PetscDualSpaceGetDimension((*fem)->dualSpace, &dim)); in PetscFEDestroy()
308 for (d = 0; d < dim; ++d) PetscCall(PetscFEDestroy(&(*fem)->subspaces[d])); in PetscFEDestroy()
310 PetscCall(PetscFree((*fem)->subspaces)); in PetscFEDestroy()
311 PetscCall(PetscFree((*fem)->invV)); in PetscFEDestroy()
312 PetscCall(PetscTabulationDestroy(&(*fem)->T)); in PetscFEDestroy()
313 PetscCall(PetscTabulationDestroy(&(*fem)->Tf)); in PetscFEDestroy()
314 PetscCall(PetscTabulationDestroy(&(*fem)->Tc)); in PetscFEDestroy()
315 PetscCall(PetscSpaceDestroy(&(*fem)->basisSpace)); in PetscFEDestroy()
316 PetscCall(PetscDualSpaceDestroy(&(*fem)->dualSpace)); in PetscFEDestroy()
317 PetscCall(PetscQuadratureDestroy(&(*fem)->quadrature)); in PetscFEDestroy()
318 PetscCall(PetscQuadratureDestroy(&(*fem)->faceQuadrature)); in PetscFEDestroy()
320 PetscCallCEED(CeedBasisDestroy(&(*fem)->ceedBasis)); in PetscFEDestroy()
321 PetscCallCEED(CeedDestroy(&(*fem)->ceed)); in PetscFEDestroy()
324 PetscTryTypeMethod(*fem, destroy); in PetscFEDestroy()
325 PetscCall(PetscHeaderDestroy(fem)); in PetscFEDestroy()
344 PetscErrorCode PetscFECreate(MPI_Comm comm, PetscFE *fem) in PetscFECreate() argument
349 PetscAssertPointer(fem, 2); in PetscFECreate()
370 *fem = f; in PetscFECreate()
389 PetscErrorCode PetscFEGetSpatialDimension(PetscFE fem, PetscInt *dim) in PetscFEGetSpatialDimension() argument
394 PetscValidHeaderSpecific(fem, PETSCFE_CLASSID, 1); in PetscFEGetSpatialDimension()
396 PetscCall(PetscDualSpaceGetDM(fem->dualSpace, &dm)); in PetscFEGetSpatialDimension()
414 PetscErrorCode PetscFESetNumComponents(PetscFE fem, PetscInt comp) in PetscFESetNumComponents() argument
417 PetscValidHeaderSpecific(fem, PETSCFE_CLASSID, 1); in PetscFESetNumComponents()
418 fem->numComponents = comp; in PetscFESetNumComponents()
437 PetscErrorCode PetscFEGetNumComponents(PetscFE fem, PetscInt *comp) in PetscFEGetNumComponents() argument
440 PetscValidHeaderSpecific(fem, PETSCFE_CLASSID, 1); in PetscFEGetNumComponents()
442 *comp = fem->numComponents; in PetscFEGetNumComponents()
462 PetscErrorCode PetscFESetTileSizes(PetscFE fem, PetscInt blockSize, PetscInt numBlocks, PetscInt ba… in PetscFESetTileSizes() argument
465 PetscValidHeaderSpecific(fem, PETSCFE_CLASSID, 1); in PetscFESetTileSizes()
466 fem->blockSize = blockSize; in PetscFESetTileSizes()
467 fem->numBlocks = numBlocks; in PetscFESetTileSizes()
468 fem->batchSize = batchSize; in PetscFESetTileSizes()
469 fem->numBatches = numBatches; in PetscFESetTileSizes()
491 PetscErrorCode PetscFEGetTileSizes(PetscFE fem, PeOp PetscInt *blockSize, PeOp PetscInt *numBlocks,… in PetscFEGetTileSizes() argument
494 PetscValidHeaderSpecific(fem, PETSCFE_CLASSID, 1); in PetscFEGetTileSizes()
499 if (blockSize) *blockSize = fem->blockSize; in PetscFEGetTileSizes()
500 if (numBlocks) *numBlocks = fem->numBlocks; in PetscFEGetTileSizes()
501 if (batchSize) *batchSize = fem->batchSize; in PetscFEGetTileSizes()
502 if (numBatches) *numBatches = fem->numBatches; in PetscFEGetTileSizes()
521 PetscErrorCode PetscFEGetBasisSpace(PetscFE fem, PetscSpace *sp) in PetscFEGetBasisSpace() argument
524 PetscValidHeaderSpecific(fem, PETSCFE_CLASSID, 1); in PetscFEGetBasisSpace()
526 *sp = fem->basisSpace; in PetscFEGetBasisSpace()
546 PetscErrorCode PetscFESetBasisSpace(PetscFE fem, PetscSpace sp) in PetscFESetBasisSpace() argument
549 PetscValidHeaderSpecific(fem, PETSCFE_CLASSID, 1); in PetscFESetBasisSpace()
551 PetscCall(PetscSpaceDestroy(&fem->basisSpace)); in PetscFESetBasisSpace()
552 fem->basisSpace = sp; in PetscFESetBasisSpace()
553 PetscCall(PetscObjectReference((PetscObject)fem->basisSpace)); in PetscFESetBasisSpace()
572 PetscErrorCode PetscFEGetDualSpace(PetscFE fem, PetscDualSpace *sp) in PetscFEGetDualSpace() argument
575 PetscValidHeaderSpecific(fem, PETSCFE_CLASSID, 1); in PetscFEGetDualSpace()
577 *sp = fem->dualSpace; in PetscFEGetDualSpace()
594 PetscErrorCode PetscFESetDualSpace(PetscFE fem, PetscDualSpace sp) in PetscFESetDualSpace() argument
597 PetscValidHeaderSpecific(fem, PETSCFE_CLASSID, 1); in PetscFESetDualSpace()
599 PetscCall(PetscDualSpaceDestroy(&fem->dualSpace)); in PetscFESetDualSpace()
600 fem->dualSpace = sp; in PetscFESetDualSpace()
601 PetscCall(PetscObjectReference((PetscObject)fem->dualSpace)); in PetscFESetDualSpace()
620 PetscErrorCode PetscFEGetQuadrature(PetscFE fem, PetscQuadrature *q) in PetscFEGetQuadrature() argument
623 PetscValidHeaderSpecific(fem, PETSCFE_CLASSID, 1); in PetscFEGetQuadrature()
625 *q = fem->quadrature; in PetscFEGetQuadrature()
642 PetscErrorCode PetscFESetQuadrature(PetscFE fem, PetscQuadrature q) in PetscFESetQuadrature() argument
647 PetscValidHeaderSpecific(fem, PETSCFE_CLASSID, 1); in PetscFESetQuadrature()
648 if (q == fem->quadrature) PetscFunctionReturn(PETSC_SUCCESS); in PetscFESetQuadrature()
649 PetscCall(PetscFEGetNumComponents(fem, &Nc)); in PetscFESetQuadrature()
651 …PetscCheck(!(qNc != 1) || !(Nc != qNc), PetscObjectComm((PetscObject)fem), PETSC_ERR_ARG_SIZ, "FE … in PetscFESetQuadrature()
652 PetscCall(PetscTabulationDestroy(&fem->T)); in PetscFESetQuadrature()
653 PetscCall(PetscTabulationDestroy(&fem->Tc)); in PetscFESetQuadrature()
655 PetscCall(PetscQuadratureDestroy(&fem->quadrature)); in PetscFESetQuadrature()
656 fem->quadrature = q; in PetscFESetQuadrature()
678 PetscErrorCode PetscFEGetFaceQuadrature(PetscFE fem, PetscQuadrature *q) in PetscFEGetFaceQuadrature() argument
681 PetscValidHeaderSpecific(fem, PETSCFE_CLASSID, 1); in PetscFEGetFaceQuadrature()
683 *q = fem->faceQuadrature; in PetscFEGetFaceQuadrature()
700 PetscErrorCode PetscFESetFaceQuadrature(PetscFE fem, PetscQuadrature q) in PetscFESetFaceQuadrature() argument
705 PetscValidHeaderSpecific(fem, PETSCFE_CLASSID, 1); in PetscFESetFaceQuadrature()
706 if (q == fem->faceQuadrature) PetscFunctionReturn(PETSC_SUCCESS); in PetscFESetFaceQuadrature()
707 PetscCall(PetscFEGetNumComponents(fem, &Nc)); in PetscFESetFaceQuadrature()
709 …PetscCheck(!(qNc != 1) || !(Nc != qNc), PetscObjectComm((PetscObject)fem), PETSC_ERR_ARG_SIZ, "FE … in PetscFESetFaceQuadrature()
710 PetscCall(PetscTabulationDestroy(&fem->Tf)); in PetscFESetFaceQuadrature()
712 PetscCall(PetscQuadratureDestroy(&fem->faceQuadrature)); in PetscFESetFaceQuadrature()
713 fem->faceQuadrature = q; in PetscFESetFaceQuadrature()
759 PetscErrorCode PetscFEGetNumDof(PetscFE fem, const PetscInt *numDof[]) in PetscFEGetNumDof() argument
762 PetscValidHeaderSpecific(fem, PETSCFE_CLASSID, 1); in PetscFEGetNumDof()
764 PetscCall(PetscDualSpaceGetNumDof(fem->dualSpace, numDof)); in PetscFEGetNumDof()
791 PetscErrorCode PetscFEGetCellTabulation(PetscFE fem, PetscInt k, PetscTabulation *T) in PetscFEGetCellTabulation() argument
797 PetscValidHeaderSpecific(fem, PETSCFE_CLASSID, 1); in PetscFEGetCellTabulation()
799 PetscCall(PetscQuadratureGetData(fem->quadrature, NULL, NULL, &npoints, &points, NULL)); in PetscFEGetCellTabulation()
800 if (!fem->T) PetscCall(PetscFECreateTabulation(fem, 1, npoints, points, k, &fem->T)); in PetscFEGetCellTabulation()
801 …fem->T || k <= fem->T->K || (!fem->T->cdim && !fem->T->K), PetscObjectComm((PetscObject)fem), PETS… in PetscFEGetCellTabulation()
802 *T = fem->T; in PetscFEGetCellTabulation()
868 PetscErrorCode PetscFEGetFaceTabulation(PetscFE fem, PetscInt k, PetscTabulation *Tf) in PetscFEGetFaceTabulation() argument
871 PetscValidHeaderSpecific(fem, PETSCFE_CLASSID, 1); in PetscFEGetFaceTabulation()
873 if (!fem->Tf) { in PetscFEGetFaceTabulation()
876 PetscCall(PetscFEGetFaceQuadrature(fem, &fq)); in PetscFEGetFaceTabulation()
882 PetscCall(PetscFEExpandFaceQuadrature(fem, fq, &efq)); in PetscFEGetFaceTabulation()
890 PetscCall(PetscFEGetDualSpace(fem, &sp)); in PetscFEGetFaceTabulation()
896 PetscCall(PetscFECreateTabulation(fem, eNp / Np, Np, facePoints, k, &fem->Tf)); in PetscFEGetFaceTabulation()
900 …fem->Tf || k <= fem->Tf->K, PetscObjectComm((PetscObject)fem), PETSC_ERR_ARG_OUTOFRANGE, "Requeste… in PetscFEGetFaceTabulation()
901 *Tf = fem->Tf; in PetscFEGetFaceTabulation()
925 PetscErrorCode PetscFEGetFaceCentroidTabulation(PetscFE fem, PetscTabulation *Tc) in PetscFEGetFaceCentroidTabulation() argument
928 PetscValidHeaderSpecific(fem, PETSCFE_CLASSID, 1); in PetscFEGetFaceCentroidTabulation()
930 if (!fem->Tc) { in PetscFEGetFaceCentroidTabulation()
937 PetscCall(PetscFEGetDualSpace(fem, &sp)); in PetscFEGetFaceCentroidTabulation()
944 PetscCall(PetscFECreateTabulation(fem, 1, numFaces, centroids, 0, &fem->Tc)); in PetscFEGetFaceCentroidTabulation()
947 *Tc = fem->Tc; in PetscFEGetFaceCentroidTabulation()
978 PetscErrorCode PetscFECreateTabulation(PetscFE fem, PetscInt nrepl, PetscInt npoints, const PetscRe… in PetscFECreateTabulation() argument
988 if (!npoints || !fem->dualSpace || K < 0) { in PetscFECreateTabulation()
992 PetscValidHeaderSpecific(fem, PETSCFE_CLASSID, 1); in PetscFECreateTabulation()
995 PetscCall(PetscFEGetDualSpace(fem, &Q)); in PetscFECreateTabulation()
999 PetscCall(PetscFEGetNumComponents(fem, &Nc)); in PetscFECreateTabulation()
1009 PetscUseTypeMethod(fem, computetabulation, nrepl * npoints, points, K, *T); in PetscFECreateTabulation()
1039 PetscErrorCode PetscFEComputeTabulation(PetscFE fem, PetscInt npoints, const PetscReal points[], Pe… in PetscFEComputeTabulation() argument
1042 if (!npoints || !fem->dualSpace || K < 0) PetscFunctionReturn(PETSC_SUCCESS); in PetscFEComputeTabulation()
1043 PetscValidHeaderSpecific(fem, PETSCFE_CLASSID, 1); in PetscFEComputeTabulation()
1053 PetscCall(PetscFEGetDualSpace(fem, &Q)); in PetscFEComputeTabulation()
1057 PetscCall(PetscFEGetNumComponents(fem, &Nc)); in PetscFEComputeTabulation()
1065 PetscUseTypeMethod(fem, computetabulation, npoints, points, K, T); in PetscFEComputeTabulation()
1191 PetscErrorCode PetscFEGetDimension(PetscFE fem, PetscInt *dim) in PetscFEGetDimension() argument
1194 PetscValidHeaderSpecific(fem, PETSCFE_CLASSID, 1); in PetscFEGetDimension()
1196 PetscTryTypeMethod(fem, getdimension, dim); in PetscFEGetDimension()
1916 …eateFromSpaces(PetscSpace P, PetscDualSpace Q, PetscQuadrature q, PetscQuadrature fq, PetscFE *fem) in PetscFECreateFromSpaces() argument
1973 … PetscCall(PetscFECreateVector(scalar_fe, p_Ns, p_interleave_basis, p_interleave_components, fem)); in PetscFECreateFromSpaces()
1976 PetscCall(PetscFECreate(PetscObjectComm((PetscObject)P), fem)); in PetscFECreateFromSpaces()
1977 PetscCall(PetscFESetType(*fem, PETSCFEBASIC)); in PetscFECreateFromSpaces()
1980 PetscCall(PetscFESetNumComponents(*fem, Nc)); in PetscFECreateFromSpaces()
1981 PetscCall(PetscFESetBasisSpace(*fem, P)); in PetscFECreateFromSpaces()
1982 PetscCall(PetscFESetDualSpace(*fem, Q)); in PetscFECreateFromSpaces()
1984 PetscCall(PetscObjectSetOptionsPrefix((PetscObject)*fem, prefix)); in PetscFECreateFromSpaces()
1985 PetscCall(PetscFESetUp(*fem)); in PetscFECreateFromSpaces()
1988 PetscCall(PetscFESetQuadrature(*fem, q)); in PetscFECreateFromSpaces()
1989 PetscCall(PetscFESetFaceQuadrature(*fem, fq)); in PetscFECreateFromSpaces()
1992 PetscCall(PetscFESetDefaultName_Private(*fem)); in PetscFECreateFromSpaces()
1996 … ct, const char prefix[], PetscInt degree, PetscInt qorder, PetscBool setFromOptions, PetscFE *fem) in PetscFECreate_Internal() argument
2006 PetscAssertPointer(fem, 9); in PetscFECreate_Internal()
2095 PetscCall(PetscFECreateFromSpaces(P, Q, q, fq, fem)); in PetscFECreate_Internal()
2096 if (setFromOptions) PetscCall(PetscFESetFromOptions(*fem)); in PetscFECreate_Internal()
2123 …PetscInt dim, PetscInt Nc, PetscBool isSimplex, const char prefix[], PetscInt qorder, PetscFE *fem) in PetscFECreateDefault() argument
2126 …im, Nc, DMPolytopeTypeSimpleShape(dim, isSimplex), prefix, PETSC_DECIDE, qorder, PETSC_TRUE, fem)); in PetscFECreateDefault()
2153 …, PetscInt dim, PetscInt Nc, DMPolytopeType ct, const char prefix[], PetscInt qorder, PetscFE *fem) in PetscFECreateByCell() argument
2156 …PetscCall(PetscFECreate_Internal(comm, dim, Nc, ct, prefix, PETSC_DECIDE, qorder, PETSC_TRUE, fem)… in PetscFECreateByCell()
2183 …mm comm, PetscInt dim, PetscInt Nc, PetscBool isSimplex, PetscInt k, PetscInt qorder, PetscFE *fem) in PetscFECreateLagrange() argument
2186 …rnal(comm, dim, Nc, DMPolytopeTypeSimpleShape(dim, isSimplex), NULL, k, qorder, PETSC_FALSE, fem)); in PetscFECreateLagrange()
2213 …Comm comm, PetscInt dim, PetscInt Nc, DMPolytopeType ct, PetscInt k, PetscInt qorder, PetscFE *fem) in PetscFECreateLagrangeByCell() argument
2216 PetscCall(PetscFECreate_Internal(comm, dim, Nc, ct, NULL, k, qorder, PETSC_FALSE, fem)); in PetscFECreateLagrangeByCell()