Lines Matching refs:ul
7758 DMUniversalLabel ul; in DMUniversalLabelCreate() local
7763 PetscCall(PetscMalloc1(1, &ul)); in DMUniversalLabelCreate()
7764 PetscCall(DMLabelCreate(PETSC_COMM_SELF, "universal", &ul->label)); in DMUniversalLabelCreate()
7767 ul->Nl = 0; in DMUniversalLabelCreate()
7776 if (active[l]) ++ul->Nl; in DMUniversalLabelCreate()
7778 …PetscCall(PetscCalloc5(ul->Nl, &ul->names, ul->Nl, &ul->indices, ul->Nl + 1, &ul->offsets, ul->Nl … in DMUniversalLabelCreate()
7779 ul->Nv = 0; in DMUniversalLabelCreate()
7789 PetscCall(PetscStrallocpy(name, &ul->names[m])); in DMUniversalLabelCreate()
7790 ul->indices[m] = l; in DMUniversalLabelCreate()
7791 ul->Nv += nv; in DMUniversalLabelCreate()
7792 ul->offsets[m + 1] = nv; in DMUniversalLabelCreate()
7793 ul->bits[m + 1] = PetscCeilReal(PetscLog2Real(nv + 1)); in DMUniversalLabelCreate()
7796 for (l = 1; l <= ul->Nl; ++l) { in DMUniversalLabelCreate()
7797 ul->offsets[l] = ul->offsets[l - 1] + ul->offsets[l]; in DMUniversalLabelCreate()
7798 ul->bits[l] = ul->bits[l - 1] + ul->bits[l]; in DMUniversalLabelCreate()
7800 for (l = 0; l < ul->Nl; ++l) { in DMUniversalLabelCreate()
7803 ul->masks[l] = 0; in DMUniversalLabelCreate()
7804 for (b = ul->bits[l]; b < ul->bits[l + 1]; ++b) ul->masks[l] |= 1 << b; in DMUniversalLabelCreate()
7806 PetscCall(PetscMalloc1(ul->Nv, &ul->values)); in DMUniversalLabelCreate()
7818 for (v = 0; v < nv; ++v) ul->values[ul->offsets[m] + v] = varr[v]; in DMUniversalLabelCreate()
7821 PetscCall(PetscSortInt(nv, &ul->values[ul->offsets[m]])); in DMUniversalLabelCreate()
7841 nv = ul->offsets[m + 1] - ul->offsets[m]; in DMUniversalLabelCreate()
7843 PetscCall(PetscFindInt(val, nv, &ul->values[ul->offsets[m]], &loc)); in DMUniversalLabelCreate()
7845 uval += (loc + 1) << ul->bits[m]; in DMUniversalLabelCreate()
7848 if (marked) PetscCall(DMLabelSetValue(ul->label, p, uval)); in DMUniversalLabelCreate()
7851 *universal = ul; in DMUniversalLabelCreate()
7869 PetscErrorCode DMUniversalLabelGetLabel(DMUniversalLabel ul, DMLabel *ulabel) in DMUniversalLabelGetLabel() argument
7873 *ulabel = ul->label; in DMUniversalLabelGetLabel()
7877 PetscErrorCode DMUniversalLabelCreateLabels(DMUniversalLabel ul, PetscBool preserveOrder, DM dm) in DMUniversalLabelCreateLabels() argument
7879 PetscInt Nl = ul->Nl, l; in DMUniversalLabelCreateLabels()
7884 if (preserveOrder) PetscCall(DMCreateLabelAtIndex(dm, ul->indices[l], ul->names[l])); in DMUniversalLabelCreateLabels()
7885 else PetscCall(DMCreateLabel(dm, ul->names[l])); in DMUniversalLabelCreateLabels()
7888 for (l = 0; l < ul->Nl; ++l) { in DMUniversalLabelCreateLabels()
7892 PetscCall(DMGetLabelName(dm, ul->indices[l], &name)); in DMUniversalLabelCreateLabels()
7893 PetscCall(PetscStrcmp(name, ul->names[l], &match)); in DMUniversalLabelCreateLabels()
7894 …RR_ARG_WRONG, "Label %" PetscInt_FMT " name %s does not match new name %s", l, name, ul->names[l]); in DMUniversalLabelCreateLabels()
7900 PetscErrorCode DMUniversalLabelSetLabelValue(DMUniversalLabel ul, DM dm, PetscBool useIndex, PetscI… in DMUniversalLabelSetLabelValue() argument
7905 for (l = 0; l < ul->Nl; ++l) { in DMUniversalLabelSetLabelValue()
7907 PetscInt lval = (value & ul->masks[l]) >> ul->bits[l]; in DMUniversalLabelSetLabelValue()
7910 if (useIndex) PetscCall(DMGetLabelByNum(dm, ul->indices[l], &label)); in DMUniversalLabelSetLabelValue()
7911 else PetscCall(DMGetLabel(dm, ul->names[l], &label)); in DMUniversalLabelSetLabelValue()
7912 PetscCall(DMLabelSetValue(label, p, ul->values[ul->offsets[l] + lval - 1])); in DMUniversalLabelSetLabelValue()