SheafSystem  0.0.0.0
refining_section_pusher.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 REFINING_SECTION_PUSHER_H
22 #define REFINING_SECTION_PUSHER_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_vd;
44 }
45 
46 namespace fields
47 {
48 
49 using namespace sheaf;
50 using namespace fiber_bundle;
51 
52 class field_refinement_policy;
53 class field_refiner_family;
54 class field_vd;
55 
62 class SHEAF_DLL_SPEC refining_section_pusher : public any
63 {
64 
65  // =============================================================================
67  // =============================================================================
69 
70 public:
71 
77  refining_section_pusher(const poset& xbase_space,
78  const std::string& xrefiner_family_name,
79  const std::string& xrefinement_policy_name,
80  bool xauto_access);
81 
85  field_refiner_family& refiners();
86 
90  field_refinement_policy& policy() const;
91 
95  void push(const field_vd& xsource, field_vd& xtarget, bool xauto_access);
96 
100  bool same_fiber(const sec_vd& x1, const sec_vd& x2) const;
101 
102 protected:
103 
108 
109 private:
110 
114  field_refiner_family* _refiners;
115 
117 
118 
119  // =============================================================================
121  // =============================================================================
123 
124 public:
125 
130 
134  virtual ~refining_section_pusher();
135 
139  virtual bool invariant() const;
140 
142 
143 };
144 
145 
146 // ===========================================================
147 // NONMEMBER FUNCTIONS
148 // ===========================================================
149 
150 } // namespace fields
151 
152 #endif // ifndef REFINING_SECTION_PUSHER_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.
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
A refining section push-forward operator. Moves sections from one sec_rep_space to another using exte...
Namespace for the sheaves component of the sheaf system.
SHEAF_DLL_SPEC void push(const jcb &xjcb, const at1 &xvector, at1 &xresult, bool xauto_access)
Push vector forward (pre-allocated version for persistent types).
Definition: jcb.cc:1374
Namespace for the fiber_bundles component of the sheaf system.