SheafSystem  0.0.0.0
structured_block_2d_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_2D_CRG_INTERVAL_H
22 #define STRUCTURED_BLOCK_2D_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 fiber_bundle
33 {
34 
35 using namespace sheaf;
36 
44 {
45 
46  friend class fiber_bundles_namespace;
47 
48  // ===========================================================
50  // ===========================================================
52 
53 public:
54 
59 
64 
68  size_type i_size() const;
69 
73  size_type j_size() const;
74 
75 protected:
76 
77 private:
78 
82  size_type _i_size;
83 
87  size_type _j_size;
88 
92  size_type _i_vertex_size;
93 
97  size_type _j_vertex_size;
98 
102  pod_index_type _zone_begin;
103 
107  size_type _zone_size;
108 
112  pod_index_type _vertex_begin;
113 
117  size_type _vertex_size;
118 
120 
121 
122  // ===========================================================
124  // ===========================================================
126 
127 public:
128 
129 protected:
130 
131 private:
132 
134 
135 
136  // ===========================================================
138  // ===========================================================
140 
141 public:
142 
143 protected:
144 
148  void initialize_zones(base_space_poset& xhost);
149 
150 private:
151 
153 
154 
155  // ===========================================================
157  // ===========================================================
159 
160 public:
161 
162 protected:
163 
167  void initialize_vertices(base_space_poset& xhost);
168 
169 private:
170 
172 
173 
174  // ===========================================================
176  // ===========================================================
178 
179 public:
180 
182 
187  virtual int db(pod_index_type xmbr_id) const;
188 
193  virtual pod_index_type d_cells_space_id(int xd) const;
194 
195 protected:
196 
197 private:
198 
200 
201 
202  // ===========================================================
204  // ===========================================================
206 
207 public:
208 
209 protected:
210 
214  void initialize_block_vertices();
215 
216 private:
217 
219 
220 
221  // ===========================================================
223  // ===========================================================
225 
226 public:
227 
228 protected:
229 
230 private:
231 
233 
234 
235  // ===========================================================
237  // ===========================================================
239 
240 public:
241 
242 protected:
243 
244 private:
245 
247 
248 
249  // ===========================================================
251  // ===========================================================
253 
254 public:
255 
259  static void get_size(size_type xi_size, size_type xj_size, size_type& result);
260 
261 protected:
262 
263 private:
264 
266 
267 
268  // ===========================================================
270  // ===========================================================
272 
273 public:
274 
275 protected:
276 
280  virtual void initialize_lower_covers();
281 
285  virtual void initialize_upper_covers();
286 
287 private:
288 
290 
291 
292  // ===========================================================
294  // ===========================================================
296 
297 public:
298 
303  static void get_dof_tuple_ids(poset_state_handle& xhost,
304  size_type xi_size,
305  size_type xj_size,
306  block<pod_index_type>& result);
307 
308 protected:
309 
310 private:
311 
313 
314 
315  // ===========================================================
317  // ===========================================================
319 
320 public:
321 
325  static void get_private_data(size_type xi_size,
326  size_type xj_size,
327  block<pod_index_type>& result);
328 
329 protected:
330 
334  virtual size_type implicit_private_data_size() const;
335 
339  virtual void get_implicit_private_data(block<pod_index_type>& xdata) const;
340 
344  virtual void put_implicit_private_data(const block<pod_index_type>& xdata);
345 
346 private:
347 
349 
350 
351  // ===========================================================
353  // ===========================================================
355 
356 public:
357 
361  virtual void finalize(poset_state_handle& xhost);
362 
363 protected:
364 
365 private:
366 
368 
369 
370  // ===========================================================
372  // ===========================================================
374 
375 public:
376 
381  virtual const std::string& class_name() const;
382 
383 protected:
384 
385 private:
386 
390  static bool make_prototype();
391 
393 
394 
395  // ===========================================================
397  // ===========================================================
399 
400 public:
401 
405  virtual bool is_ancestor_of(const any* other) const;
406 
411  virtual structured_block_2d_crg_interval* clone() const;
412 
416  virtual bool invariant() const;
417 
418 protected:
419 
420 private:
421 
423 };
424 
425 // ===========================================================
426 // NON-MEMBER FUNCTIONS
427 // ===========================================================
428 
429 } // namespace fiber_bundle
430 
431 #endif // ifndef STRUCTURED_BLOCK_2D_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.
Emulator for a interval of implicit base space members representing a 2 dimensional structured block...
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.
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.
Namespace for the fiber_bundles component of the sheaf system.