SheafSystem  0.0.0.0
d_uniform_point_locator.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 D_UNIFORM_POINT_LOCATOR_H
22 #define D_UNIFORM_POINT_LOCATOR_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef POINT_LOCATOR_H
29 #include "SheafSystem/point_locator.h"
30 #endif
31 
32 //#undef DIAGNOSTIC_OUTPUT
33 //#define DIAGNOSTIC_OUTPUT
34 
35 namespace fiber_bundle
36 {
37 class section_evaluator;
38 class structured_block;
39 }
40 
41 namespace geometry
42 {
43 
48 template <int DC, int DB>
49 class SHEAF_DLL_SPEC d_uniform_point_locator : public point_locator
50 {
51 
52  // ===========================================================
54  // ===========================================================
56 
57 public:
58 
63 
67  virtual ~d_uniform_point_locator();
68 
72  virtual bool invariant() const;
73 
74 
75 protected:
76 
81 
86 
90  virtual d_uniform_point_locator& operator=(const point_locator& xother) {return *this;};
91 
96 
100  sec_vd_value_type _clipped_value[DC];
101 
106 
111 
116 
121 
126 
130  sec_vd_value_type clip_component(sec_vd_value_type xcomp,
131  sec_vd_value_type xupper_bound);
132 
134 
135 
136  // ===========================================================
138  // ===========================================================
140 
141 public:
142 
146  virtual void update();
147 
151  virtual void point_at_value(const sec_vd_value_type* xvalue,
152  size_type xvalue_ub,
153  chart_point& xresult);
154 
161  virtual void all_points_at_value(const sec_vd_value_type* xvalue,
162  size_type xvalue_ub,
163  block<chart_point_3d>& xresult);
164 
171  virtual void branch_points_at_value(const sec_vd_value_type* xvalue,
172  size_type xvalue_ub,
173  block<branch_point_pair>& xresult);
174 
176 
177 };
178 
179 
180 // ============================================================================
181 // SPECIALIZATIONS
182 // ============================================================================
183 
184 template <>
185 SHEAF_DLL_SPEC
188 
189 template <>
190 SHEAF_DLL_SPEC
193 
194 template <>
195 SHEAF_DLL_SPEC
198 
199 } // namespace geometry
200 
201 #endif // D_UNIFORM_POINT_LOCATOR_H
d_uniform_point_locator & operator=(const d_uniform_point_locator< DC, DB > &xother)
Assignment operator; disabled.
virtual d_uniform_point_locator & operator=(const point_locator &xother)
Assignment operator; disabled.
d_uniform_point_locator()
Default constructor; disabled.
sec_vd_dof_type * _dofs
The dof tuple of coordinates().
A point in chart space.
Definition: chart_point.h:52
structured_block * _block
Base space of coordinates.
chart_point * _block_pt
Point in local coordinates of block.
A client handle for a base space member which represents a homgeneous collection of local cells...
A section of a fiber bundle with a d-dimensional Euclidean vector space fiber.
Definition: sec_ed.h:47
unsigned long size_type
An unsigned integral type used to represent sizes and capacities.
Definition: sheaf.h:52
size_type _dof_ct
The number of dofs in the dof tuple of coordinates().
An abstract local section evaluator; a map from {local coordinates x dofs} to section value...
A point location query in domains with uniform global coordinates of dimension dc and local coordinat...
section_evaluator * _evaluator
Evaluator for coordinates.
d_uniform_point_locator(const d_uniform_point_locator< DC, DB > &xother)
Copy constructor; disabled.
double sec_vd_dof_type
The type of degree of freedom in the section space.
Definition: fiber_bundle.h:78
An auto_block with a no-initialization initialization policy.
Namespace for the fiber_bundles component of the sheaf system.
Namespace for geometry component of sheaf system.
Definition: field_vd.h:54
vd_value_type sec_vd_value_type
The type of component in the value of a section at a point.
Definition: fiber_bundle.h:73
An abstract point location query in domains with global coordinate dimension dc and local coordinate ...
Definition: point_locator.h:52