1 
2 #include <petsc/private/vecimpl.h> /*I "petscvec.h" I*/
3 #include "../src/vec/vec/utils/tagger/impls/simple.h"
4 
VecTaggerComputeBoxes_Absolute(VecTagger tagger,Vec vec,PetscInt * numBoxes,VecTaggerBox ** boxes)5 static PetscErrorCode VecTaggerComputeBoxes_Absolute(VecTagger tagger,Vec vec,PetscInt *numBoxes,VecTaggerBox **boxes)
6 {
7   VecTagger_Simple *smpl = (VecTagger_Simple *)tagger->data;
8   PetscInt       bs, i;
9   VecTaggerBox   *bxs;
10   PetscErrorCode ierr;
11 
12   PetscFunctionBegin;
13   ierr = VecTaggerGetBlockSize(tagger,&bs);CHKERRQ(ierr);
14   *numBoxes = 1;
15   ierr = PetscMalloc1(bs,&bxs);CHKERRQ(ierr);
16   for (i = 0; i < bs; i++) {
17     bxs[i].min = smpl->box[i].min;
18     bxs[i].max = smpl->box[i].max;
19   }
20   *boxes = bxs;
21   PetscFunctionReturn(0);
22 }
23 
24 /*@C
25   VecTaggerAbsoluteSetBox - Set the box defining the values to be tagged by the tagger.
26 
27   Logically Collective
28 
29   Input Arguments:
30 + tagger - the VecTagger context
31 - box - the box: a blocksize array of VecTaggerBox boxes
32 
33   Level: advanced
34 
35 .seealso: VecTaggerAbsoluteGetBox()
36 @*/
VecTaggerAbsoluteSetBox(VecTagger tagger,VecTaggerBox * box)37 PetscErrorCode VecTaggerAbsoluteSetBox(VecTagger tagger,VecTaggerBox *box)
38 {
39   PetscErrorCode ierr;
40 
41   PetscFunctionBegin;
42   ierr = VecTaggerSetBox_Simple(tagger,box);CHKERRQ(ierr);
43   PetscFunctionReturn(0);
44 }
45 
46 /*@C
47   VecTaggerAbsoluteGetBox - Get the box defining the values to be tagged by the tagger.
48 
49   Logically Collective
50 
51   Input Arguments:
52 . tagger - the VecTagger context
53 
54   Output Arguments:
55 . box - the box: a blocksize array of VecTaggerBox boxes
56 
57   Level: advanced
58 
59 .seealso: VecTaggerAbsoluteSetBox()
60 @*/
VecTaggerAbsoluteGetBox(VecTagger tagger,const VecTaggerBox ** box)61 PetscErrorCode VecTaggerAbsoluteGetBox(VecTagger tagger,const VecTaggerBox **box)
62 {
63   PetscErrorCode ierr;
64 
65   PetscFunctionBegin;
66   ierr = VecTaggerGetBox_Simple(tagger,box);CHKERRQ(ierr);
67   PetscFunctionReturn(0);
68 }
69 
VecTaggerCreate_Absolute(VecTagger tagger)70 PETSC_INTERN PetscErrorCode VecTaggerCreate_Absolute(VecTagger tagger)
71 {
72   PetscErrorCode     ierr;
73 
74   PetscFunctionBegin;
75   ierr = VecTaggerCreate_Simple(tagger);CHKERRQ(ierr);
76   tagger->ops->computeboxes = VecTaggerComputeBoxes_Absolute;
77   PetscFunctionReturn(0);
78 }
79