Lines Matching refs:sp
28 static PetscErrorCode PetscSpaceSetFromOptions_Tensor(PetscSpace sp, PetscOptionItems PetscOptionsO… in PetscSpaceSetFromOptions_Tensor() argument
30 PetscSpace_Tensor *tens = (PetscSpace_Tensor *)sp->data; in PetscSpaceSetFromOptions_Tensor()
35 PetscCall(PetscSpaceGetNumVariables(sp, &Nv)); in PetscSpaceSetFromOptions_Tensor()
37 PetscCall(PetscSpaceGetNumComponents(sp, &Nc)); in PetscSpaceSetFromOptions_Tensor()
38 PetscCall(PetscSpaceTensorGetNumSubspaces(sp, &Ns)); in PetscSpaceSetFromOptions_Tensor()
39 PetscCall(PetscSpaceGetDegree(sp, °, NULL)); in PetscSpaceSetFromOptions_Tensor()
43 PetscCall(PetscSpaceTensorGetSubspace(sp, 0, &s0)); in PetscSpaceSetFromOptions_Tensor()
47 PetscCall(PetscSpaceTensorGetSubspace(sp, i, &si)); in PetscSpaceSetFromOptions_Tensor()
59 …PetscCheck(Ns >= 0 && (Nv <= 0 || Ns != 0), PetscObjectComm((PetscObject)sp), PETSC_ERR_ARG_OUTOFR… in PetscSpaceSetFromOptions_Tensor()
60 …PetscCheck(Nv <= 0 || Ns <= Nv, PetscObjectComm((PetscObject)sp), PETSC_ERR_ARG_OUTOFRANGE, "Canno… in PetscSpaceSetFromOptions_Tensor()
61 if (Ns != tens->numTensSpaces) PetscCall(PetscSpaceTensorSetNumSubspaces(sp, Ns)); in PetscSpaceSetFromOptions_Tensor()
67 …PetscCheck(Nv % Ns == 0, PetscObjectComm((PetscObject)sp), PETSC_ERR_ARG_WRONG, "Cannot use %" Pet… in PetscSpaceSetFromOptions_Tensor()
69 …PetscCheck(Nc % PetscPowInt(Ncs, Ns) == 0, PetscObjectComm((PetscObject)sp), PETSC_ERR_ARG_WRONG, … in PetscSpaceSetFromOptions_Tensor()
70 PetscCall(PetscSpaceTensorGetSubspace(sp, 0, &subspace)); in PetscSpaceSetFromOptions_Tensor()
71 if (!subspace) PetscCall(PetscSpaceTensorCreateSubspace(sp, Nvs, Ncs, &subspace)); in PetscSpaceSetFromOptions_Tensor()
74 for (i = 0; i < Ns; i++) PetscCall(PetscSpaceTensorSetSubspace(sp, i, subspace)); in PetscSpaceSetFromOptions_Tensor()
80 PetscCall(PetscSpaceTensorGetSubspace(sp, i, &subspace)); in PetscSpaceSetFromOptions_Tensor()
84 PetscCall(PetscSpaceTensorCreateSubspace(sp, 1, 1, &subspace)); in PetscSpaceSetFromOptions_Tensor()
89 PetscCall(PetscSpaceTensorSetSubspace(sp, i, subspace)); in PetscSpaceSetFromOptions_Tensor()
96 static PetscErrorCode PetscSpaceTensorView_Ascii(PetscSpace sp, PetscViewer v) in PetscSpaceTensorView_Ascii() argument
98 PetscSpace_Tensor *tens = (PetscSpace_Tensor *)sp->data; in PetscSpaceTensorView_Ascii()
120 static PetscErrorCode PetscSpaceView_Tensor(PetscSpace sp, PetscViewer viewer) in PetscSpaceView_Tensor() argument
126 if (isascii) PetscCall(PetscSpaceTensorView_Ascii(sp, viewer)); in PetscSpaceView_Tensor()
130 static PetscErrorCode PetscSpaceSetUp_Tensor(PetscSpace sp) in PetscSpaceSetUp_Tensor() argument
132 PetscSpace_Tensor *tens = (PetscSpace_Tensor *)sp->data; in PetscSpaceSetUp_Tensor()
140 PetscCall(PetscSpaceGetNumVariables(sp, &Nv)); in PetscSpaceSetUp_Tensor()
141 PetscCall(PetscSpaceGetNumComponents(sp, &Nc)); in PetscSpaceSetUp_Tensor()
142 PetscCall(PetscSpaceTensorGetNumSubspaces(sp, &Ns)); in PetscSpaceSetUp_Tensor()
145 PetscCall(PetscSpaceTensorSetNumSubspaces(sp, Ns)); in PetscSpaceSetUp_Tensor()
148 … SETERRQ(PetscObjectComm((PetscObject)sp), PETSC_ERR_ARG_OUTOFRANGE, "Cannot have zero subspaces"); in PetscSpaceSetUp_Tensor()
152 …PetscCheck(Nv <= 0 || Ns <= Nv, PetscObjectComm((PetscObject)sp), PETSC_ERR_ARG_OUTOFRANGE, "Canno… in PetscSpaceSetUp_Tensor()
153 PetscCall(PetscSpaceTensorGetSubspace(sp, 0, &s0)); in PetscSpaceSetUp_Tensor()
157 PetscCall(PetscSpaceTensorGetSubspace(sp, i, &si)); in PetscSpaceSetUp_Tensor()
167 …PetscCheck(Nv % Ns == 0, PetscObjectComm((PetscObject)sp), PETSC_ERR_ARG_WRONG, "Cannot use %" Pet… in PetscSpaceSetUp_Tensor()
169 …PetscCheck(Nc % PetscPowInt(Ncs, Ns) == 0, PetscObjectComm((PetscObject)sp), PETSC_ERR_ARG_WRONG, … in PetscSpaceSetUp_Tensor()
170 if (!s0) PetscCall(PetscSpaceTensorCreateSubspace(sp, Nvs, Ncs, &s0)); in PetscSpaceSetUp_Tensor()
173 for (PetscInt i = 0; i < Ns; i++) PetscCall(PetscSpaceTensorSetSubspace(sp, i, s0)); in PetscSpaceSetUp_Tensor()
184 PetscCall(PetscSpaceTensorGetSubspace(sp, i, &si)); in PetscSpaceSetUp_Tensor()
185 if (!si) PetscCall(PetscSpaceTensorCreateSubspace(sp, 1, 1, &si)); in PetscSpaceSetUp_Tensor()
188 PetscCall(PetscSpaceTensorSetSubspace(sp, i, si)); in PetscSpaceSetUp_Tensor()
197 …PetscCheck(Nvsum == Nv, PetscObjectComm((PetscObject)sp), PETSC_ERR_ARG_WRONG, "Sum of subspace va… in PetscSpaceSetUp_Tensor()
198 …PetscCheck(Nc % Ncprod == 0, PetscObjectComm((PetscObject)sp), PETSC_ERR_ARG_WRONG, "Product of su… in PetscSpaceSetUp_Tensor()
202 PetscInt Nv = sp->Nv; in PetscSpaceSetUp_Tensor()
208 PetscCall(PetscSpaceCreate(PetscObjectComm((PetscObject)sp), &subsp)); in PetscSpaceSetUp_Tensor()
209 PetscCall(PetscObjectGetOptionsPrefix((PetscObject)sp, &prefix)); in PetscSpaceSetUp_Tensor()
212 if (((PetscObject)sp)->name) { in PetscSpaceSetUp_Tensor()
213 PetscCall(PetscObjectGetName((PetscObject)sp, &name)); in PetscSpaceSetUp_Tensor()
224 PetscCall(PetscSpaceTensorGetSubspace(sp, i, &ssp)); in PetscSpaceSetUp_Tensor()
228 PetscCall(PetscSpaceSetType(sp, PETSCSPACESUM)); in PetscSpaceSetUp_Tensor()
229 PetscCall(PetscSpaceSumSetNumSubspaces(sp, Ncopies)); in PetscSpaceSetUp_Tensor()
230 for (PetscInt i = 0; i < Ncopies; i++) PetscCall(PetscSpaceSumSetSubspace(sp, i, subsp)); in PetscSpaceSetUp_Tensor()
232 PetscCall(PetscSpaceSetUp(sp)); in PetscSpaceSetUp_Tensor()
242 PetscCall(PetscSpaceTensorGetSubspace(sp, i, &si)); in PetscSpaceSetUp_Tensor()
247 sp->degree = deg; in PetscSpaceSetUp_Tensor()
248 sp->maxDegree = maxDeg; in PetscSpaceSetUp_Tensor()
254 static PetscErrorCode PetscSpaceDestroy_Tensor(PetscSpace sp) in PetscSpaceDestroy_Tensor() argument
256 PetscSpace_Tensor *tens = (PetscSpace_Tensor *)sp->data; in PetscSpaceDestroy_Tensor()
266 for (d = 0; d < sp->Nv; ++d) PetscCall(PetscSpaceDestroy(&tens->heightsubspaces[d])); in PetscSpaceDestroy_Tensor()
270 PetscCall(PetscObjectComposeFunction((PetscObject)sp, "PetscSpaceTensorSetSubspace_C", NULL)); in PetscSpaceDestroy_Tensor()
271 PetscCall(PetscObjectComposeFunction((PetscObject)sp, "PetscSpaceTensorGetSubspace_C", NULL)); in PetscSpaceDestroy_Tensor()
272 PetscCall(PetscObjectComposeFunction((PetscObject)sp, "PetscSpaceTensorSetNumSubspaces_C", NULL)); in PetscSpaceDestroy_Tensor()
273 PetscCall(PetscObjectComposeFunction((PetscObject)sp, "PetscSpaceTensorGetNumSubspaces_C", NULL)); in PetscSpaceDestroy_Tensor()
279 static PetscErrorCode PetscSpaceGetDimension_Tensor(PetscSpace sp, PetscInt *dim) in PetscSpaceGetDimension_Tensor() argument
281 PetscSpace_Tensor *tens = (PetscSpace_Tensor *)sp->data; in PetscSpaceGetDimension_Tensor()
285 PetscCall(PetscSpaceSetUp(sp)); in PetscSpaceGetDimension_Tensor()
298 static PetscErrorCode PetscSpaceEvaluate_Tensor(PetscSpace sp, PetscInt npoints, const PetscReal po… in PetscSpaceEvaluate_Tensor() argument
300 PetscSpace_Tensor *tens = (PetscSpace_Tensor *)sp->data; in PetscSpaceEvaluate_Tensor()
301 DM dm = sp->dm; in PetscSpaceEvaluate_Tensor()
302 PetscInt Nc = sp->Nc; in PetscSpaceEvaluate_Tensor()
303 PetscInt Nv = sp->Nv; in PetscSpaceEvaluate_Tensor()
310 PetscCall(PetscSpaceSetUp(sp)); in PetscSpaceEvaluate_Tensor()
311 PetscCall(PetscSpaceEvaluate(sp, npoints, points, B, D, H)); in PetscSpaceEvaluate_Tensor()
315 PetscCall(PetscSpaceGetDimension(sp, &pdim)); in PetscSpaceEvaluate_Tensor()
444 PetscErrorCode PetscSpaceTensorSetNumSubspaces(PetscSpace sp, PetscInt numTensSpaces) in PetscSpaceTensorSetNumSubspaces() argument
447 PetscValidHeaderSpecific(sp, PETSCSPACE_CLASSID, 1); in PetscSpaceTensorSetNumSubspaces()
448 …PetscTryMethod(sp, "PetscSpaceTensorSetNumSubspaces_C", (PetscSpace, PetscInt), (sp, numTensSpaces… in PetscSpaceTensorSetNumSubspaces()
468 PetscErrorCode PetscSpaceTensorGetNumSubspaces(PetscSpace sp, PetscInt *numTensSpaces) in PetscSpaceTensorGetNumSubspaces() argument
471 PetscValidHeaderSpecific(sp, PETSCSPACE_CLASSID, 1); in PetscSpaceTensorGetNumSubspaces()
473 …PetscTryMethod(sp, "PetscSpaceTensorGetNumSubspaces_C", (PetscSpace, PetscInt *), (sp, numTensSpac… in PetscSpaceTensorGetNumSubspaces()
492 PetscErrorCode PetscSpaceTensorSetSubspace(PetscSpace sp, PetscInt s, PetscSpace subsp) in PetscSpaceTensorSetSubspace() argument
495 PetscValidHeaderSpecific(sp, PETSCSPACE_CLASSID, 1); in PetscSpaceTensorSetSubspace()
497 …PetscTryMethod(sp, "PetscSpaceTensorSetSubspace_C", (PetscSpace, PetscInt, PetscSpace), (sp, s, su… in PetscSpaceTensorSetSubspace()
518 PetscErrorCode PetscSpaceTensorGetSubspace(PetscSpace sp, PetscInt s, PetscSpace *subsp) in PetscSpaceTensorGetSubspace() argument
521 PetscValidHeaderSpecific(sp, PETSCSPACE_CLASSID, 1); in PetscSpaceTensorGetSubspace()
523 …PetscTryMethod(sp, "PetscSpaceTensorGetSubspace_C", (PetscSpace, PetscInt, PetscSpace *), (sp, s, … in PetscSpaceTensorGetSubspace()
572 static PetscErrorCode PetscSpaceGetHeightSubspace_Tensor(PetscSpace sp, PetscInt height, PetscSpace… in PetscSpaceGetHeightSubspace_Tensor() argument
574 PetscSpace_Tensor *tens = (PetscSpace_Tensor *)sp->data; in PetscSpaceGetHeightSubspace_Tensor()
579 PetscCall(PetscSpaceGetNumVariables(sp, &dim)); in PetscSpaceGetHeightSubspace_Tensor()
581 PetscCall(PetscSpaceGetNumComponents(sp, &Nc)); in PetscSpaceGetHeightSubspace_Tensor()
582 PetscCall(PetscSpaceGetDegree(sp, &order, NULL)); in PetscSpaceGetHeightSubspace_Tensor()
590 PetscCall(PetscSpaceTensorGetSubspace(sp, 0, &bsp)); in PetscSpaceGetHeightSubspace_Tensor()
591 PetscCall(PetscSpaceCreate(PetscObjectComm((PetscObject)sp), &sub)); in PetscSpaceGetHeightSubspace_Tensor()
592 PetscCall(PetscObjectGetName((PetscObject)sp, &name)); in PetscSpaceGetHeightSubspace_Tensor()
623 static PetscErrorCode PetscSpaceInitialize_Tensor(PetscSpace sp) in PetscSpaceInitialize_Tensor() argument
626 sp->ops->setfromoptions = PetscSpaceSetFromOptions_Tensor; in PetscSpaceInitialize_Tensor()
627 sp->ops->setup = PetscSpaceSetUp_Tensor; in PetscSpaceInitialize_Tensor()
628 sp->ops->view = PetscSpaceView_Tensor; in PetscSpaceInitialize_Tensor()
629 sp->ops->destroy = PetscSpaceDestroy_Tensor; in PetscSpaceInitialize_Tensor()
630 sp->ops->getdimension = PetscSpaceGetDimension_Tensor; in PetscSpaceInitialize_Tensor()
631 sp->ops->evaluate = PetscSpaceEvaluate_Tensor; in PetscSpaceInitialize_Tensor()
632 sp->ops->getheightsubspace = PetscSpaceGetHeightSubspace_Tensor; in PetscSpaceInitialize_Tensor()
633 …PetscCall(PetscObjectComposeFunction((PetscObject)sp, "PetscSpaceTensorGetNumSubspaces_C", PetscSp… in PetscSpaceInitialize_Tensor()
634 …PetscCall(PetscObjectComposeFunction((PetscObject)sp, "PetscSpaceTensorSetNumSubspaces_C", PetscSp… in PetscSpaceInitialize_Tensor()
635 …PetscCall(PetscObjectComposeFunction((PetscObject)sp, "PetscSpaceTensorGetSubspace_C", PetscSpaceT… in PetscSpaceInitialize_Tensor()
636 …PetscCall(PetscObjectComposeFunction((PetscObject)sp, "PetscSpaceTensorSetSubspace_C", PetscSpaceT… in PetscSpaceInitialize_Tensor()
650 PETSC_EXTERN PetscErrorCode PetscSpaceCreate_Tensor(PetscSpace sp) in PetscSpaceCreate_Tensor() argument
655 PetscValidHeaderSpecific(sp, PETSCSPACE_CLASSID, 1); in PetscSpaceCreate_Tensor()
657 sp->data = tens; in PetscSpaceCreate_Tensor()
661 PetscCall(PetscSpaceInitialize_Tensor(sp)); in PetscSpaceCreate_Tensor()