SheafSystem  0.0.0.0
sec_e2_uniform.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 SEC_E2_UNIFORM_H
22 #define SEC_E2_UNIFORM_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef SEC_E2_H
29 #include "SheafSystem/sec_e2.h"
30 #endif
31 
32 namespace fiber_bundle
33 {
34 
35 //==============================================================================
36 // CLASS SEC_E2_UNIFORM
37 //==============================================================================
38 
43 class SHEAF_DLL_SPEC sec_e2_uniform : public sec_e2
44 {
45  // ===========================================================
47  // ===========================================================
49 
50 public:
51 
52  // Typedefs:
53 
57  typedef e2 fiber_type;
58 
64  static host_type& new_host(namespace_type& xns,
65  const poset_path& xhost_path,
66  const poset_path& xschema_path,
67  const poset_path& xscalar_space_path,
68  bool xauto_access);
69 
76  static host_type& standard_host(namespace_type& xns,
77  const poset_path& xbase_path,
78  const poset_path& xrep_path,
79  const std::string& xsection_suffix,
80  const std::string& xfiber_suffix,
81  bool xauto_access);
82 
83 protected:
84 
85 private:
86 
88 
89 
90  //============================================================================
92  //============================================================================
94 
95 public:
96 
100  sec_e2_uniform();
101 
102  // ===========================================================================
103  // NEW HANDLE, NEW STATE CONSTRUCTORS
104  // ===========================================================================
105 
111  const block<dof_type>& xmin,
112  const block<dof_type>& xmax,
113  bool xauto_access);
114 
119  section_dof_map* xdof_map = 0,
120  bool xauto_access = true);
121 
128  abstract_poset_member& xbase_mbr,
129  int xbase_version = CURRENT_HOST_VERSION,
130  bool xauto_access = true);
131 
137  sec_e2_uniform(sec_rep_space* xhost, const subposet& xbase_parts, bool xauto_sccess);
138 
139  // ===========================================================================
140  // NEW HANDLE, EXISTING STATE CONSTRUCTORS
141  // ===========================================================================
142 
147  sec_e2_uniform(const sec_rep_space* xhost, pod_index_type xindex);
148 
153  sec_e2_uniform(const sec_rep_space* xhost, const scoped_index& xindex);
154 
159  sec_e2_uniform(const sec_rep_space* xhost, const std::string& xname);
160 
165  sec_e2_uniform(const namespace_poset* xnamespace,
166  const poset_path& xpath,
167  bool xauto_access = true);
168 
172  explicit sec_e2_uniform(const sec_rep_space_member* xother);
173 
177  ~sec_e2_uniform();
178 
179  // ===========================================================================
180  // EXISTING HANDLE, NEW STATE "CONSTRUCTORS"
181  // ===========================================================================
182 
183  using sec_e2::new_jim_state;
184 
189  void new_jim_state(sec_rep_space* xhost,
190  const block<dof_type>& xmin,
191  const block<dof_type>& xmax,
192  bool xauto_access);
193 
194  // ===========================================================================
195  // OTHER
196  // ===========================================================================
197 
201  virtual sec_e2_uniform& operator=(const abstract_poset_member& xother);
202 
206  sec_e2_uniform& operator=(const sec_e2_uniform& xother);
207 
211  sec_e2_uniform& operator=(const e2& xfiber);
212 
216  sec_e2_uniform& operator=(const e2_lite& xfiber);
217 
221  virtual const fiber_type& fiber_prototype() const;
222 
223 
227  void put_bounds(const block<dof_type>& xmin,
228  const block<dof_type>& xmax,
229  bool xauto_access);
230 
234  void get_bounds(block<dof_type>& xmin, block<dof_type>& xmax, bool xauto_access) const;
235 
239  dof_type min_x(bool xauto_access) const;
240 
244  dof_type min_y(bool xauto_access) const;
245 
249  dof_type max_x(bool xauto_access) const;
250 
254  dof_type max_y(bool xauto_access) const;
255 
260  dof_type inc_x(bool xauto_access) const;
261 
266  dof_type inc_y(bool xauto_access) const;
267 
268 protected:
269 
270 private:
271 
273 
274 
275  //============================================================================
277  //============================================================================
279 
280 public:
281 
282 protected:
283 
284 private:
285 
287 
288 
289  //============================================================================
291  //============================================================================
293 
294 public:
295 
296 protected:
297 
298 private:
299 
301 
302 
303  //============================================================================
305  //============================================================================
307 
308 public:
309 
310 protected:
311 
312 private:
313 
315 
316 
317  //============================================================================
319  //============================================================================
321 
322 public:
323 
324 protected:
325 
326 private:
327 
329 
330 
331  //============================================================================
333  //============================================================================
335 
336 public:
337 
338 protected:
339 
340 private:
341 
343 
344 
345  //============================================================================
347  //============================================================================
349 
350 public:
351 
352 protected:
353 
354 private:
355 
357 
358 
359  //============================================================================
361  //============================================================================
363 
364 public:
365 
369  static const poset_path& standard_rep_path();
370 
371 protected:
372 
373 private:
374 
376 
377 
378  //============================================================================
380  //============================================================================
382 
383 public:
384 
388  virtual const std::string& class_name() const;
389 
393  static const std::string& static_class_name();
394 
398  virtual sec_e2_uniform* clone() const;
399 
405  inline sec_e2_uniform* clone(bool xnew_state, bool xauto_access = true) const
406  {
407  return static_cast<sec_e2_uniform*>(sec_e2::clone(xnew_state, xauto_access));
408  }
409 
410 protected:
411 
412 private:
413 
415 
416 
417  //============================================================================
419  //============================================================================
421 
422 public:
423 
427  bool is_ancestor_of(const any* other) const;
428 
432  bool invariant() const;
433 
434 protected:
435 
436 private:
437 
439 
440 
441  //############################################################################
442 
443 public:
444 
445 };
446 
447 } // namespace fiber_bundle
448 
449 #endif // ifndef SEC_E2_UNIFORM_H
450 
451 
A client handle for a subposet.
Definition: subposet.h:86
The abstract map from section dof ids to section dof values of heterogeneous type.
Euclidean vector space of dimension 2 (persistent version).
Definition: e2.h:405
A space of scalars viewed as an antisymmetric tensor section space of degree 1.
Definition: sec_at1_space.h:48
The default name space; a poset which contains other posets as members.
The standard fiber bundles name space; extends the standard sheaves namespace by defining base space...
sec_e2_uniform * clone(bool xnew_state, bool xauto_access=true) const
make a new handle instance of current. Attach the new instance to a new state if xnew_state is true...
A path defined by a poset name and a member name separated by a forward slash (&#39;/&#39;). For example: "cell_definitions/triangle".
Definition: poset_path.h:48
A member of a sec_rep_space; a section.
Abstract base class with useful features for all objects.
Definition: any.h:39
Euclidean vector space of dimension 2 (volatile version).
Definition: e2.h:112
An index within the external ("client") scope of a given id space.
Definition: scoped_index.h:116
int_type pod_index_type
The plain old data index type.
Definition: pod_types.h:49
e2 fiber_type
The fiber type.
A section of a fiber bundle with a 2-dimensional Euclidean vector space fiber.
sec_vd_dof_type dof_type
The type of degree of freedom.
Definition: sec_vd.h:91
void new_jim_state(abstract_poset_member &xbase_mbr, int xbase_version=CURRENT_HOST_VERSION, bool xauto_access=true)
Creates a new jim state in host() and attaches this handle to the state. The state is a partial secti...
An abstract client handle for a member of a poset.
An auto_block with a no-initialization initialization policy.
virtual sec_e2 * clone() const
Make a new handle, no state instance of current.
Definition: sec_e2.cc:617
Namespace for the fiber_bundles component of the sheaf system.
A section of a fiber bundle with a 2-dimensional Euclidean vector space fiber.
Definition: sec_e2.h:48
A handle for a poset whose members are numerical representations of sections of a fiber bundle...
Definition: sec_rep_space.h:61