SheafSystem  0.0.0.0
sec_e1_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_E1_UNIFORM_H
22 #define SEC_E1_UNIFORM_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef SEC_E1_H
29 #include "SheafSystem/sec_e1.h"
30 #endif
31 
32 namespace fiber_bundle
33 {
34 
35 //==============================================================================
36 // CLASS SEC_E1_UNIFORM
37 //==============================================================================
38 
43 class SHEAF_DLL_SPEC sec_e1_uniform : public sec_e1
44 {
45  // ===========================================================
47  // ===========================================================
49 
50 public:
51 
52  // Typedefs:
53 
57  typedef e1 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_e1_uniform();
101 
102 
103  // ===========================================================================
104  // NEW HANDLE, NEW STATE CONSTRUCTORS
105  // ===========================================================================
106 
112  dof_type xmin_x,
113  dof_type xmax_x,
114  bool xauto_access);
115 
120  section_dof_map* xdof_map = 0,
121  bool xauto_access = true);
122 
129  abstract_poset_member& xbase_mbr,
130  int xbase_version = CURRENT_HOST_VERSION,
131  bool xauto_access = true);
132 
138  sec_e1_uniform(sec_rep_space* xhost, const subposet& xbase_parts, bool xauto_sccess);
139 
140  // ===========================================================================
141  // NEW HANDLE, EXISTING STATE CONSTRUCTORS
142  // ===========================================================================
143 
148  sec_e1_uniform(const sec_rep_space* xhost, pod_index_type xindex);
149 
154  sec_e1_uniform(const sec_rep_space* xhost, const scoped_index& xindex);
155 
160  sec_e1_uniform(const sec_rep_space* xhost, const std::string& xname);
161 
166  sec_e1_uniform(const namespace_poset* xnamespace,
167  const poset_path& xpath,
168  bool xauto_access = true);
169 
173  explicit sec_e1_uniform(const sec_rep_space_member* xother);
174 
178  ~sec_e1_uniform();
179 
180  // ===========================================================================
181  // EXISTING HANDLE, NEW STATE "CONSTRUCTORS"
182  // ===========================================================================
183 
184  using sec_e1::new_jim_state;
185 
190  void new_jim_state(sec_rep_space* xhost,
191  dof_type xmin_x,
192  dof_type xmax_x,
193  bool xauto_access);
194 
195  // ===========================================================================
196  // OTHER
197  // ===========================================================================
198 
202  virtual sec_e1_uniform& operator=(const abstract_poset_member& xother);
203 
207  sec_e1_uniform& operator=(const sec_e1_uniform& xother);
208 
212  sec_e1_uniform& operator=(const e1& xfiber);
213 
217  sec_e1_uniform& operator=(const e1_lite& xfiber);
218 
222  virtual const fiber_type& fiber_prototype() const;
223 
227  void put_bounds(const block<dof_type>& xmin, const block<dof_type>& xmax, bool xauto_access);
228 
232  void put_bounds(dof_type xmin, dof_type xmax, bool xauto_access);
233 
237  void get_bounds(block<dof_type>& xmin, block<dof_type>& xmax, bool xauto_access) const;
238 
242  dof_type min_x(bool xauto_access) const;
243 
247  dof_type max_x(bool xauto_access) const;
248 
253  dof_type inc_x(bool xauto_access) const;
254 
255 protected:
256 
257 private:
258 
260 
261 
262  //============================================================================
264  //============================================================================
266 
267 public:
268 
269 protected:
270 
271 private:
272 
274 
275 
276  //============================================================================
278  //============================================================================
280 
281 public:
282 
283 protected:
284 
285 private:
286 
288 
289 
290  //============================================================================
292  //============================================================================
294 
295 public:
296 
297 protected:
298 
299 private:
300 
302 
303 
304  //============================================================================
306  //============================================================================
308 
309 public:
310 
311 protected:
312 
313 private:
314 
316 
317 
318  //============================================================================
320  //============================================================================
322 
323 public:
324 
325 protected:
326 
327 private:
328 
330 
331 
332  //============================================================================
334  //============================================================================
336 
337 public:
338 
339 protected:
340 
341 private:
342 
344 
345 
346  //============================================================================
348  //============================================================================
350 
351 public:
352 
356  static const poset_path& standard_rep_path();
357 
358 protected:
359 
360 private:
361 
363 
364 
365  //============================================================================
367  //============================================================================
369 
370 public:
371 
375  virtual const std::string& class_name() const;
376 
380  static const std::string& static_class_name();
381 
385  virtual sec_e1_uniform* clone() const;
386 
392  inline sec_e1_uniform* clone(bool xnew_state, bool xauto_access = true) const
393  {
394  return static_cast<sec_e1_uniform*>(sec_e1::clone(xnew_state, xauto_access));
395  }
396 
397 protected:
398 
399 private:
400 
402 
403 
404  //============================================================================
406  //============================================================================
408 
409 public:
410 
414  bool is_ancestor_of(const any* other) const;
415 
419  bool invariant() const;
420 
421 protected:
422 
423 private:
424 
426 
427 };
428 
429 } // namespace fiber_bundle
430 
431 #endif // ifndef SEC_E1_UNIFORM_H
432 
433 
virtual sec_e1 * clone() const
make a new handle, no state instance of current
Definition: sec_e1.cc:618
A section of a fiber bundle with a 1-dimensional Euclidean vector space fiber.
A client handle for a subposet.
Definition: subposet.h:86
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.
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.
Euclidean vector space of dimension 1 (persistent version).
Definition: e1.h:400
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
e1 fiber_type
The fiber type.
sec_e1_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...
int_type pod_index_type
The plain old data index type.
Definition: pod_types.h:49
A section of a fiber bundle with a 1-dimensional Euclidean vector space fiber.
Definition: sec_e1.h:47
sec_vd_dof_type dof_type
The type of degree of freedom.
Definition: sec_vd.h:91
Euclidean vector space of dimension 1 (volatile version).
Definition: e1.h:113
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