SheafSystem  0.0.0.0
discretization_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 DISCRETIZATION_PUSHER_H
22 #define DISCRETIZATION_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 namespace fiber_bundle
33 {
34 class sec_vd;
35 class section_space_schema_member;
36 }
37 
38 namespace fields
39 {
40 
41 using namespace sheaf;
42 using namespace fiber_bundle;
43 
44 
45 class discretization_push_action;
46 
51 class SHEAF_DLL_SPEC discretization_pusher : public any
52 {
53 
54  // ===========================================================
56  // ===========================================================
58 
59 public:
60 
65 
66  // Default memberwise copy constructor will do.
67 
71  virtual ~discretization_pusher();
72 
77  void push(const section_space_schema_member& xsrc,
78  const sec_vd& xglobal_coord,
79  discretization_push_action& xpush_action,
80  bool xauto_access);
81 
82 private:
83 
87  bool must_gather(
88  const section_space_schema_member& xrange_schema,
89  const section_space_schema_member& xglobal_coord_schema) const;
90 
95  bool must_map(
96  const section_space_schema_member& xrange_schema,
97  const section_space_schema_member& xglobal_coord_schema) const;
98 
102  bool must_evaluate(
103  const section_space_schema_member& xrange_schema,
104  const section_space_schema_member& xglobal_coord_schema) const;
105 
109  void push_gather_no_map_no_evaluate(const section_space_schema_member& xsrc,
110  const sec_vd& xglobal_coord,
111  discretization_push_action& xpush_action);
112 
116  void push_gather_no_map_evaluate(const section_space_schema_member& xsrc,
117  const sec_vd& xglobal_coord,
118  discretization_push_action& xpush_action);
122  void push_no_gather_map_evaluate(const section_space_schema_member& xsrc,
123  const sec_vd& xglobal_coord,
124  discretization_push_action& xpush_action);
125 
127 
128 
129  // ===========================================================
131  // ===========================================================
133 
134 public:
135 
139  virtual bool invariant() const;
140 
142 
143 };
144 
145 
146 // ===========================================================
147 // NONMEMBER FUNCTIONS
148 // ===========================================================
149 
150 
151 } // namespace fields
152 
153 #endif // ifndef DISCRETIZATION_PUSHER_H
A push-forward operator for discretization subposets; pushes members into the global coordinate space...
Namespace for fields component of sheaf system.
The action to executed by discretization_pusher::push on each member of a discretization subposet...
void push(const SJCB &xjcb, const SVECTOR &xvector, SR &xresult, bool xauto_access)
Definition: sec_jcb.impl.h:143
Abstract base class with useful features for all objects.
Definition: any.h:39
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.
A client handle for a poset member which has been prepared for use as a schema for a section space...
Namespace for the fiber_bundles component of the sheaf system.