Actual source code: absolute.c
2: #include <petsc/private/vecimpl.h>
3: #include "../src/vec/vec/utils/tagger/impls/simple.h"
5: static PetscErrorCode VecTaggerComputeBoxes_Absolute(VecTagger tagger, Vec vec, PetscInt *numBoxes, VecTaggerBox **boxes, PetscBool *listed)
6: {
7: VecTagger_Simple *smpl = (VecTagger_Simple *)tagger->data;
8: PetscInt bs, i;
9: VecTaggerBox *bxs;
11: VecTaggerGetBlockSize(tagger, &bs);
12: *numBoxes = 1;
13: PetscMalloc1(bs, &bxs);
14: for (i = 0; i < bs; i++) {
15: bxs[i].min = smpl->box[i].min;
16: bxs[i].max = smpl->box[i].max;
17: }
18: *boxes = bxs;
19: if (listed) *listed = PETSC_TRUE;
20: return 0;
21: }
23: /*@C
24: VecTaggerAbsoluteSetBox - Set the box defining the values to be tagged by the tagger.
26: Logically Collective
28: Input Parameters:
29: + tagger - the VecTagger context
30: - box - the box: a blocksize array of VecTaggerBox boxes
32: Level: advanced
34: .seealso: `VecTaggerAbsoluteGetBox()`
35: @*/
36: PetscErrorCode VecTaggerAbsoluteSetBox(VecTagger tagger, VecTaggerBox *box)
37: {
38: VecTaggerSetBox_Simple(tagger, box);
39: return 0;
40: }
42: /*@C
43: VecTaggerAbsoluteGetBox - Get the box defining the values to be tagged by the tagger.
45: Logically Collective
47: Input Parameter:
48: . tagger - the VecTagger context
50: Output Parameter:
51: . box - the box: a blocksize array of VecTaggerBox boxes
53: Level: advanced
55: .seealso: `VecTaggerAbsoluteSetBox()`
56: @*/
57: PetscErrorCode VecTaggerAbsoluteGetBox(VecTagger tagger, const VecTaggerBox **box)
58: {
59: VecTaggerGetBox_Simple(tagger, box);
60: return 0;
61: }
63: PETSC_INTERN PetscErrorCode VecTaggerCreate_Absolute(VecTagger tagger)
64: {
65: VecTaggerCreate_Simple(tagger);
66: tagger->ops->computeboxes = VecTaggerComputeBoxes_Absolute;
67: return 0;
68: }