SheafSystem  0.0.0.0
zone_nodes_block_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 //
18 
21 
22 #ifndef ZONE_NODES_BLOCK_CRG_INTERVAL_H
23 #define ZONE_NODES_BLOCK_CRG_INTERVAL_H
24 
25 #ifndef SHEAF_DLL_SPEC_H
26 #include "SheafSystem/sheaf_dll_spec.h"
27 #endif
28 
29 #ifndef HOMOGENEOUS_BLOCK_CRG_INTERVAL_H
30 #include "SheafSystem/homogeneous_block_crg_interval.h"
31 #endif
32 
33 #ifndef BLOCK_ADJACENCY_H
34 #include "SheafSystem/block_adjacency.h"
35 #endif
36 
37 #ifndef SCATTERED_INSERTION_INDEX_SPACE_HANDLE_H
38 #include "SheafSystem/scattered_insertion_index_space_handle.h"
39 #endif
40 
41 #ifndef RAGGED_ARRAY_H
42 #include "SheafSystem/ragged_array.h"
43 #endif
44 
45 #ifndef STD_MAP_H
46 #include "SheafSystem/std_map.h"
47 #endif
48 
49 #ifndef SINGLY_LINKED_LIST_H
50 #include "SheafSystem/singly_linked_list.h"
51 #endif
52 
53 namespace fiber_bundle
54 {
55 
56 using namespace sheaf;
57 
58 class block_connectivity;
59 
67 {
68 
69  friend class fiber_bundles_namespace;
70 
71  // ===========================================================
73  // ===========================================================
75 
76 public:
77 
82 
87 
88 private:
89 
94  static const std::string& zone_prototype_name(const block_connectivity& xconn);
95 
99  static int zone_db(const block_connectivity& xconn);
100 
104  size_type _nodes_per_zone;
105 
109  pod_index_type _zone_begin;
110 
114  size_type _zone_size;
115 
119  pod_index_type _vertex_begin;
120 
124  size_type _vertex_size;
125 
129  block<pod_index_type> _connectivity;
130 
134  ragged_array<pod_index_type> _adjacency;
135 
137 
138 
139  // ===========================================================
141  // ===========================================================
143 
144 public:
145 
149  bool vertex_client_id_space_initialized() const;
150 
154  pod_index_type vertex_client_space_id() const;
155 
156 protected:
157 
161  std::string vertex_client_id_space_name();
162 
166  void initialize_vertex_client_id_space(block_adjacency& xadjacency);
167 
172 
177 
178 private:
179 
181 
182 
183  // ===========================================================
185  // ===========================================================
187 
188 public:
189 
190 protected:
191 
192 private:
193 
195 
196 
197  // ===========================================================
199  // ===========================================================
201 
202 public:
203 
204 protected:
205 
209  void initialize_zones(base_space_poset& xhost);
210 
211 private:
212 
214 
215 
216  // ===========================================================
218  // ===========================================================
220 
221 public:
222 
223 protected:
224 
228  void initialize_vertices(base_space_poset& xhost);
229 
230 private:
231 
233 
234 
235  // ===========================================================
237  // ===========================================================
239 
240 public:
241 
243 
248  virtual int db(pod_index_type xmbr_id) const;
249 
254  virtual pod_index_type d_cells_space_id(int xd) const;
255 
256 protected:
257 
261  int _zone_db;
262 
263 private:
264 
266 
267 
268  // ===========================================================
270  // ===========================================================
272 
273 public:
274 
275 protected:
276 
280  void initialize_block_vertices();
281 
282 private:
283 
285 
286 
287  // ===========================================================
289  // ===========================================================
291 
292 public:
293 
294 protected:
295 
296 private:
297 
299 
300 
301  // ===========================================================
303  // ===========================================================
305 
306 public:
307 
308 protected:
309 
310 private:
311 
313 
314 
315  // ===========================================================
317  // ===========================================================
319 
320 public:
321 
325  static void get_size(const block_connectivity& xconn, size_type& result);
326 
327 protected:
328 
329 private:
330 
332 
333 
334  // ===========================================================
336  // ===========================================================
338 
339 public:
340 
341 public:
342 
343 protected:
344 
348  virtual void initialize_lower_covers();
349 
353  virtual void initialize_upper_covers();
354 
355 private:
356 
358 
359 
360  // ===========================================================
362  // ===========================================================
364 
365 public:
366 
371  static void get_dof_tuple_ids(poset_state_handle& xhost,
372  const block_connectivity& xconn,
373  block<pod_index_type>& result);
374 
375 protected:
376 
377 private:
378 
380 
381 
382  // ===========================================================
384  // ===========================================================
386 
387 public:
388 
392  static void get_private_data(const block_connectivity& xconn,
393  block<pod_index_type>& result);
394 
395 protected:
396 
400  virtual size_type implicit_private_data_size() const;
401 
405  virtual void get_implicit_private_data(block<pod_index_type>& xdata) const;
406 
410  virtual void put_implicit_private_data(const block<pod_index_type>& xdata);
411 
412 private:
413 
415 
416 
417  // ===========================================================
419  // ===========================================================
421 
422 public:
423 
427  virtual void finalize(poset_state_handle& xhost);
428 
429 protected:
430 
431 private:
432 
434 
435 
436  // ===========================================================
438  // ===========================================================
440 
441 public:
442 
447  virtual const std::string& class_name() const;
448 
452  virtual bool is_initialized() const;
453 
454 protected:
455 
456 private:
457 
461  static bool make_prototype();
462 
464 
465 
466  // ===========================================================
468  // ===========================================================
470 
471 public:
472 
476  virtual bool is_ancestor_of(const any* other) const;
477 
482  virtual zone_nodes_block_crg_interval* clone() const;
483 
487  virtual bool invariant() const;
488 
489 protected:
490 
491 private:
492 
494 };
495 
496 // ===========================================================
497 // NON-MEMBER FUNCTIONS
498 // ===========================================================
499 
500 } // namespace fiber_bundle
501 
502 #endif // ifndef ZONE_NODES_BLOCK_CRG_INTERVAL_H
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.
Zone to node connectivity relation for a block of zones of a given type.
bool _vertex_client_id_space_initialized
True, if and only if the client id space has been initialized.
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
virtual int db(pod_index_type xmbr_id) const =0
The dimension of the member with id xmbr_id. Does not require access to dof tuple.
Node to zone adjacency relation for a block of zones of a given type.
Emulator for a interval of implicit base space members representing an unstructured block...
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.
pod_index_type _vertex_client_space_id
The index of the vertex client id space.
Namespace for the fiber_bundles component of the sheaf system.