Lines Matching refs:sp

3 static PetscErrorCode PetscSpaceSetFromOptions_Polynomial(PetscSpace sp, PetscOptionItems PetscOpti…  in PetscSpaceSetFromOptions_Polynomial()  argument
5 PetscSpace_Poly *poly = (PetscSpace_Poly *)sp->data; in PetscSpaceSetFromOptions_Polynomial()
14 static PetscErrorCode PetscSpacePolynomialView_Ascii(PetscSpace sp, PetscViewer v) in PetscSpacePolynomialView_Ascii() argument
16 PetscSpace_Poly *poly = (PetscSpace_Poly *)sp->data; in PetscSpacePolynomialView_Ascii()
19 …ce of degree %" PetscInt_FMT "\n", poly->tensor ? "Tensor polynomial" : "Polynomial", sp->degree)); in PetscSpacePolynomialView_Ascii()
23 static PetscErrorCode PetscSpaceView_Polynomial(PetscSpace sp, PetscViewer viewer) in PetscSpaceView_Polynomial() argument
28 PetscValidHeaderSpecific(sp, PETSCSPACE_CLASSID, 1); in PetscSpaceView_Polynomial()
31 if (isascii) PetscCall(PetscSpacePolynomialView_Ascii(sp, viewer)); in PetscSpaceView_Polynomial()
35 static PetscErrorCode PetscSpaceDestroy_Polynomial(PetscSpace sp) in PetscSpaceDestroy_Polynomial() argument
37 PetscSpace_Poly *poly = (PetscSpace_Poly *)sp->data; in PetscSpaceDestroy_Polynomial()
40 PetscCall(PetscObjectComposeFunction((PetscObject)sp, "PetscSpacePolynomialGetTensor_C", NULL)); in PetscSpaceDestroy_Polynomial()
41 PetscCall(PetscObjectComposeFunction((PetscObject)sp, "PetscSpacePolynomialSetTensor_C", NULL)); in PetscSpaceDestroy_Polynomial()
45 for (d = 0; d < sp->Nv; ++d) PetscCall(PetscSpaceDestroy(&poly->subspaces[d])); in PetscSpaceDestroy_Polynomial()
52 static PetscErrorCode PetscSpaceSetUp_Polynomial(PetscSpace sp) in PetscSpaceSetUp_Polynomial() argument
54 PetscSpace_Poly *poly = (PetscSpace_Poly *)sp->data; in PetscSpaceSetUp_Polynomial()
58 if (sp->Nv <= 1) poly->tensor = PETSC_FALSE; in PetscSpaceSetUp_Polynomial()
59 if (sp->Nc != 1) { in PetscSpaceSetUp_Polynomial()
60 PetscInt Nc = sp->Nc; in PetscSpaceSetUp_Polynomial()
62 PetscInt Nv = sp->Nv; in PetscSpaceSetUp_Polynomial()
63 PetscInt degree = sp->degree; in PetscSpaceSetUp_Polynomial()
69 PetscCall(PetscSpaceSetType(sp, PETSCSPACESUM)); in PetscSpaceSetUp_Polynomial()
70 PetscCall(PetscSpaceSumSetNumSubspaces(sp, Nc)); in PetscSpaceSetUp_Polynomial()
71 PetscCall(PetscSpaceSumSetInterleave(sp, PETSC_TRUE, PETSC_FALSE)); in PetscSpaceSetUp_Polynomial()
72 PetscCall(PetscSpaceCreate(PetscObjectComm((PetscObject)sp), &subsp)); in PetscSpaceSetUp_Polynomial()
73 PetscCall(PetscObjectGetOptionsPrefix((PetscObject)sp, &prefix)); in PetscSpaceSetUp_Polynomial()
76 if (((PetscObject)sp)->name) { in PetscSpaceSetUp_Polynomial()
77 PetscCall(PetscObjectGetName((PetscObject)sp, &name)); in PetscSpaceSetUp_Polynomial()
87 for (PetscInt i = 0; i < Nc; i++) PetscCall(PetscSpaceSumSetSubspace(sp, i, subsp)); in PetscSpaceSetUp_Polynomial()
89 PetscCall(PetscSpaceSetUp(sp)); in PetscSpaceSetUp_Polynomial()
93 sp->maxDegree = PETSC_DETERMINE; in PetscSpaceSetUp_Polynomial()
94 PetscCall(PetscSpaceSetType(sp, PETSCSPACETENSOR)); in PetscSpaceSetUp_Polynomial()
95 PetscCall(PetscSpaceSetUp(sp)); in PetscSpaceSetUp_Polynomial()
98 …PetscCheck(sp->degree >= 0, PetscObjectComm((PetscObject)sp), PETSC_ERR_ARG_OUTOFRANGE, "Negative … in PetscSpaceSetUp_Polynomial()
99 sp->maxDegree = sp->degree; in PetscSpaceSetUp_Polynomial()
104 static PetscErrorCode PetscSpaceGetDimension_Polynomial(PetscSpace sp, PetscInt *dim) in PetscSpaceGetDimension_Polynomial() argument
106 PetscInt deg = sp->degree; in PetscSpaceGetDimension_Polynomial()
107 PetscInt n = sp->Nv; in PetscSpaceGetDimension_Polynomial()
111 *dim *= sp->Nc; in PetscSpaceGetDimension_Polynomial()
135 static PetscErrorCode PetscSpaceEvaluate_Polynomial(PetscSpace sp, PetscInt npoints, const PetscRea… in PetscSpaceEvaluate_Polynomial() argument
137 PetscSpace_Poly *poly = (PetscSpace_Poly *)sp->data; in PetscSpaceEvaluate_Polynomial()
138 DM dm = sp->dm; in PetscSpaceEvaluate_Polynomial()
139 PetscInt dim = sp->Nv; in PetscSpaceEvaluate_Polynomial()
145 PetscCall(PetscSpaceSetUp(sp)); in PetscSpaceEvaluate_Polynomial()
146 PetscCall(PetscSpaceEvaluate(sp, npoints, points, B, D, H)); in PetscSpaceEvaluate_Polynomial()
149 …PetscCheck(!poly->tensor && sp->Nc == 1, PETSC_COMM_SELF, PETSC_ERR_PLIB, "tensor and multicompone… in PetscSpaceEvaluate_Polynomial()
150 PetscCall(PetscDTBinomialInt(dim + sp->degree, dim, &Nb)); in PetscSpaceEvaluate_Polynomial()
163 if (sp->degree == 1) { in PetscSpaceEvaluate_Polynomial()
166 PetscCall(PetscDTPKDEvalJet(dim, npoints, points, sp->degree, jet, pScalar)); in PetscSpaceEvaluate_Polynomial()
247 PetscErrorCode PetscSpacePolynomialSetTensor(PetscSpace sp, PetscBool tensor) in PetscSpacePolynomialSetTensor() argument
250 PetscValidHeaderSpecific(sp, PETSCSPACE_CLASSID, 1); in PetscSpacePolynomialSetTensor()
251 PetscTryMethod(sp, "PetscSpacePolynomialSetTensor_C", (PetscSpace, PetscBool), (sp, tensor)); in PetscSpacePolynomialSetTensor()
274 PetscErrorCode PetscSpacePolynomialGetTensor(PetscSpace sp, PetscBool *tensor) in PetscSpacePolynomialGetTensor() argument
277 PetscValidHeaderSpecific(sp, PETSCSPACE_CLASSID, 1); in PetscSpacePolynomialGetTensor()
279 PetscTryMethod(sp, "PetscSpacePolynomialGetTensor_C", (PetscSpace, PetscBool *), (sp, tensor)); in PetscSpacePolynomialGetTensor()
283 static PetscErrorCode PetscSpacePolynomialSetTensor_Polynomial(PetscSpace sp, PetscBool tensor) in PetscSpacePolynomialSetTensor_Polynomial() argument
285 PetscSpace_Poly *poly = (PetscSpace_Poly *)sp->data; in PetscSpacePolynomialSetTensor_Polynomial()
292 static PetscErrorCode PetscSpacePolynomialGetTensor_Polynomial(PetscSpace sp, PetscBool *tensor) in PetscSpacePolynomialGetTensor_Polynomial() argument
294 PetscSpace_Poly *poly = (PetscSpace_Poly *)sp->data; in PetscSpacePolynomialGetTensor_Polynomial()
297 PetscValidHeaderSpecific(sp, PETSCSPACE_CLASSID, 1); in PetscSpacePolynomialGetTensor_Polynomial()
303 static PetscErrorCode PetscSpaceGetHeightSubspace_Polynomial(PetscSpace sp, PetscInt height, PetscS… in PetscSpaceGetHeightSubspace_Polynomial() argument
305 PetscSpace_Poly *poly = (PetscSpace_Poly *)sp->data; in PetscSpaceGetHeightSubspace_Polynomial()
310 PetscCall(PetscSpaceGetNumComponents(sp, &Nc)); in PetscSpaceGetHeightSubspace_Polynomial()
311 PetscCall(PetscSpaceGetNumVariables(sp, &dim)); in PetscSpaceGetHeightSubspace_Polynomial()
312 PetscCall(PetscSpaceGetDegree(sp, &order, NULL)); in PetscSpaceGetHeightSubspace_Polynomial()
313 PetscCall(PetscSpacePolynomialGetTensor(sp, &tensor)); in PetscSpaceGetHeightSubspace_Polynomial()
321 PetscCall(PetscSpaceCreate(PetscObjectComm((PetscObject)sp), &sub)); in PetscSpaceGetHeightSubspace_Polynomial()
322 PetscCall(PetscObjectGetName((PetscObject)sp, &name)); in PetscSpaceGetHeightSubspace_Polynomial()
339 static PetscErrorCode PetscSpaceInitialize_Polynomial(PetscSpace sp) in PetscSpaceInitialize_Polynomial() argument
342 sp->ops->setfromoptions = PetscSpaceSetFromOptions_Polynomial; in PetscSpaceInitialize_Polynomial()
343 sp->ops->setup = PetscSpaceSetUp_Polynomial; in PetscSpaceInitialize_Polynomial()
344 sp->ops->view = PetscSpaceView_Polynomial; in PetscSpaceInitialize_Polynomial()
345 sp->ops->destroy = PetscSpaceDestroy_Polynomial; in PetscSpaceInitialize_Polynomial()
346 sp->ops->getdimension = PetscSpaceGetDimension_Polynomial; in PetscSpaceInitialize_Polynomial()
347 sp->ops->evaluate = PetscSpaceEvaluate_Polynomial; in PetscSpaceInitialize_Polynomial()
348 sp->ops->getheightsubspace = PetscSpaceGetHeightSubspace_Polynomial; in PetscSpaceInitialize_Polynomial()
349 …PetscCall(PetscObjectComposeFunction((PetscObject)sp, "PetscSpacePolynomialGetTensor_C", PetscSpac… in PetscSpaceInitialize_Polynomial()
350 …PetscCall(PetscObjectComposeFunction((PetscObject)sp, "PetscSpacePolynomialSetTensor_C", PetscSpac… in PetscSpaceInitialize_Polynomial()
363 PETSC_EXTERN PetscErrorCode PetscSpaceCreate_Polynomial(PetscSpace sp) in PetscSpaceCreate_Polynomial() argument
368 PetscValidHeaderSpecific(sp, PETSCSPACE_CLASSID, 1); in PetscSpaceCreate_Polynomial()
370 sp->data = poly; in PetscSpaceCreate_Polynomial()
375 PetscCall(PetscSpaceInitialize_Polynomial(sp)); in PetscSpaceCreate_Polynomial()