Lines Matching refs:sp
23 PetscErrorCode PetscDualSpaceRefinedSetCellSpaces(PetscDualSpace sp, const PetscDualSpace cellSpace… in PetscDualSpaceRefinedSetCellSpaces() argument
26 PetscValidHeaderSpecific(sp, PETSCDUALSPACE_CLASSID, 1); in PetscDualSpaceRefinedSetCellSpaces()
28 …PetscCheck(!sp->setupcalled, PetscObjectComm((PetscObject)sp), PETSC_ERR_ARG_WRONGSTATE, "Cannot c… in PetscDualSpaceRefinedSetCellSpaces()
29 …PetscTryMethod(sp, "PetscDualSpaceRefinedSetCellSpaces_C", (PetscDualSpace, const PetscDualSpace[]… in PetscDualSpaceRefinedSetCellSpaces()
33 static PetscErrorCode PetscDualSpaceRefinedSetCellSpaces_Refined(PetscDualSpace sp, const PetscDual… in PetscDualSpaceRefinedSetCellSpaces_Refined() argument
40 dm = sp->dm; in PetscDualSpaceRefinedSetCellSpaces_Refined()
41 …PetscCheck(dm, PetscObjectComm((PetscObject)sp), PETSC_ERR_ARG_WRONGSTATE, "PetscDualSpace must ha… in PetscDualSpaceRefinedSetCellSpaces_Refined()
43 if (!sp->pointSpaces) PetscCall(PetscCalloc1(pEnd - pStart, &sp->pointSpaces)); in PetscDualSpaceRefinedSetCellSpaces_Refined()
47 PetscCall(PetscDualSpaceDestroy(&sp->pointSpaces[c + cStart - pStart])); in PetscDualSpaceRefinedSetCellSpaces_Refined()
48 sp->pointSpaces[c + cStart - pStart] = cellSpaces[c]; in PetscDualSpaceRefinedSetCellSpaces_Refined()
53 static PetscErrorCode PetscDualSpaceDestroy_Refined(PetscDualSpace sp) in PetscDualSpaceDestroy_Refined() argument
55 PetscDualSpace_Refined *ref = (PetscDualSpace_Refined *)sp->data; in PetscDualSpaceDestroy_Refined()
58 …PetscCall(PetscObjectComposeFunction((PetscObject)sp, "PetscDualSpaceRefinedSetCellSpaces_C", NULL… in PetscDualSpaceDestroy_Refined()
63 static PetscErrorCode PetscDualSpaceSetUp_Refined(PetscDualSpace sp) in PetscDualSpaceSetUp_Refined() argument
72 PetscCall(PetscDualSpaceGetDM(sp, &dm)); in PetscDualSpaceSetUp_Refined()
77 if (sp->pointSpaces[c - pStart]) { in PetscDualSpaceSetUp_Refined()
79 …PetscCheck(sp->pointSpaces[c - pStart]->k == sp->k, PetscObjectComm((PetscObject)sp), PETSC_ERR_AR… in PetscDualSpaceSetUp_Refined()
80 …PetscCheck(sp->pointSpaces[c - pStart]->Nc == sp->Nc, PetscObjectComm((PetscObject)sp), PETSC_ERR_… in PetscDualSpaceSetUp_Refined()
81 PetscCall(DMPlexGetHeightStratum(sp->pointSpaces[c - pStart]->dm, 0, &ccStart, &ccEnd)); in PetscDualSpaceSetUp_Refined()
82 …PetscCheck(ccEnd - ccStart == 1, PetscObjectComm((PetscObject)sp), PETSC_ERR_ARG_INCOMP, "All cell… in PetscDualSpaceSetUp_Refined()
86 if (sp->pointSpaces[c - pStart]) { in PetscDualSpaceSetUp_Refined()
89 PetscCall(PetscDualSpaceGetUniform(sp->pointSpaces[c - pStart], &cUniform)); in PetscDualSpaceSetUp_Refined()
92 if ((c > cStart) && sp->pointSpaces[c - pStart] != sp->pointSpaces[c - 1 - pStart]) break; in PetscDualSpaceSetUp_Refined()
94 if (c < cEnd) sp->uniform = PETSC_FALSE; in PetscDualSpaceSetUp_Refined()
101 PetscDualSpace cspace = sp->pointSpaces[c - pStart]; in PetscDualSpaceSetUp_Refined()
115 if (sp->pointSpaces[point - pStart] == NULL) { in PetscDualSpaceSetUp_Refined()
117 sp->pointSpaces[point - pStart] = espace; in PetscDualSpaceSetUp_Refined()
122 PetscCall(PetscDualSpaceGetSection(sp, §ion)); in PetscDualSpaceSetUp_Refined()
123 PetscCall(PetscDualSpaceGetDimension(sp, &spdim)); in PetscDualSpaceSetUp_Refined()
124 PetscCall(PetscMalloc1(spdim, &sp->functional)); in PetscDualSpaceSetUp_Refined()
125 PetscCall(PetscDualSpacePushForwardSubspaces_Internal(sp, pStart, pEnd)); in PetscDualSpaceSetUp_Refined()
129 static PetscErrorCode PetscDualSpaceRefinedView_Ascii(PetscDualSpace sp, PetscViewer viewer) in PetscDualSpaceRefinedView_Ascii() argument
132 if (sp->dm && sp->pointSpaces) { in PetscDualSpaceRefinedView_Ascii()
136 PetscCall(DMPlexGetChart(sp->dm, &pStart, &pEnd)); in PetscDualSpaceRefinedView_Ascii()
137 PetscCall(DMPlexGetHeightStratum(sp->dm, 0, &cStart, &cEnd)); in PetscDualSpaceRefinedView_Ascii()
141 if (!sp->pointSpaces[c - pStart]) { in PetscDualSpaceRefinedView_Ascii()
146 PetscCall(PetscDualSpaceView(sp->pointSpaces[c - pStart], viewer)); in PetscDualSpaceRefinedView_Ascii()
155 static PetscErrorCode PetscDualSpaceView_Refined(PetscDualSpace sp, PetscViewer viewer) in PetscDualSpaceView_Refined() argument
160 PetscValidHeaderSpecific(sp, PETSCDUALSPACE_CLASSID, 1); in PetscDualSpaceView_Refined()
163 if (isascii) PetscCall(PetscDualSpaceRefinedView_Ascii(sp, viewer)); in PetscDualSpaceView_Refined()
167 static PetscErrorCode PetscDualSpaceInitialize_Refined(PetscDualSpace sp) in PetscDualSpaceInitialize_Refined() argument
170 sp->ops->destroy = PetscDualSpaceDestroy_Refined; in PetscDualSpaceInitialize_Refined()
171 sp->ops->view = PetscDualSpaceView_Refined; in PetscDualSpaceInitialize_Refined()
172 sp->ops->setfromoptions = NULL; in PetscDualSpaceInitialize_Refined()
173 sp->ops->duplicate = NULL; in PetscDualSpaceInitialize_Refined()
174 sp->ops->setup = PetscDualSpaceSetUp_Refined; in PetscDualSpaceInitialize_Refined()
175 sp->ops->createheightsubspace = NULL; in PetscDualSpaceInitialize_Refined()
176 sp->ops->createpointsubspace = NULL; in PetscDualSpaceInitialize_Refined()
177 sp->ops->getsymmetries = NULL; in PetscDualSpaceInitialize_Refined()
178 sp->ops->apply = PetscDualSpaceApplyDefault; in PetscDualSpaceInitialize_Refined()
179 sp->ops->applyall = PetscDualSpaceApplyAllDefault; in PetscDualSpaceInitialize_Refined()
180 sp->ops->applyint = PetscDualSpaceApplyInteriorDefault; in PetscDualSpaceInitialize_Refined()
181 sp->ops->createalldata = PetscDualSpaceCreateAllDataDefault; in PetscDualSpaceInitialize_Refined()
182 sp->ops->createintdata = PetscDualSpaceCreateInteriorDataDefault; in PetscDualSpaceInitialize_Refined()
193 PETSC_EXTERN PetscErrorCode PetscDualSpaceCreate_Refined(PetscDualSpace sp) in PetscDualSpaceCreate_Refined() argument
198 PetscValidHeaderSpecific(sp, PETSCDUALSPACE_CLASSID, 1); in PetscDualSpaceCreate_Refined()
200 sp->data = ref; in PetscDualSpaceCreate_Refined()
202 PetscCall(PetscDualSpaceInitialize_Refined(sp)); in PetscDualSpaceCreate_Refined()
203 …PetscCall(PetscObjectComposeFunction((PetscObject)sp, "PetscDualSpaceRefinedSetCellSpaces_C", Pets… in PetscDualSpaceCreate_Refined()