SheafSystem  0.0.0.0
hex_connectivity.h
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 // Interface for class hex_connectivity
19 
20 #ifndef HEX_CONNECTIVITY_H
21 #define HEX_CONNECTIVITY_H
22 
23 #ifndef SHEAF_DLL_SPEC_H
24 #include "SheafSystem/sheaf_dll_spec.h"
25 #endif
26 
27 #ifndef BLOCK_CONNECTIVITY_H
28 #include "SheafSystem/block_connectivity.h"
29 #endif
30 
31 namespace fiber_bundle
32 {
33 
34  using namespace sheaf;
35 
39 class SHEAF_DLL_SPEC hex_connectivity : public block_connectivity
40 {
41 
42 public:
43 
44  // ===========================================================
46  // ===========================================================
48 
49 public:
55 
59  hex_connectivity(const hex_connectivity& xother);
60 
68  hex_connectivity(const pod_index_type* xnode_ids,
69  size_type xnode_id_ct,
70  size_type xnode_ct);
71 
80  size_type xj_size,
81  size_type xk_size,
82  pod_index_type xstart_id = 0);
86  virtual ~hex_connectivity();
87 
93  enum static_const_int {NODES_PER_ELEMENT = 8};
94 
95 protected:
99  void create_connectivity(size_type xi_size,
100  size_type xj_size,
101  size_type xk_size,
102  pod_index_type xstart_id = 0);
103 
108 
113 
118 
122  size_type node_id(size_type xi, size_type xj, size_type xk) const;
123 
124 private:
125 
127 
128 // ===========================================================
130  // ===========================================================
132 
133 public:
134 
135 protected:
136 
137 private:
138 
140 
141  // ===========================================================
143  // ===========================================================
145 
146 public:
147 
151  virtual cell_type element_type() const;
152 
153 protected:
154 
155 private:
156 
158 
159 // ===========================================================
161  // ===========================================================
163 
164 public:
169  virtual hex_connectivity* clone() const;
170 
174  virtual bool invariant() const;
175 
179  virtual bool is_ancestor_of(const any* other) const;
180 
181 protected:
182 
183 private:
184 
186 
187 };
188 
189 } //namespace fiber_bundle
190 
191 #endif // ifndef HEX_CONNECTIVITY_H
size_type _k_vertex_size
The number of vertices in the k-direction.
Zone to node connectivity relation for a block of zones of a given type.
size_type _j_vertex_size
The number of vertices in the j-direction.
Abstract base class with useful features for all objects.
Definition: any.h:39
size_type _i_vertex_size
The number of vertices in the i-direction.
unsigned long size_type
An unsigned integral type used to represent sizes and capacities.
Definition: sheaf.h:52
Nodal connectivity for a block containing zones of type hex.
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.
static_const_int
Static const integral data members.