SheafSystem  0.0.0.0
sec_e3_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_E3_UNIFORM_H
22 #define SEC_E3_UNIFORM_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef SEC_E3_H
29 #include "SheafSystem/sec_e3.h"
30 #endif
31 
32 namespace fiber_bundle
33 {
34 
35 //==============================================================================
36 // CLASS SEC_E3_UNIFORM
37 //==============================================================================
38 
43 class SHEAF_DLL_SPEC sec_e3_uniform : public sec_e3
44 {
45  // ===========================================================
47  // ===========================================================
49 
50 public:
51 
52  // Typedefs:
53 
57  typedef e3 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_e3_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_e3_uniform(sec_rep_space* xhost, const subposet& xbase_parts, bool xauto_sccess);
138 
139  // ===========================================================================
140  // NEW HANDLE, EXISTING STATE CONSTRUCTORS
141  // ===========================================================================
142 
147  sec_e3_uniform(const sec_rep_space* xhost, pod_index_type xindex);
148 
153  sec_e3_uniform(const sec_rep_space* xhost, const scoped_index& xindex);
154 
159  sec_e3_uniform(const sec_rep_space* xhost, const std::string& xname);
160 
165  sec_e3_uniform(const namespace_poset* xnamespace,
166  const poset_path& xpath,
167  bool xauto_access = true);
168 
172  explicit sec_e3_uniform(const sec_rep_space_member* xother);
173 
177  ~sec_e3_uniform();
178 
179  // ===========================================================================
180  // EXISTING HANDLE, NEW STATE "CONSTRUCTORS"
181  // ===========================================================================
182 
183  using sec_e3::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_e3_uniform& operator=(const abstract_poset_member& xother);
202 
206  sec_e3_uniform& operator=(const sec_e3_uniform& xother);
207 
211  sec_e3_uniform& operator=(const e3& xfiber);
212 
216  sec_e3_uniform& operator=(const e3_lite& xfiber);
217 
221  virtual const fiber_type& fiber_prototype() const;
222 
226  void put_bounds(const block<dof_type>& xmin,
227  const block<dof_type>& xmax,
228  bool xauto_access);
229 
233  void get_bounds(block<dof_type>& xmin,
234  block<dof_type>& xmax,
235  bool xauto_access) const;
236 
240  dof_type min_x(bool xauto_access) const;
241 
245  dof_type min_y(bool xauto_access) const;
246 
250  dof_type min_z(bool xauto_access) const;
251 
255  dof_type max_x(bool xauto_access) const;
256 
260  dof_type max_y(bool xauto_access) const;
261 
265  dof_type max_z(bool xauto_access) const;
266 
271  dof_type inc_x(bool xauto_access) const;
272 
277  dof_type inc_y(bool xauto_access) const;
278 
283  dof_type inc_z(bool xauto_access) const;
284 
285 protected:
286 
287 private:
288 
290 
291 
292  //============================================================================
294  //============================================================================
296 
297 public:
298 
299 protected:
300 
301 private:
302 
304 
305 
306  //============================================================================
308  //============================================================================
310 
311 public:
312 
313 protected:
314 
315 private:
316 
318 
319 
320  //============================================================================
322  //============================================================================
324 
325 public:
326 
327 protected:
328 
329 private:
330 
332 
333 
334  //============================================================================
336  //============================================================================
338 
339 public:
340 
341 protected:
342 
343 private:
344 
346 
347 
348  //============================================================================
350  //============================================================================
352 
353 public:
354 
355 protected:
356 
357 private:
358 
360 
361 
362  //============================================================================
364  //============================================================================
366 
367 public:
368 
369 protected:
370 
371 private:
372 
374 
375 
376  //============================================================================
378  //============================================================================
380 
381 public:
382 
386  static const poset_path& standard_rep_path();
387 
388 protected:
389 
390 private:
391 
393 
394 
395  //============================================================================
397  //============================================================================
399 
400 public:
401 
402 
406  virtual const std::string& class_name() const;
407 
411  static const std::string& static_class_name();
412 
416  virtual sec_e3_uniform* clone() const;
417 
423  inline sec_e3_uniform* clone(bool xnew_state, bool xauto_access = true) const
424  {
425  return static_cast<sec_e3_uniform*>(sec_e3::clone(xnew_state, xauto_access));
426  }
427 
428 protected:
429 
430 private:
431 
433 
434 
435  //============================================================================
437  //============================================================================
439 
440 public:
441 
445  bool is_ancestor_of(const any* other) const;
446 
450  bool invariant() const;
451 
452 protected:
453 
454 private:
455 
457 
458 };
459 
460 } // namespace fiber_bundle
461 
462 #endif // ifndef SEC_E3_UNIFORM_H
463 
464 
A client handle for a subposet.
Definition: subposet.h:86
Euclidean vector space of dimension 3 (volatile version).
Definition: e3.h:116
The abstract map from section dof ids to section dof values of heterogeneous type.
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.
A section of a fiber bundle with a 3-dimensional Euclidean vector space fiber.
The standard fiber bundles name space; extends the standard sheaves namespace by defining base space...
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.
e3 fiber_type
The fiber type.
Euclidean vector space of dimension 3 (persistent version).
Definition: e3.h:467
virtual sec_e3 * clone() const
Make a new handle, no state instance of current.
Definition: sec_e3.cc:617
sec_e3_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...
Abstract base class with useful features for all objects.
Definition: any.h:39
An index within the external ("client") scope of a given id space.
Definition: scoped_index.h:116
A section of a fiber bundle with a 3-dimensional Euclidean vector space fiber.
Definition: sec_e3.h:47
int_type pod_index_type
The plain old data index type.
Definition: pod_types.h:49
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.
Namespace for the fiber_bundles component of the sheaf system.
A handle for a poset whose members are numerical representations of sections of a fiber bundle...
Definition: sec_rep_space.h:61