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