SheafSystem  0.0.0.0
base_space_factory.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 base_space_factory
19 
20 #ifndef BASE_SPACE_FACTORY_H
21 #define BASE_SPACE_FACTORY_H
22 
23 #ifndef SHEAF_DLL_SPEC_H
24 #include "SheafSystem/sheaf_dll_spec.h"
25 #endif
26 
27 #ifndef POSET_PATH_H
28 #include "SheafSystem/poset_path.h"
29 #endif
30 
31 #ifndef STD_STRING_H
32 #include "SheafSystem/std_string.h"
33 #endif
34 
35 #ifndef WSV_BLOCK_H
36 #include "SheafSystem/wsv_block.h"
37 #endif
38 
39 namespace fiber_bundle
40 {
41 
42 class base_space_poset;
43 class fiber_bundles_namespace;
44 
45  using namespace sheaf;
46 
50 template <typename base_type>
52 {
53 
54 public:
55 
56  // =============================================================================
57  // BASE_SPACE_FACTORY FACET
58  // =============================================================================
59 
64 
68  virtual ~base_space_factory();
69 
75 
80  base_type* new_base(fiber_bundles_namespace& xns, const poset_path& xbase_path);
81 
86  base_type* new_base(fiber_bundles_namespace& xns, const std::string& xbase_name);
87 
92 
97 
102 
107 
108 private:
109 
110 };
111 
112 // =============================================================================
113 // MEMBER FUNCTION SPECIALIZATIONS
114 // =============================================================================
115 
116 class structured_block_1d;
117 template <>
118 SHEAF_DLL_SPEC
121 new_base(fiber_bundles_namespace& xns, const std::string& xbase_name);
122 
123 class structured_block_2d;
124 template <>
125 SHEAF_DLL_SPEC
128 new_base(fiber_bundles_namespace& xns, const std::string& xbase_name);
129 
130 class structured_block_3d;
131 template <>
132 SHEAF_DLL_SPEC
135 new_base(fiber_bundles_namespace& xns, const std::string& xbase_name);
136 
137 class point_block_1d;
138 template <>
139 SHEAF_DLL_SPEC
142 new_base(fiber_bundles_namespace& xns, const std::string& xbase_name);
143 
144 class point_block_2d;
145 template <>
146 SHEAF_DLL_SPEC
149 new_base(fiber_bundles_namespace& xns, const std::string& xbase_name);
150 
151 class point_block_3d;
152 template <>
153 SHEAF_DLL_SPEC
156 new_base(fiber_bundles_namespace& xns, const std::string& xbase_name);
157 
158 class zone_nodes_block;
159 template <>
160 SHEAF_DLL_SPEC
164 
165 template <>
166 SHEAF_DLL_SPEC
169 new_base(fiber_bundles_namespace& xns, const std::string& xbase_name);
170 
171 class unstructured_block;
172 template <>
173 SHEAF_DLL_SPEC
177 
178 template <>
179 SHEAF_DLL_SPEC
182 new_base(fiber_bundles_namespace& xns, const std::string& xbase_name);
183 
184 
185 // =============================================================================
186 // NON-MEMBER FUNCTIONS
187 // =============================================================================
188 
189 } // namespace fiber_bundle
190 
191 
192 #endif // ifndef BASE_SPACE_FACTORY_H
A homogeneous collection of connected quads arranged in an i_size() x j_size() array.
The standard fiber bundles name space; extends the standard sheaves namespace by defining base space...
A factory for making base space objects of type base_type.
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 homogeneous collection of zones with nodal connectivity.
base_space_poset * new_space(fiber_bundles_namespace &xns)
Finds or creates the base space poset specified by path in namespace xns.
OBSOLETE: use zone_nodes_block or point_block_*d. A client handle for a base space member which repre...
A homogeneous collection of connected segments arranged in an i_size() array.
The lattice of closed cells of a cellular space; a lattice representation of a computational mesh...
A homogeneous collection of i_size() * j_size() disconnected points similar to a structured_block_2d...
poset_path path
The base space host path.
A homogeneous collection of connected hexahedra arranged in an i_size() x j_size() x k_size() array...
poset_path schema_path
The base space schema path.
poset_path local_cell_prototype_path
The path of the local cell prototype for unstructured meshes.
Namespace for the sheaves component of the sheaf system.
wsv_block< int > index_ubs
The base space index bounds.
A homogeneous collection of i_size() disconnected points; similar to a structured_block_1d, but without the segments.
Namespace for the fiber_bundles component of the sheaf system.
A homogeneous collection of i_size()*j_size()*k_size() disconnected points similar to a structured_bl...
base_type * new_base(fiber_bundles_namespace &xns, const poset_path &xbase_path)
Finds or creates the base space specified by xbase_path in namespace xns.