Lines Matching refs:label
30 PetscErrorCode DMLabelCreate(MPI_Comm comm, const char name[], DMLabel *label) in DMLabelCreate() argument
33 PetscAssertPointer(label, 3); in DMLabelCreate()
36 …PetscCall(PetscHeaderCreate(*label, DMLABEL_CLASSID, "DMLabel", "DMLabel", "DM", comm, DMLabelDest… in DMLabelCreate()
37 (*label)->numStrata = 0; in DMLabelCreate()
38 (*label)->defaultValue = -1; in DMLabelCreate()
39 (*label)->stratumValues = NULL; in DMLabelCreate()
40 (*label)->validIS = NULL; in DMLabelCreate()
41 (*label)->stratumSizes = NULL; in DMLabelCreate()
42 (*label)->points = NULL; in DMLabelCreate()
43 (*label)->ht = NULL; in DMLabelCreate()
44 (*label)->pStart = -1; in DMLabelCreate()
45 (*label)->pEnd = -1; in DMLabelCreate()
46 (*label)->bt = NULL; in DMLabelCreate()
47 PetscCall(PetscHMapICreate(&(*label)->hmap)); in DMLabelCreate()
48 PetscCall(PetscObjectSetName((PetscObject)*label, name)); in DMLabelCreate()
49 PetscCall(DMLabelSetType(*label, DMLABELCONCRETE)); in DMLabelCreate()
65 PetscErrorCode DMLabelSetUp(DMLabel label) in DMLabelSetUp() argument
68 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelSetUp()
69 PetscTryTypeMethod(label, setup); in DMLabelSetUp()
89 static PetscErrorCode DMLabelMakeValid_Private(DMLabel label, PetscInt v) in DMLabelMakeValid_Private() argument
95 …if ((PetscLikely(v >= 0 && v < label->numStrata) && label->validIS[v]) || label->readonly) PetscFu… in DMLabelMakeValid_Private()
96 …PetscCheck(v >= 0 && v < label->numStrata, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONG, "Trying to access… in DMLabelMakeValid_Private()
97 PetscCall(PetscHSetIGetSize(label->ht[v], &label->stratumSizes[v])); in DMLabelMakeValid_Private()
98 PetscCall(PetscMalloc1(label->stratumSizes[v], &pointArray)); in DMLabelMakeValid_Private()
99 PetscCall(PetscHSetIGetElems(label->ht[v], &off, pointArray)); in DMLabelMakeValid_Private()
100 PetscCall(PetscHSetIClear(label->ht[v])); in DMLabelMakeValid_Private()
101 PetscCall(PetscSortInt(label->stratumSizes[v], pointArray)); in DMLabelMakeValid_Private()
102 if (label->bt) { in DMLabelMakeValid_Private()
103 for (p = 0; p < label->stratumSizes[v]; ++p) { in DMLabelMakeValid_Private()
105 …label->pStart) && !(point >= label->pEnd), PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "Label point… in DMLabelMakeValid_Private()
106 PetscCall(PetscBTSet(label->bt, point - label->pStart)); in DMLabelMakeValid_Private()
109 …if (label->stratumSizes[v] > 0 && pointArray[label->stratumSizes[v] - 1] == pointArray[0] + label-… in DMLabelMakeValid_Private()
110 PetscCall(ISCreateStride(PETSC_COMM_SELF, label->stratumSizes[v], pointArray[0], 1, &is)); in DMLabelMakeValid_Private()
113 …PetscCall(ISCreateGeneral(PETSC_COMM_SELF, label->stratumSizes[v], pointArray, PETSC_OWN_POINTER, … in DMLabelMakeValid_Private()
117 label->points[v] = is; in DMLabelMakeValid_Private()
118 label->validIS[v] = PETSC_TRUE; in DMLabelMakeValid_Private()
119 PetscCall(PetscObjectStateIncrease((PetscObject)label)); in DMLabelMakeValid_Private()
138 static PetscErrorCode DMLabelMakeAllValid_Private(DMLabel label) in DMLabelMakeAllValid_Private() argument
143 for (v = 0; v < label->numStrata; v++) PetscCall(DMLabelMakeValid_Private(label, v)); in DMLabelMakeAllValid_Private()
163 static PetscErrorCode DMLabelMakeInvalid_Private(DMLabel label, PetscInt v) in DMLabelMakeInvalid_Private() argument
169 …if ((PetscLikely(v >= 0 && v < label->numStrata) && !label->validIS[v]) || label->readonly) PetscF… in DMLabelMakeInvalid_Private()
170 …PetscCheck(v >= 0 && v < label->numStrata, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONG, "Trying to access… in DMLabelMakeInvalid_Private()
171 if (label->points[v]) { in DMLabelMakeInvalid_Private()
172 PetscCall(ISGetIndices(label->points[v], &points)); in DMLabelMakeInvalid_Private()
173 for (p = 0; p < label->stratumSizes[v]; ++p) PetscCall(PetscHSetIAdd(label->ht[v], points[p])); in DMLabelMakeInvalid_Private()
174 PetscCall(ISRestoreIndices(label->points[v], &points)); in DMLabelMakeInvalid_Private()
175 PetscCall(ISDestroy(&label->points[v])); in DMLabelMakeInvalid_Private()
177 label->validIS[v] = PETSC_FALSE; in DMLabelMakeInvalid_Private()
181 PetscErrorCode DMLabelMakeAllInvalid_Internal(DMLabel label) in DMLabelMakeAllInvalid_Internal() argument
186 for (v = 0; v < label->numStrata; v++) PetscCall(DMLabelMakeInvalid_Private(label, v)); in DMLabelMakeAllInvalid_Internal()
194 PetscErrorCode DMLabelLookupStratum(DMLabel label, PetscInt value, PetscInt *index) in DMLabelLookupStratum() argument
200 if (label->numStrata <= DMLABEL_LOOKUP_THRESHOLD || label->readonly) { in DMLabelLookupStratum()
201 for (v = 0; v < label->numStrata; ++v) in DMLabelLookupStratum()
202 if (label->stratumValues[v] == value) { in DMLabelLookupStratum()
207 PetscCall(PetscHMapIGet(label->hmap, value, index)); in DMLabelLookupStratum()
209 if (PetscDefined(USE_DEBUG) && !label->readonly) { /* Check strata hash map consistency */ in DMLabelLookupStratum()
211 PetscCall(PetscHMapIGetSize(label->hmap, &len)); in DMLabelLookupStratum()
212 …PetscCheck(len == label->numStrata, PETSC_COMM_SELF, PETSC_ERR_PLIB, "Inconsistent strata hash map… in DMLabelLookupStratum()
213 if (label->numStrata <= DMLABEL_LOOKUP_THRESHOLD) { in DMLabelLookupStratum()
214 PetscCall(PetscHMapIGet(label->hmap, value, &loc)); in DMLabelLookupStratum()
216 for (v = 0; v < label->numStrata; ++v) in DMLabelLookupStratum()
217 if (label->stratumValues[v] == value) { in DMLabelLookupStratum()
227 static inline PetscErrorCode DMLabelNewStratum(DMLabel label, PetscInt value, PetscInt *index) in DMLabelNewStratum() argument
235 PetscHMapI hmap = label->hmap; in DMLabelNewStratum()
238 v = label->numStrata; in DMLabelNewStratum()
239 tmpV = label->stratumValues; in DMLabelNewStratum()
240 tmpS = label->stratumSizes; in DMLabelNewStratum()
241 tmpH = label->ht; in DMLabelNewStratum()
242 tmpP = label->points; in DMLabelNewStratum()
243 tmpB = label->validIS; in DMLabelNewStratum()
266 label->numStrata = v + 1; in DMLabelNewStratum()
267 label->stratumValues = tmpV; in DMLabelNewStratum()
268 label->stratumSizes = tmpS; in DMLabelNewStratum()
269 label->ht = tmpH; in DMLabelNewStratum()
270 label->points = tmpP; in DMLabelNewStratum()
271 label->validIS = tmpB; in DMLabelNewStratum()
280 PetscCall(PetscObjectStateIncrease((PetscObject)label)); in DMLabelNewStratum()
285 static inline PetscErrorCode DMLabelLookupAddStratum(DMLabel label, PetscInt value, PetscInt *index) in DMLabelLookupAddStratum() argument
288 PetscCall(DMLabelLookupStratum(label, value, index)); in DMLabelLookupAddStratum()
289 if (*index < 0) PetscCall(DMLabelNewStratum(label, value, index)); in DMLabelLookupAddStratum()
293 PetscErrorCode DMLabelGetStratumSize_Private(DMLabel label, PetscInt v, PetscInt *size) in DMLabelGetStratumSize_Private() argument
298 if (label->readonly || label->validIS[v]) { in DMLabelGetStratumSize_Private()
299 *size = label->stratumSizes[v]; in DMLabelGetStratumSize_Private()
301 PetscCall(PetscHSetIGetSize(label->ht[v], size)); in DMLabelGetStratumSize_Private()
317 PetscErrorCode DMLabelAddStratum(DMLabel label, PetscInt value) in DMLabelAddStratum() argument
322 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelAddStratum()
323 …PetscCheck(!label->readonly, PetscObjectComm((PetscObject)label), PETSC_ERR_ARG_WRONG, "Read-only … in DMLabelAddStratum()
324 PetscCall(DMLabelLookupAddStratum(label, value, &v)); in DMLabelAddStratum()
342 PetscErrorCode DMLabelAddStrata(DMLabel label, PetscInt numStrata, const PetscInt stratumValues[]) in DMLabelAddStrata() argument
347 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelAddStrata()
349 …PetscCheck(!label->readonly, PetscObjectComm((PetscObject)label), PETSC_ERR_ARG_WRONG, "Read-only … in DMLabelAddStrata()
353 if (!label->numStrata) { /* Fast preallocation */ in DMLabelAddStrata()
359 PetscHMapI hmap = label->hmap; in DMLabelAddStrata()
366 label->numStrata = numStrata; in DMLabelAddStrata()
367 label->stratumValues = tmpV; in DMLabelAddStrata()
368 label->stratumSizes = tmpS; in DMLabelAddStrata()
369 label->ht = tmpH; in DMLabelAddStrata()
370 label->points = tmpP; in DMLabelAddStrata()
371 label->validIS = tmpB; in DMLabelAddStrata()
382 PetscCall(PetscObjectStateIncrease((PetscObject)label)); in DMLabelAddStrata()
384 for (v = 0; v < numStrata; ++v) PetscCall(DMLabelAddStratum(label, values[v])); in DMLabelAddStrata()
403 PetscErrorCode DMLabelAddStrataIS(DMLabel label, IS valueIS) in DMLabelAddStrataIS() argument
409 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelAddStrataIS()
411 …PetscCheck(!label->readonly, PetscObjectComm((PetscObject)label), PETSC_ERR_ARG_WRONG, "Read-only … in DMLabelAddStrataIS()
414 PetscCall(DMLabelAddStrata(label, numStrata, stratumValues)); in DMLabelAddStrataIS()
418 static PetscErrorCode DMLabelView_Concrete_Ascii(DMLabel label, PetscViewer viewer) in DMLabelView_Concrete_Ascii() argument
426 if (label) { in DMLabelView_Concrete_Ascii()
429 PetscCall(PetscObjectGetName((PetscObject)label, &name)); in DMLabelView_Concrete_Ascii()
431 …f (label->bt) PetscCall(PetscViewerASCIIPrintf(viewer, " Index has been calculated in [%" PetscIn… in DMLabelView_Concrete_Ascii()
432 for (v = 0; v < label->numStrata; ++v) { in DMLabelView_Concrete_Ascii()
433 const PetscInt value = label->stratumValues[v]; in DMLabelView_Concrete_Ascii()
437 PetscCall(ISGetIndices(label->points[v], &points)); in DMLabelView_Concrete_Ascii()
438 …for (p = 0; p < label->stratumSizes[v]; ++p) PetscCall(PetscViewerASCIISynchronizedPrintf(viewer, … in DMLabelView_Concrete_Ascii()
439 PetscCall(ISRestoreIndices(label->points[v], &points)); in DMLabelView_Concrete_Ascii()
447 static PetscErrorCode DMLabelView_Concrete(DMLabel label, PetscViewer viewer) in DMLabelView_Concrete() argument
453 if (isascii) PetscCall(DMLabelView_Concrete_Ascii(label, viewer)); in DMLabelView_Concrete()
470 PetscErrorCode DMLabelView(DMLabel label, PetscViewer viewer) in DMLabelView() argument
473 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelView()
474 if (!viewer) PetscCall(PetscViewerASCIIGetStdout(PetscObjectComm((PetscObject)label), &viewer)); in DMLabelView()
476 PetscCall(DMLabelMakeAllValid_Private(label)); in DMLabelView()
477 PetscUseTypeMethod(label, view, viewer); in DMLabelView()
498 PetscErrorCode DMLabelViewFromOptions(DMLabel label, PeOp PetscObject obj, const char name[]) in DMLabelViewFromOptions() argument
501 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelViewFromOptions()
502 PetscCall(PetscObjectViewFromOptions((PetscObject)label, obj, name)); in DMLabelViewFromOptions()
518 PetscErrorCode DMLabelReset(DMLabel label) in DMLabelReset() argument
523 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelReset()
524 for (v = 0; v < label->numStrata; ++v) { in DMLabelReset()
525 if (label->ht[v]) PetscCall(PetscHSetIDestroy(&label->ht[v])); in DMLabelReset()
526 PetscCall(ISDestroy(&label->points[v])); in DMLabelReset()
528 label->numStrata = 0; in DMLabelReset()
529 PetscCall(PetscFree(label->stratumValues)); in DMLabelReset()
530 PetscCall(PetscFree(label->stratumSizes)); in DMLabelReset()
531 PetscCall(PetscFree(label->ht)); in DMLabelReset()
532 PetscCall(PetscFree(label->points)); in DMLabelReset()
533 PetscCall(PetscFree(label->validIS)); in DMLabelReset()
534 PetscCall(PetscHMapIReset(label->hmap)); in DMLabelReset()
535 label->pStart = -1; in DMLabelReset()
536 label->pEnd = -1; in DMLabelReset()
537 PetscCall(PetscBTDestroy(&label->bt)); in DMLabelReset()
553 PetscErrorCode DMLabelDestroy(DMLabel *label) in DMLabelDestroy() argument
556 if (!*label) PetscFunctionReturn(PETSC_SUCCESS); in DMLabelDestroy()
557 PetscValidHeaderSpecific(*label, DMLABEL_CLASSID, 1); in DMLabelDestroy()
558 if (--((PetscObject)*label)->refct > 0) { in DMLabelDestroy()
559 *label = NULL; in DMLabelDestroy()
562 PetscCall(DMLabelReset(*label)); in DMLabelDestroy()
563 PetscCall(PetscHMapIDestroy(&(*label)->hmap)); in DMLabelDestroy()
564 PetscCall(PetscHeaderDestroy(label)); in DMLabelDestroy()
568 static PetscErrorCode DMLabelDuplicate_Concrete(DMLabel label, DMLabel *labelnew) in DMLabelDuplicate_Concrete() argument
571 for (PetscInt v = 0; v < label->numStrata; ++v) { in DMLabelDuplicate_Concrete()
573 PetscCall(PetscObjectReference((PetscObject)label->points[v])); in DMLabelDuplicate_Concrete()
574 (*labelnew)->points[v] = label->points[v]; in DMLabelDuplicate_Concrete()
577 PetscCall(PetscHMapIDuplicate(label->hmap, &(*labelnew)->hmap)); in DMLabelDuplicate_Concrete()
596 PetscErrorCode DMLabelDuplicate(DMLabel label, DMLabel *labelnew) in DMLabelDuplicate() argument
601 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelDuplicate()
602 PetscCall(DMLabelMakeAllValid_Private(label)); in DMLabelDuplicate()
603 PetscCall(PetscObjectGetName((PetscObject)label, &name)); in DMLabelDuplicate()
604 PetscCall(DMLabelCreate(PetscObjectComm((PetscObject)label), name, labelnew)); in DMLabelDuplicate()
606 (*labelnew)->numStrata = label->numStrata; in DMLabelDuplicate()
607 (*labelnew)->defaultValue = label->defaultValue; in DMLabelDuplicate()
608 (*labelnew)->readonly = label->readonly; in DMLabelDuplicate()
609 PetscCall(PetscMalloc1(label->numStrata, &(*labelnew)->stratumValues)); in DMLabelDuplicate()
610 PetscCall(PetscMalloc1(label->numStrata, &(*labelnew)->stratumSizes)); in DMLabelDuplicate()
611 PetscCall(PetscCalloc1(label->numStrata, &(*labelnew)->ht)); in DMLabelDuplicate()
612 PetscCall(PetscCalloc1(label->numStrata, &(*labelnew)->points)); in DMLabelDuplicate()
613 PetscCall(PetscMalloc1(label->numStrata, &(*labelnew)->validIS)); in DMLabelDuplicate()
614 for (PetscInt v = 0; v < label->numStrata; ++v) { in DMLabelDuplicate()
615 (*labelnew)->stratumValues[v] = label->stratumValues[v]; in DMLabelDuplicate()
616 (*labelnew)->stratumSizes[v] = label->stratumSizes[v]; in DMLabelDuplicate()
622 PetscUseTypeMethod(label, duplicate, labelnew); in DMLabelDuplicate()
748 PetscErrorCode DMLabelComputeIndex(DMLabel label) in DMLabelComputeIndex() argument
753 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelComputeIndex()
754 PetscCall(DMLabelMakeAllValid_Private(label)); in DMLabelComputeIndex()
755 for (v = 0; v < label->numStrata; ++v) { in DMLabelComputeIndex()
759 PetscCall(ISGetIndices(label->points[v], &points)); in DMLabelComputeIndex()
760 for (i = 0; i < label->stratumSizes[v]; ++i) { in DMLabelComputeIndex()
766 PetscCall(ISRestoreIndices(label->points[v], &points)); in DMLabelComputeIndex()
768 label->pStart = pStart == PETSC_INT_MAX ? -1 : pStart; in DMLabelComputeIndex()
769 label->pEnd = pEnd; in DMLabelComputeIndex()
770 PetscCall(DMLabelCreateIndex(label, label->pStart, label->pEnd)); in DMLabelComputeIndex()
788 PetscErrorCode DMLabelCreateIndex(DMLabel label, PetscInt pStart, PetscInt pEnd) in DMLabelCreateIndex() argument
793 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelCreateIndex()
794 PetscCall(DMLabelDestroyIndex(label)); in DMLabelCreateIndex()
795 PetscCall(DMLabelMakeAllValid_Private(label)); in DMLabelCreateIndex()
796 label->pStart = pStart; in DMLabelCreateIndex()
797 label->pEnd = pEnd; in DMLabelCreateIndex()
799 PetscCall(PetscBTCreate(pEnd - pStart, &label->bt)); in DMLabelCreateIndex()
800 for (v = 0; v < label->numStrata; ++v) { in DMLabelCreateIndex()
805 PetscUseTypeMethod(label, getstratumis, v, &pointIS); in DMLabelCreateIndex()
807 for (i = 0; i < label->stratumSizes[v]; ++i) { in DMLabelCreateIndex()
810 … PetscInt_FMT " is not in [%" PetscInt_FMT ", %" PetscInt_FMT ")", point, label->stratumValues[v],… in DMLabelCreateIndex()
811 PetscCall(PetscBTSet(label->bt, point - pStart)); in DMLabelCreateIndex()
813 PetscCall(ISRestoreIndices(label->points[v], &points)); in DMLabelCreateIndex()
831 PetscErrorCode DMLabelDestroyIndex(DMLabel label) in DMLabelDestroyIndex() argument
834 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelDestroyIndex()
835 label->pStart = -1; in DMLabelDestroyIndex()
836 label->pEnd = -1; in DMLabelDestroyIndex()
837 PetscCall(PetscBTDestroy(&label->bt)); in DMLabelDestroyIndex()
860 PetscErrorCode DMLabelGetBounds(DMLabel label, PetscInt *pStart, PetscInt *pEnd) in DMLabelGetBounds() argument
863 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelGetBounds()
864 if ((label->pStart == -1) && (label->pEnd == -1)) PetscCall(DMLabelComputeIndex(label)); in DMLabelGetBounds()
867 *pStart = label->pStart; in DMLabelGetBounds()
871 *pEnd = label->pEnd; in DMLabelGetBounds()
892 PetscErrorCode DMLabelHasValue(DMLabel label, PetscInt value, PetscBool *contains) in DMLabelHasValue() argument
897 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelHasValue()
899 PetscCall(DMLabelLookupStratum(label, value, &v)); in DMLabelHasValue()
923 PetscErrorCode DMLabelHasPoint(DMLabel label, PetscInt point, PetscBool *contains) in DMLabelHasPoint() argument
928 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelHasPoint()
931 PetscCall(DMLabelGetBounds(label, &pStart, &pEnd)); in DMLabelHasPoint()
932 PetscCall(DMLabelMakeAllValid_Private(label)); in DMLabelHasPoint()
933 …*contains = point >= pStart && point < pEnd && (PetscBTLookup(label->bt, point - label->pStart) ? … in DMLabelHasPoint()
954 PetscErrorCode DMLabelStratumHasPoint(DMLabel label, PetscInt value, PetscInt point, PetscBool *con… in DMLabelStratumHasPoint() argument
957 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelStratumHasPoint()
959 if (value == label->defaultValue) { in DMLabelStratumHasPoint()
962 PetscCall(DMLabelGetValue(label, point, &pointVal)); in DMLabelStratumHasPoint()
967 PetscCall(DMLabelLookupStratum(label, value, &v)); in DMLabelStratumHasPoint()
969 if (label->validIS[v] || label->readonly) { in DMLabelStratumHasPoint()
973 PetscUseTypeMethod(label, getstratumis, v, &is); in DMLabelStratumHasPoint()
978 PetscCall(PetscHSetIHas(label->ht[v], point, contains)); in DMLabelStratumHasPoint()
1003 PetscErrorCode DMLabelGetDefaultValue(DMLabel label, PetscInt *defaultValue) in DMLabelGetDefaultValue() argument
1006 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelGetDefaultValue()
1007 *defaultValue = label->defaultValue; in DMLabelGetDefaultValue()
1027 PetscErrorCode DMLabelSetDefaultValue(DMLabel label, PetscInt defaultValue) in DMLabelSetDefaultValue() argument
1030 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelSetDefaultValue()
1031 label->defaultValue = defaultValue; in DMLabelSetDefaultValue()
1056 PetscErrorCode DMLabelGetValue(DMLabel label, PetscInt point, PetscInt *value) in DMLabelGetValue() argument
1061 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelGetValue()
1063 *value = label->defaultValue; in DMLabelGetValue()
1064 for (v = 0; v < label->numStrata; ++v) { in DMLabelGetValue()
1065 if (label->validIS[v] || label->readonly) { in DMLabelGetValue()
1069 PetscUseTypeMethod(label, getstratumis, v, &is); in DMLabelGetValue()
1070 PetscCall(ISLocate(label->points[v], point, &i)); in DMLabelGetValue()
1073 *value = label->stratumValues[v]; in DMLabelGetValue()
1079 PetscCall(PetscHSetIHas(label->ht[v], point, &has)); in DMLabelGetValue()
1081 *value = label->stratumValues[v]; in DMLabelGetValue()
1104 PetscErrorCode DMLabelSetValue(DMLabel label, PetscInt point, PetscInt value) in DMLabelSetValue() argument
1109 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelSetValue()
1111 if (value == label->defaultValue) PetscFunctionReturn(PETSC_SUCCESS); in DMLabelSetValue()
1112 …PetscCheck(!label->readonly, PetscObjectComm((PetscObject)label), PETSC_ERR_ARG_WRONG, "Read-only … in DMLabelSetValue()
1113 PetscCall(DMLabelLookupAddStratum(label, value, &v)); in DMLabelSetValue()
1115 PetscCall(DMLabelMakeInvalid_Private(label, v)); in DMLabelSetValue()
1116 PetscCall(PetscHSetIAdd(label->ht[v], point)); in DMLabelSetValue()
1134 PetscErrorCode DMLabelClearValue(DMLabel label, PetscInt point, PetscInt value) in DMLabelClearValue() argument
1139 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelClearValue()
1140 …PetscCheck(!label->readonly, PetscObjectComm((PetscObject)label), PETSC_ERR_ARG_WRONG, "Read-only … in DMLabelClearValue()
1142 PetscCall(DMLabelLookupStratum(label, value, &v)); in DMLabelClearValue()
1145 …if (label->bt && point >= label->pStart && point < label->pEnd) PetscCall(PetscBTClear(label->bt, … in DMLabelClearValue()
1148 PetscCall(DMLabelMakeInvalid_Private(label, v)); in DMLabelClearValue()
1149 PetscCall(PetscHSetIDel(label->ht[v], point)); in DMLabelClearValue()
1167 PetscErrorCode DMLabelInsertIS(DMLabel label, IS is, PetscInt value) in DMLabelInsertIS() argument
1173 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelInsertIS()
1176 if (value == label->defaultValue) PetscFunctionReturn(PETSC_SUCCESS); in DMLabelInsertIS()
1177 …PetscCheck(!label->readonly, PetscObjectComm((PetscObject)label), PETSC_ERR_ARG_WRONG, "Read-only … in DMLabelInsertIS()
1178 PetscCall(DMLabelLookupAddStratum(label, value, &v)); in DMLabelInsertIS()
1180 PetscCall(DMLabelMakeInvalid_Private(label, v)); in DMLabelInsertIS()
1183 for (p = 0; p < n; ++p) PetscCall(PetscHSetIAdd(label->ht[v], points[p])); in DMLabelInsertIS()
1203 PetscErrorCode DMLabelGetNumValues(DMLabel label, PetscInt *numValues) in DMLabelGetNumValues() argument
1206 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelGetNumValues()
1208 *numValues = label->numStrata; in DMLabelGetNumValues()
1234 PetscErrorCode DMLabelGetValueIS(DMLabel label, IS *values) in DMLabelGetValueIS() argument
1237 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelGetValueIS()
1239 …PetscCall(ISCreateGeneral(PETSC_COMM_SELF, label->numStrata, label->stratumValues, PETSC_USE_POINT… in DMLabelGetValueIS()
1259 PetscErrorCode DMLabelGetValueBounds(DMLabel label, PetscInt *minValue, PetscInt *maxValue) in DMLabelGetValueBounds() argument
1264 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelGetValueBounds()
1265 for (PetscInt v = 0; v < label->numStrata; ++v) { in DMLabelGetValueBounds()
1266 min = PetscMin(min, label->stratumValues[v]); in DMLabelGetValueBounds()
1267 max = PetscMax(max, label->stratumValues[v]); in DMLabelGetValueBounds()
1300 PetscErrorCode DMLabelGetNonEmptyStratumValuesIS(DMLabel label, IS *values) in DMLabelGetNonEmptyStratumValuesIS() argument
1306 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelGetNonEmptyStratumValuesIS()
1308 PetscCall(PetscMalloc1(label->numStrata, &valuesArr)); in DMLabelGetNonEmptyStratumValuesIS()
1309 for (i = 0, j = 0; i < label->numStrata; i++) { in DMLabelGetNonEmptyStratumValuesIS()
1312 PetscCall(DMLabelGetStratumSize_Private(label, i, &n)); in DMLabelGetNonEmptyStratumValuesIS()
1313 if (n) valuesArr[j++] = label->stratumValues[i]; in DMLabelGetNonEmptyStratumValuesIS()
1315 if (j == label->numStrata) { in DMLabelGetNonEmptyStratumValuesIS()
1316 …PetscCall(ISCreateGeneral(PETSC_COMM_SELF, label->numStrata, label->stratumValues, PETSC_USE_POINT… in DMLabelGetNonEmptyStratumValuesIS()
1346 PetscErrorCode DMLabelGetValueISGlobal(MPI_Comm comm, DMLabel label, PetscBool get_nonempty, IS *va… in DMLabelGetValueISGlobal() argument
1354 if (label) PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 2); in DMLabelGetValueISGlobal()
1364 if (label) { in DMLabelGetValueISGlobal()
1365 if (get_nonempty) PetscCall(DMLabelGetNonEmptyStratumValuesIS(label, &is_values)); in DMLabelGetValueISGlobal()
1366 else PetscCall(DMLabelGetValueIS(label, &is_values)); in DMLabelGetValueISGlobal()
1425 PetscErrorCode DMLabelGetValueIndex(DMLabel label, PetscInt value, PetscInt *index) in DMLabelGetValueIndex() argument
1430 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelGetValueIndex()
1433 for (v = 0; v < label->numStrata; ++v) in DMLabelGetValueIndex()
1434 if (label->stratumValues[v] == value) break; in DMLabelGetValueIndex()
1435 if (v >= label->numStrata) *index = -1; in DMLabelGetValueIndex()
1456 PetscErrorCode DMLabelHasStratum(DMLabel label, PetscInt value, PetscBool *exists) in DMLabelHasStratum() argument
1461 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelHasStratum()
1463 PetscCall(DMLabelLookupStratum(label, value, &v)); in DMLabelHasStratum()
1484 PetscErrorCode DMLabelGetStratumSize(DMLabel label, PetscInt value, PetscInt *size) in DMLabelGetStratumSize() argument
1489 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelGetStratumSize()
1491 PetscCall(DMLabelLookupStratum(label, value, &v)); in DMLabelGetStratumSize()
1492 PetscCall(DMLabelGetStratumSize_Private(label, v, size)); in DMLabelGetStratumSize()
1513 PetscErrorCode DMLabelGetStratumBounds(DMLabel label, PetscInt value, PetscInt *start, PetscInt *en… in DMLabelGetStratumBounds() argument
1519 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelGetStratumBounds()
1528 PetscCall(DMLabelLookupStratum(label, value, &v)); in DMLabelGetStratumBounds()
1530 PetscCall(DMLabelMakeValid_Private(label, v)); in DMLabelGetStratumBounds()
1531 if (label->stratumSizes[v] <= 0) PetscFunctionReturn(PETSC_SUCCESS); in DMLabelGetStratumBounds()
1532 PetscUseTypeMethod(label, getstratumis, v, &is); in DMLabelGetStratumBounds()
1540 static PetscErrorCode DMLabelGetStratumIS_Concrete(DMLabel label, PetscInt v, IS *pointIS) in DMLabelGetStratumIS_Concrete() argument
1543 PetscCall(PetscObjectReference((PetscObject)label->points[v])); in DMLabelGetStratumIS_Concrete()
1544 *pointIS = label->points[v]; in DMLabelGetStratumIS_Concrete()
1568 PetscErrorCode DMLabelGetStratumIS(DMLabel label, PetscInt value, IS *points) in DMLabelGetStratumIS() argument
1573 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelGetStratumIS()
1576 PetscCall(DMLabelLookupStratum(label, value, &v)); in DMLabelGetStratumIS()
1578 PetscCall(DMLabelMakeValid_Private(label, v)); in DMLabelGetStratumIS()
1579 PetscUseTypeMethod(label, getstratumis, v, points); in DMLabelGetStratumIS()
1597 PetscErrorCode DMLabelSetStratumIS(DMLabel label, PetscInt value, IS is) in DMLabelSetStratumIS() argument
1602 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelSetStratumIS()
1604 …PetscCheck(!label->readonly, PetscObjectComm((PetscObject)label), PETSC_ERR_ARG_WRONG, "Read-only … in DMLabelSetStratumIS()
1605 PetscCall(DMLabelLookupAddStratum(label, value, &v)); in DMLabelSetStratumIS()
1606 if (is == label->points[v]) PetscFunctionReturn(PETSC_SUCCESS); in DMLabelSetStratumIS()
1607 PetscCall(DMLabelClearStratum(label, value)); in DMLabelSetStratumIS()
1608 PetscCall(ISGetLocalSize(is, &label->stratumSizes[v])); in DMLabelSetStratumIS()
1610 PetscCall(ISDestroy(&label->points[v])); in DMLabelSetStratumIS()
1611 label->points[v] = is; in DMLabelSetStratumIS()
1612 label->validIS[v] = PETSC_TRUE; in DMLabelSetStratumIS()
1613 PetscCall(PetscObjectStateIncrease((PetscObject)label)); in DMLabelSetStratumIS()
1614 if (label->bt) { in DMLabelSetStratumIS()
1619 for (p = 0; p < label->stratumSizes[v]; ++p) { in DMLabelSetStratumIS()
1622 …label->pStart) && !(point >= label->pEnd), PETSC_COMM_SELF, PETSC_ERR_ARG_OUTOFRANGE, "Label point… in DMLabelSetStratumIS()
1623 PetscCall(PetscBTSet(label->bt, point - label->pStart)); in DMLabelSetStratumIS()
1642 PetscErrorCode DMLabelClearStratum(DMLabel label, PetscInt value) in DMLabelClearStratum() argument
1647 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelClearStratum()
1648 …PetscCheck(!label->readonly, PetscObjectComm((PetscObject)label), PETSC_ERR_ARG_WRONG, "Read-only … in DMLabelClearStratum()
1649 PetscCall(DMLabelLookupStratum(label, value, &v)); in DMLabelClearStratum()
1651 if (label->validIS[v]) { in DMLabelClearStratum()
1652 if (label->bt) { in DMLabelClearStratum()
1656 PetscCall(ISGetIndices(label->points[v], &points)); in DMLabelClearStratum()
1657 for (i = 0; i < label->stratumSizes[v]; ++i) { in DMLabelClearStratum()
1660 …if (point >= label->pStart && point < label->pEnd) PetscCall(PetscBTClear(label->bt, point - label… in DMLabelClearStratum()
1662 PetscCall(ISRestoreIndices(label->points[v], &points)); in DMLabelClearStratum()
1664 label->stratumSizes[v] = 0; in DMLabelClearStratum()
1665 PetscCall(ISDestroy(&label->points[v])); in DMLabelClearStratum()
1666 PetscCall(ISCreateStride(PETSC_COMM_SELF, 0, 0, 1, &label->points[v])); in DMLabelClearStratum()
1667 PetscCall(PetscObjectSetName((PetscObject)label->points[v], "indices")); in DMLabelClearStratum()
1668 PetscCall(PetscObjectStateIncrease((PetscObject)label)); in DMLabelClearStratum()
1670 PetscCall(PetscHSetIClear(label->ht[v])); in DMLabelClearStratum()
1693 PetscErrorCode DMLabelSetStratumBounds(DMLabel label, PetscInt value, PetscInt pStart, PetscInt pEn… in DMLabelSetStratumBounds() argument
1699 PetscCall(DMLabelSetStratumIS(label, value, pIS)); in DMLabelSetStratumBounds()
1721 PetscErrorCode DMLabelGetStratumPointIndex(DMLabel label, PetscInt value, PetscInt p, PetscInt *ind… in DMLabelGetStratumPointIndex() argument
1727 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelGetStratumPointIndex()
1730 PetscCall(DMLabelLookupStratum(label, value, &v)); in DMLabelGetStratumPointIndex()
1732 PetscCall(DMLabelMakeValid_Private(label, v)); in DMLabelGetStratumPointIndex()
1733 PetscUseTypeMethod(label, getstratumis, v, &pointIS); in DMLabelGetStratumPointIndex()
1753 PetscErrorCode DMLabelFilter(DMLabel label, PetscInt start, PetscInt end) in DMLabelFilter() argument
1758 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelFilter()
1759 …PetscCheck(!label->readonly, PetscObjectComm((PetscObject)label), PETSC_ERR_ARG_WRONG, "Read-only … in DMLabelFilter()
1760 PetscCall(DMLabelDestroyIndex(label)); in DMLabelFilter()
1761 PetscCall(DMLabelMakeAllValid_Private(label)); in DMLabelFilter()
1762 for (v = 0; v < label->numStrata; ++v) { in DMLabelFilter()
1763 PetscCall(ISGeneralFilter(label->points[v], start, end)); in DMLabelFilter()
1764 PetscCall(ISGetLocalSize(label->points[v], &label->stratumSizes[v])); in DMLabelFilter()
1766 PetscCall(DMLabelCreateIndex(label, start, end)); in DMLabelFilter()
1786 PetscErrorCode DMLabelPermute(DMLabel label, IS permutation, DMLabel *labelNew) in DMLabelPermute() argument
1792 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelPermute()
1794 …PetscCheck(!label->readonly, PetscObjectComm((PetscObject)label), PETSC_ERR_ARG_WRONG, "Read-only … in DMLabelPermute()
1795 PetscCall(DMLabelMakeAllValid_Private(label)); in DMLabelPermute()
1796 PetscCall(DMLabelDuplicate(label, labelNew)); in DMLabelPermute()
1825 if (label->bt) { in DMLabelPermute()
1826 PetscCall(PetscBTDestroy(&label->bt)); in DMLabelPermute()
1827 PetscCall(DMLabelCreateIndex(label, label->pStart, label->pEnd)); in DMLabelPermute()
1851 PetscErrorCode DMLabelPermuteValues(DMLabel label, IS permutation) in DMLabelPermuteValues() argument
1856 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelPermuteValues()
1858 PetscCall(DMLabelGetNumValues(label, &Nv)); in DMLabelPermuteValues()
1860 …PetscCheck(Np == Nv, PetscObjectComm((PetscObject)label), PETSC_ERR_ARG_SIZ, "Permutation has size… in DMLabelPermuteValues()
1864 …PetscCheck(flg, PetscObjectComm((PetscObject)label), PETSC_ERR_ARG_WRONG, "IS is not a permutation… in DMLabelPermuteValues()
1866 PetscCall(DMLabelRewriteValues(label, permutation)); in DMLabelPermuteValues()
1889 PetscErrorCode DMLabelRewriteValues(DMLabel label, IS permutation) in DMLabelRewriteValues() argument
1895 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelRewriteValues()
1897 PetscCall(DMLabelMakeAllValid_Private(label)); in DMLabelRewriteValues()
1898 PetscCall(DMLabelGetNumValues(label, &Nv)); in DMLabelRewriteValues()
1900 …PetscCheck(Np >= Nv, PetscObjectComm((PetscObject)label), PETSC_ERR_ARG_SIZ, "Permutation has size… in DMLabelRewriteValues()
1902 for (PetscInt v = 0; v < Nv; ++v) label->stratumValues[v] = perm[label->stratumValues[v]]; in DMLabelRewriteValues()
1907 static PetscErrorCode DMLabelDistribute_Internal(DMLabel label, PetscSF sf, PetscSection *leafSecti… in DMLabelDistribute_Internal() argument
1916 if (label) PetscCall(DMLabelMakeAllValid_Private(label)); in DMLabelDistribute_Internal()
1923 if (label) { in DMLabelDistribute_Internal()
1924 for (s = 0; s < label->numStrata; ++s) { in DMLabelDistribute_Internal()
1927 PetscCall(ISGetIndices(label->points[s], &points)); in DMLabelDistribute_Internal()
1928 …for (l = 0; l < label->stratumSizes[s]; l++) PetscCall(PetscSectionAddDof(rootSection, points[l], … in DMLabelDistribute_Internal()
1929 PetscCall(ISRestoreIndices(label->points[s], &points)); in DMLabelDistribute_Internal()
1937 if (label) { in DMLabelDistribute_Internal()
1938 for (s = 0; s < label->numStrata; ++s) { in DMLabelDistribute_Internal()
1941 PetscCall(ISGetIndices(label->points[s], &points)); in DMLabelDistribute_Internal()
1942 for (l = 0; l < label->stratumSizes[s]; l++) { in DMLabelDistribute_Internal()
1945 rootStrata[offset + rootIdx[p]++] = label->stratumValues[s]; in DMLabelDistribute_Internal()
1947 PetscCall(ISRestoreIndices(label->points[s], &points)); in DMLabelDistribute_Internal()
1984 PetscErrorCode DMLabelDistribute(DMLabel label, PetscSF sf, DMLabel *labelNew) in DMLabelDistribute() argument
2000 if (label) { in DMLabelDistribute()
2001 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelDistribute()
2002 …PetscCheck(!label->readonly, PetscObjectComm((PetscObject)label), PETSC_ERR_ARG_WRONG, "Read-only … in DMLabelDistribute()
2003 PetscCall(DMLabelMakeAllValid_Private(label)); in DMLabelDistribute()
2009 PetscCall(PetscObjectGetName((PetscObject)label, &lname)); in DMLabelDistribute()
2020 if (rank == 0) (*labelNew)->defaultValue = label->defaultValue; in DMLabelDistribute()
2023 PetscCall(DMLabelDistribute_Internal(label, sf, &leafSection, &leafStrata)); in DMLabelDistribute()
2102 PetscErrorCode DMLabelGather(DMLabel label, PetscSF sf, DMLabel *labelNew) in DMLabelGather() argument
2118 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelGather()
2120 …PetscCheck(!label->readonly, PetscObjectComm((PetscObject)label), PETSC_ERR_ARG_WRONG, "Read-only … in DMLabelGather()
2126 PetscCall(PetscObjectGetName((PetscObject)label, &lname)); in DMLabelGather()
2157 PetscCall(DMLabelDistribute_Internal(label, sfLabel, &rootSection, &rootStrata)); in DMLabelGather()
2174 static PetscErrorCode DMLabelPropagateInit_Internal(DMLabel label, PetscSF pointSF, PetscInt valArr… in DMLabelPropagateInit_Internal() argument
2181 PetscCall(DMLabelGetDefaultValue(label, &defVal)); in DMLabelPropagateInit_Internal()
2185 PetscCall(DMLabelGetValue(label, points[l], &val)); in DMLabelPropagateInit_Internal()
2193 PetscCall(DMLabelGetValue(label, r, &val)); in DMLabelPropagateInit_Internal()
2200 static PetscErrorCode DMLabelPropagateFini_Internal(DMLabel label, PetscSF pointSF, PetscInt valArr… in DMLabelPropagateFini_Internal() argument
2207 PetscCall(DMLabelGetDefaultValue(label, &defVal)); in DMLabelPropagateFini_Internal()
2215 PetscCall(DMLabelGetValue(label, p, &val)); in DMLabelPropagateFini_Internal()
2217 PetscCall(DMLabelSetValue(label, p, cval)); in DMLabelPropagateFini_Internal()
2218 if (markPoint) PetscCall((*markPoint)(label, p, cval, ctx)); in DMLabelPropagateFini_Internal()
2230 PetscCall(DMLabelGetValue(label, r, &val)); in DMLabelPropagateFini_Internal()
2232 PetscCall(DMLabelSetValue(label, r, cval)); in DMLabelPropagateFini_Internal()
2233 if (markPoint) PetscCall((*markPoint)(label, r, cval, ctx)); in DMLabelPropagateFini_Internal()
2254 PetscErrorCode DMLabelPropagateBegin(DMLabel label, PetscSF sf) in DMLabelPropagateBegin() argument
2260 …PetscCheck(!label->readonly, PetscObjectComm((PetscObject)label), PETSC_ERR_ARG_WRONG, "Read-only … in DMLabelPropagateBegin()
2263 PetscCall(DMLabelGetDefaultValue(label, &defVal)); in DMLabelPropagateBegin()
2265 if (Nr >= 0) PetscCall(PetscMalloc1(Nr, &label->propArray)); in DMLabelPropagateBegin()
2266 for (r = 0; r < Nr; ++r) label->propArray[r] = defVal; in DMLabelPropagateBegin()
2284 PetscErrorCode DMLabelPropagateEnd(DMLabel label, PetscSF pointSF) in DMLabelPropagateEnd() argument
2287 …PetscCheck(!label->readonly, PetscObjectComm((PetscObject)label), PETSC_ERR_ARG_WRONG, "Read-only … in DMLabelPropagateEnd()
2288 PetscCall(PetscFree(label->propArray)); in DMLabelPropagateEnd()
2289 label->propArray = NULL; in DMLabelPropagateEnd()
2314 PetscErrorCode DMLabelPropagatePush(DMLabel label, PetscSF pointSF, PetscErrorCode (*markPoint)(DML… in DMLabelPropagatePush() argument
2316 PetscInt *valArray = label->propArray, Nr; in DMLabelPropagatePush()
2320 …PetscCheck(!label->readonly, PetscObjectComm((PetscObject)label), PETSC_ERR_ARG_WRONG, "Read-only … in DMLabelPropagatePush()
2336 PetscCall(DMLabelPropagateInit_Internal(label, pointSF, valArray)); in DMLabelPropagatePush()
2341 PetscCall(DMLabelPropagateFini_Internal(label, pointSF, valArray, markPoint, ctx)); in DMLabelPropagatePush()
2362 PetscErrorCode DMLabelConvertToSection(DMLabel label, PetscSection *section, IS *is) in DMLabelConvertToSection() argument
2370 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelConvertToSection()
2371 PetscCall(DMLabelGetNumValues(label, &nV)); in DMLabelConvertToSection()
2372 PetscCall(DMLabelGetValueIS(label, &vIS)); in DMLabelConvertToSection()
2387 PetscCall(DMLabelGetStratumSize(label, values[v], &n)); in DMLabelConvertToSection()
2400 PetscCall(DMLabelGetStratumIS(label, values[v], &is)); in DMLabelConvertToSection()
2505 PetscErrorCode DMLabelSetType(DMLabel label, DMLabelType method) in DMLabelSetType() argument
2511 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelSetType()
2512 PetscCall(PetscObjectTypeCompare((PetscObject)label, method, &match)); in DMLabelSetType()
2517 …PetscCheck(r, PetscObjectComm((PetscObject)label), PETSC_ERR_ARG_UNKNOWN_TYPE, "Unknown DMLabel ty… in DMLabelSetType()
2519 PetscTryTypeMethod(label, destroy); in DMLabelSetType()
2520 PetscCall(PetscMemzero(label->ops, sizeof(*label->ops))); in DMLabelSetType()
2521 PetscCall(PetscObjectChangeTypeName((PetscObject)label, method)); in DMLabelSetType()
2522 PetscCall((*r)(label)); in DMLabelSetType()
2541 PetscErrorCode DMLabelGetType(DMLabel label, DMLabelType *type) in DMLabelGetType() argument
2544 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelGetType()
2547 *type = ((PetscObject)label)->type_name; in DMLabelGetType()
2551 static PetscErrorCode DMLabelInitialize_Concrete(DMLabel label) in DMLabelInitialize_Concrete() argument
2554 label->ops->view = DMLabelView_Concrete; in DMLabelInitialize_Concrete()
2555 label->ops->setup = NULL; in DMLabelInitialize_Concrete()
2556 label->ops->duplicate = DMLabelDuplicate_Concrete; in DMLabelInitialize_Concrete()
2557 label->ops->getstratumis = DMLabelGetStratumIS_Concrete; in DMLabelInitialize_Concrete()
2561 PETSC_EXTERN PetscErrorCode DMLabelCreate_Concrete(DMLabel label) in DMLabelCreate_Concrete() argument
2564 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 1); in DMLabelCreate_Concrete()
2565 PetscCall(DMLabelInitialize_Concrete(label)); in DMLabelCreate_Concrete()
2592 …onLabel(PetscSection s, PetscSF sf, PetscBool includeConstraints, DMLabel label, PetscInt labelVal… in PetscSectionCreateGlobalSectionLabel() argument
2600 PetscValidHeaderSpecific(label, DMLABEL_CLASSID, 4); in PetscSectionCreateGlobalSectionLabel()
2618 PetscCall(DMLabelGetValue(label, p, &value)); in PetscSectionCreateGlobalSectionLabel()
2664 DMLabel label; member
2698 PetscCall(DMLabelDestroy(&sl->label)); in PetscSectionSymLabelReset()
2715 DMLabel label = sl->label; in PetscSectionSymView_Label() local
2725 if (label) { in PetscSectionSymView_Label()
2729 PetscCall(DMLabelView(label, viewer)); in PetscSectionSymView_Label()
2732 PetscCall(PetscObjectGetName((PetscObject)sl->label, &name)); in PetscSectionSymView_Label()
2740 PetscInt value = i < sl->numStrata ? label->stratumValues[i] : label->defaultValue; in PetscSectionSymView_Label()
2803 PetscErrorCode PetscSectionSymLabelSetLabel(PetscSectionSym sym, DMLabel label) in PetscSectionSymLabelSetLabel() argument
2810 if (sl->label && sl->label != label) PetscCall(PetscSectionSymLabelReset(sym)); in PetscSectionSymLabelSetLabel()
2811 if (label) { in PetscSectionSymLabelSetLabel()
2812 sl->label = label; in PetscSectionSymLabelSetLabel()
2813 PetscCall(PetscObjectReference((PetscObject)label)); in PetscSectionSymLabelSetLabel()
2814 PetscCall(DMLabelGetNumValues(label, &sl->numStrata)); in PetscSectionSymLabelSetLabel()
2854 …PetscCheck(sl->label, PetscObjectComm((PetscObject)sym), PETSC_ERR_ARG_WRONGSTATE, "No label set y… in PetscSectionSymLabelGetStratum()
2856 PetscInt value = (i < sl->numStrata) ? sl->label->stratumValues[i] : sl->label->defaultValue; in PetscSectionSymLabelGetStratum()
2860 PetscCall(PetscObjectGetName((PetscObject)sl->label, &name)); in PetscSectionSymLabelGetStratum()
2913 …PetscCheck(sl->label, PetscObjectComm((PetscObject)sym), PETSC_ERR_ARG_WRONGSTATE, "No label set y… in PetscSectionSymLabelSetStratum()
2915 PetscInt value = (i < sl->numStrata) ? sl->label->stratumValues[i] : sl->label->defaultValue; in PetscSectionSymLabelSetStratum()
2919 PetscCall(PetscObjectGetName((PetscObject)sl->label, &name)); in PetscSectionSymLabelSetStratum()
2961 DMLabel label; in PetscSectionSymGetPoints_Label() local
2966 label = sl->label; in PetscSectionSymGetPoints_Label()
2972 if (label->validIS[j]) { in PetscSectionSymGetPoints_Label()
2975 PetscCall(ISLocate(label->points[j], point, &k)); in PetscSectionSymGetPoints_Label()
2980 PetscCall(PetscHSetIHas(label->ht[j], point, &has)); in PetscSectionSymGetPoints_Label()
2985 j < numStrata ? label->stratumValues[j] : label->defaultValue); in PetscSectionSymGetPoints_Label()
3000 PetscCall(DMLabelGetNumValues(sl->label, &Nv)); in PetscSectionSymCopy_Label()
3001 PetscCall(DMLabelGetValueIS(sl->label, &valIS)); in PetscSectionSymCopy_Label()
3022 PetscCall(DMLabelDistribute(sl->label, migrationSF, &dlabel)); in PetscSectionSymDistribute_Label()
3060 PetscErrorCode PetscSectionSymCreateLabel(MPI_Comm comm, DMLabel label, PetscSectionSym *sym) in PetscSectionSymCreateLabel() argument
3066 PetscCall(PetscSectionSymLabelSetLabel(*sym, label)); in PetscSectionSymCreateLabel()