SheafSystem  0.0.0.0
structured_block_3d_crg_interval.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 STRUCTURED_BLOCK_3D_CRG_INTERVAL_H
22 #define STRUCTURED_BLOCK_3D_CRG_INTERVAL_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef HOMOGENEOUS_BLOCK_CRG_INTERVAL_H
29 #include "SheafSystem/homogeneous_block_crg_interval.h"
30 #endif
31 
32 namespace sheaf
33 {
34 class ijk_product_structure;
35 }
36 
37 namespace fiber_bundle
38 {
39 
40 using namespace sheaf;
41 
49 {
50 
51  friend class fiber_bundles_namespace;
52 
53  // ===========================================================
55  // ===========================================================
57 
58 public:
59 
64 
69 
73  size_type i_size() const;
74 
78  size_type j_size() const;
79 
83  size_type k_size() const;
84 
85 protected:
86 
90  pod_index_type vertex_id(pod_index_type xi,
91  pod_index_type xj,
92  pod_index_type xk) const;
93 
94 private:
95 
99  size_type _i_size;
100 
104  size_type _j_size;
105 
109  size_type _k_size;
110 
114  size_type _jk_size;
115 
119  size_type _i_vertex_size;
120 
124  size_type _j_vertex_size;
125 
129  size_type _k_vertex_size;
130 
134  size_type _jk_vertex_size;
135 
139  pod_index_type _zone_begin;
140 
144  size_type _zone_size;
145 
149  pod_index_type _vertex_begin;
150 
154  size_type _vertex_size;
155 
157 
158 
159  // ===========================================================
161  // ===========================================================
163 
164 public:
165 
166 protected:
167 
168 private:
169 
171 
172 
173  // ===========================================================
175  // ===========================================================
177 
178 public:
179 
183  const ijk_product_structure& zones_product_structure() const;
184 
185 protected:
186 
190  void initialize_zones(base_space_poset& xhost);
191 
192 private:
193 
195 
196 
197  // ===========================================================
199  // ===========================================================
201 
202 public:
203 
207  const ijk_product_structure& vertices_product_structure() const;
208 
209 protected:
210 
214  void initialize_vertices(base_space_poset& xhost);
215 
216 private:
217 
219 
220 
221  // ===========================================================
223  // ===========================================================
225 
226 public:
227 
228  using base_space_crg_interval::db;
229 
234  virtual int db(pod_index_type xmbr_id) const;
235 
240  virtual pod_index_type d_cells_space_id(int xd) const;
241 
242 protected:
243 
244 private:
245 
247 
248 
249  // ===========================================================
251  // ===========================================================
253 
254 public:
255 
256 protected:
257 
261  void initialize_block_vertices();
262 
263 private:
264 
266 
267 
268  // ===========================================================
270  // ===========================================================
272 
273 public:
274 
275 protected:
276 
277 private:
278 
280 
281 
282  // ===========================================================
284  // ===========================================================
286 
287 public:
288 
289 protected:
290 
291 private:
292 
294 
295 
296  // ===========================================================
298  // ===========================================================
300 
301 public:
302 
306  static void get_size(size_type xi_size,
307  size_type xj_size,
308  size_type xk_size,
309  size_type& result);
310 
311 protected:
312 
313 private:
314 
316 
317 
318  // ===========================================================
320  // ===========================================================
322 
323 public:
324 
325 protected:
326 
330  virtual void initialize_lower_covers();
331 
335  virtual void initialize_upper_covers();
336 
337 private:
338 
340 
341 
342  // ===========================================================
344  // ===========================================================
346 
347 public:
348 
353  static void get_dof_tuple_ids(poset_state_handle& xhost,
354  size_type xi_size,
355  size_type xj_size,
356  size_type xk_size,
357  block<pod_index_type>& result);
358 
359 protected:
360 
361 private:
362 
364 
365 
366  // ===========================================================
368  // ===========================================================
370 
371 public:
372 
376  static void get_private_data(size_type xi_size,
377  size_type xj_size,
378  size_type xk_size,
379  block<pod_index_type>& result);
380 
381 protected:
382 
386  virtual size_type implicit_private_data_size() const;
387 
391  virtual void get_implicit_private_data(block<pod_index_type>& xdata) const;
392 
396  virtual void put_implicit_private_data(const block<pod_index_type>& xdata);
397 
398 private:
399 
401 
402 
403  // ===========================================================
405  // ===========================================================
407 
408 public:
409 
413  virtual void finalize(poset_state_handle& xhost);
414 
415 protected:
416 
417 private:
418 
420 
421 
422  // ===========================================================
424  // ===========================================================
426 
427 public:
428 
433  virtual const std::string& class_name() const;
434 
435 protected:
436 
437 private:
438 
442  static bool make_prototype();
443 
445 
446 
447  // ===========================================================
449  // ===========================================================
451 
452 public:
453 
457  virtual bool is_ancestor_of(const any* other) const;
458 
463  virtual structured_block_3d_crg_interval* clone() const;
464 
468  virtual bool invariant() const;
469 
470 protected:
471 
472 private:
473 
475 };
476 
477 // ===========================================================
478 // NON-MEMBER FUNCTIONS
479 // ===========================================================
480 
481 } // namespace fiber_bundle
482 
483 #endif // ifndef STRUCTURED_BLOCK_3D_CRG_INTERVAL_H
A 3D implementation of abstract_product_structure.
The standard fiber bundles name space; extends the standard sheaves namespace by defining base space...
A client handle for a general, abstract partially order set.
Abstract base class with useful features for all objects.
Definition: any.h:39
The lattice of closed cells of a cellular space; a lattice representation of a computational mesh...
Emulator for a interval of implicit base space members representing a homogeneous collection of cells...
unsigned long size_type
An unsigned integral type used to represent sizes and capacities.
Definition: sheaf.h:52
int_type pod_index_type
The plain old data index type.
Definition: pod_types.h:49
Namespace for the sheaves component of the sheaf system.
Emulator for a interval of implicit base space members representing a 3 dimensional structured block...
Namespace for the fiber_bundles component of the sheaf system.