SheafSystem  0.0.0.0
field_refiner_family.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 FIELD_REFINER_FAMILY_H
22 #define FIELD_REFINER_FAMILY_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef ANY_H
29 #include "SheafSystem/any.h"
30 #endif
31 
32 #ifndef BLOCK_H
33 #include "SheafSystem/block.h"
34 #endif
35 
36 #ifndef STD_STRING_H
37 #include "SheafSystem/std_string.h"
38 #endif
39 
40 namespace sheaf
41 {
42 template <class T>
43 class factory;
44 class index_space_handle;
45 class namespace_poset;
46 }
47 
48 namespace fiber_bundle
49 {
50 class base_space_poset;
51 }
52 
53 namespace fields
54 {
55 
56 using namespace sheaf;
57 using namespace fiber_bundle;
58 
59 class field_refinement_policy;
60 class local_field_refiner;
61 class field_refiner_family_factory;
62 
63 
69 class SHEAF_DLL_SPEC field_refiner_family : public any
70 {
71 
72  // ===========================================================
74  // ===========================================================
76 
77 public:
78 
83  static field_refiner_family* new_family(const std::string& xname);
84 
90 
94  virtual ~field_refiner_family();
95 
99  virtual const std::string& class_name() const = 0;
100 
105  local_field_refiner* member(pod_index_type xtype_id) const;
106 
110  size_type size() const;
111 
115  field_refinement_policy& policy() const;
116 
120  static factory<field_refiner_family>& family_factory();
121 
126  virtual void initialize(const base_space_poset& xbase_space,
127  const field_refinement_policy& xpolicy) = 0;
128 
132  bool is_initialized() const;
133 
134 protected:
135 
140 
145 
150 
155 
160 
162 
163 
164  // ===========================================================
166  // ===========================================================
168 
169 public:
170 
176  virtual field_refiner_family* clone() const;
177 
181  virtual bool invariant() const;
182 
186  virtual bool is_ancestor_of(const any* xother) const;
187 
189 
190 };
191 
192 // ===========================================================
193 // NON-MEMBER FUNCTIONS
194 // ===========================================================
195 
196 } // namespace fields
197 
198 #endif // ifndef FIELD_REFINER_FAMILY_H
199 
200 
201 
202 
203 
204 
A family of compatible local_field_refiners, one for each member of some family of cell types; a map ...
Namespace for fields component of sheaf system.
An abstract handle to a space of alternate integer identifiers (aliases) for a subset of a hub set of...
Abstract base class with useful features for all objects.
Definition: any.h:39
index_space_handle * _cell_type_id_space
The id space for base space cell type ids.
The lattice of closed cells of a cellular space; a lattice representation of a computational mesh...
A factory for instanting descendants of an abstract type T, given the class name of the descendant...
Definition: eval_family.h:49
unsigned long size_type
An unsigned integral type used to represent sizes and capacities.
Definition: sheaf.h:52
An abstract policy that determines the conditions under which a zone should be refined.
block< local_field_refiner * > _members
The members of the family.
bool _is_initialized
True if this has been populated with members.
An abstract refiner for a field over a local region (primitive cell) in the base space.
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.
An auto_block with a no-initialization initialization policy.
Namespace for the fiber_bundles component of the sheaf system.
field_refinement_policy * _policy
The refinement policy for this family.