ug4
basic_callbacks.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2015: G-CSC, Goethe University Frankfurt
3  * Author: Sebastian Reiter
4  *
5  * This file is part of UG4.
6  *
7  * UG4 is free software: you can redistribute it and/or modify it under the
8  * terms of the GNU Lesser General Public License version 3 (as published by the
9  * Free Software Foundation) with the following additional attribution
10  * requirements (according to LGPL/GPL v3 §7):
11  *
12  * (1) The following notice must be displayed in the Appropriate Legal Notices
13  * of covered and combined works: "Based on UG4 (www.ug4.org/license)".
14  *
15  * (2) The following notice must be displayed at a prominent place in the
16  * terminal output of covered works: "Based on UG4 (www.ug4.org/license)".
17  *
18  * (3) The following bibliography is recommended for citation and must be
19  * preserved in all covered files:
20  * "Reiter, S., Vogel, A., Heppner, I., Rupp, M., and Wittum, G. A massively
21  * parallel geometric multigrid solver on hierarchically distributed grids.
22  * Computing and visualization in science 16, 4 (2013), 151-164"
23  * "Vogel, A., Reiter, S., Rupp, M., Nägel, A., and Wittum, G. UG4 -- a novel
24  * flexible software system for simulating pde based models on high performance
25  * computers. Computing and visualization in science 16, 4 (2013), 165-179"
26  *
27  * This program is distributed in the hope that it will be useful,
28  * but WITHOUT ANY WARRANTY; without even the implied warranty of
29  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30  * GNU Lesser General Public License for more details.
31  */
32 
33 #ifndef __H__UG_basic_callbacks
34 #define __H__UG_basic_callbacks
35 
36 #include "lib_grid/grid/grid.h"
38 
39 namespace ug{
40 
50 class ConsiderAll : public ElementCallback {
51  public:
52  bool operator() (Vertex* v) const {return true;}
53  bool operator() (Edge* e) const {return true;}
54  bool operator() (Face* f) const {return true;}
55  bool operator() (Volume* v) const {return true;}
56 };
57 
59 class ConsiderNone : public ElementCallback {
60  public:
61  bool operator() (Vertex* v) const {return false;}
62  bool operator() (Edge* e) const {return false;}
63  bool operator() (Face* f) const {return false;}
64  bool operator() (Volume* v) const {return false;}
65 };
66 
67 
70 class IsMarked : public ElementCallback
71 {
72  public:
73  IsMarked(const Grid& grid) :
74  m_grid(grid) {}
75 
76  bool operator() (Vertex* v) const {return callback(v);}
77  bool operator() (Edge* e) const {return callback(e);}
78  bool operator() (Face* f) const {return callback(f);}
79  bool operator() (Volume* v) const {return callback(v);}
80 
81  private:
82  template <class TElem>
83  bool callback(TElem* e) const {return m_grid.is_marked(e);}
84 
85  private:
86  const Grid& m_grid;
87 };
88 
91 {
92  public:
93  IsNotMarked(const Grid& grid) :
94  m_grid(grid) {}
95 
96  bool operator() (Vertex* v) const {return callback(v);}
97  bool operator() (Edge* e) const {return callback(e);}
98  bool operator() (Face* f) const {return callback(f);}
99  bool operator() (Volume* v) const {return callback(v);}
100 
101  private:
102  template <class TElem>
103  bool callback(TElem* e) const {return !m_grid.is_marked(e);}
104 
105  private:
106  const Grid& m_grid;
107 };
108  // lib_grid_element_callbacks
110 
111 }// end of namespace
112 
113 #endif //__H__UG_basic_callbacks
callback that always returns true
Definition: basic_callbacks.h:50
bool operator()(Vertex *v) const
Definition: basic_callbacks.h:52
callback that always returns false
Definition: basic_callbacks.h:59
bool operator()(Vertex *v) const
Definition: basic_callbacks.h:61
Base-class for edges.
Definition: grid_base_objects.h:397
Definition: element_callback_interface.h:40
Faces are 2-dimensional objects.
Definition: grid_base_objects.h:510
Manages the elements of a grid and their interconnection.
Definition: grid.h:132
bool is_marked(GridObject *obj) const
returns true if the object is marked, false if not.
Definition: grid_impl.hpp:843
Element callback that returns true, if an element is marked.
Definition: basic_callbacks.h:71
IsMarked(const Grid &grid)
Definition: basic_callbacks.h:73
bool callback(TElem *e) const
Definition: basic_callbacks.h:83
bool operator()(Vertex *v) const
Definition: basic_callbacks.h:76
const Grid & m_grid
Definition: basic_callbacks.h:86
Element callback that returns true, if an element is not marked.
Definition: basic_callbacks.h:91
const Grid & m_grid
Definition: basic_callbacks.h:106
bool callback(TElem *e) const
Definition: basic_callbacks.h:103
bool operator()(Vertex *v) const
Definition: basic_callbacks.h:96
IsNotMarked(const Grid &grid)
Definition: basic_callbacks.h:93
Base-class for all vertex-types.
Definition: grid_base_objects.h:231
Volumes are 3-dimensional objects.
Definition: grid_base_objects.h:754
the ug namespace