SheafSystem  0.0.0.0
field_refiner.h
Go to the documentation of this file.
1 
2 //
3 // Copyright (c) 2014 Limit Point Systems, Inc.
4 //
5 // Licensed under the Apache License, Version 2.0 (the "License");
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 // http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17 
20 
21 #ifndef FIELD_REFINER_H
22 #define FIELD_REFINER_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef ANY_H
29 #include "SheafSystem/any.h"
30 #endif
31 
32 #ifndef FIELDS_H
33 #include "SheafSystem/fields.h"
34 #endif
35 
36 namespace sheaf
37 {
38 class poset;
39 }
40 
41 namespace fiber_bundle
42 {
43 class sec_ed;
44 class sec_vd;
45 }
46 
47 namespace fields
48 {
49 
50 using namespace sheaf;
51 using namespace fiber_bundle;
52 
53 class field_refinement_policy;
54 class field_refiner_family;
55 class field_vd;
56 
61 class SHEAF_DLL_SPEC field_refiner : public any
62 {
63 
64  // ===========================================================
66  // ===========================================================
68 
69 public:
70 
76  field_refiner(const poset& xbase_space,
77  const std::string& xrefiner_family_name,
78  const std::string& xrefinement_policy_name,
79  bool xauto_access);
80 
84  field_refiner_family& refiners();
85 
89  field_refinement_policy& policy() const;
90 
94  void refine(field_vd& xtarget, bool xauto_access);
95 
99  void refine(const sec_ed& xcoordinates, const sec_vd& xproperty, bool xauto_access);
100 
101 protected:
102 
106  field_refiner();
107 
108 private:
109 
113  field_refiner_family* _refiners;
114 
116 
117 
118  // ===========================================================
120  // ===========================================================
122 
123 public:
124 
128  field_refiner(const field_refiner& xother);
129 
133  virtual ~field_refiner();
134 
138  virtual bool invariant() const;
139 
141 
142 };
143 
144 
145 // ===========================================================
146 // NONMEMBER FUNCTIONS
147 // ===========================================================
148 
149 } // namespace fields
150 
151 #endif // ifndef FIELD_REFINER_H
A family of compatible local_field_refiners, one for each member of some family of cell types; a map ...
Namespace for fields component of sheaf system.
A section of a fiber bundle with a d-dimensional Euclidean vector space fiber.
Definition: sec_ed.h:47
Abstract base class with useful features for all objects.
Definition: any.h:39
A client handle for a mutable partially ordered set.
Definition: poset.h:40
An abstract policy that determines the conditions under which a zone should be refined.
A vd-valued property as a function of global coordinates.
Definition: field_vd.h:69
A section of a fiber bundle with a d-dimensional vector space fiber.
Definition: sec_vd.h:54
Namespace for the sheaves component of the sheaf system.
Refines a given field and its base space using a given refinement policy and refiner family...
Definition: field_refiner.h:61
Namespace for the fiber_bundles component of the sheaf system.