SheafSystem  0.0.0.0
zone_centered_tet_refiner.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 ZONE_CENTERED_TET_REFINER_H
22 #define ZONE_CENTERED_TET_REFINER_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef LOCAL_FIELD_REFINER_H
29 #include "SheafSystem/local_field_refiner.h"
30 #endif
31 
32 namespace fields
33 {
34 
39 class SHEAF_DLL_SPEC zone_centered_tet_refiner : public local_field_refiner
40 {
41 
42  // ===========================================================
44  // ===========================================================
46 
47 public:
48 
54 
59 
60 protected:
61 
66 
71 
76 
80  virtual void refine_base_space(field_refinement_buffer& xbuffer);
81 
85  void modify_crg(field_refinement_buffer& xbuffer);
86 
90  void modify_subposets(field_refinement_buffer& xbuffer);
91 
95  virtual void refine_coordinates(field_refinement_buffer& xbuffer);
96 
97 private:
98 
105  enum static_const_int {REFINED_ZONE_CT = 4};
106  // static const size_type REFINED_ZONE_CT = 4;
107 
111  static const block<size_type>& connectivity();
112 
114 
115 
116  // ===========================================================
118  // ===========================================================
120 
121 public:
122 
127  virtual int db() const;
128 
132  virtual const std::string& zone_type_name() const;
133 
137  virtual size_type refined_zone_ct() const;
138 
143  const chart_point_coord_type* local_coordinates_map(size_type xi) const;
144 
146 
147 
148  // ===========================================================
150  // ===========================================================
152 
153 public:
154 
158  virtual zone_centered_tet_refiner* clone() const;
159 
163  virtual zone_centered_tet_refiner& operator=(const local_field_refiner& xother);
164 
168  zone_centered_tet_refiner& operator=(const zone_centered_tet_refiner& xother);
169 
173  virtual ~zone_centered_tet_refiner();
174 
178  virtual bool invariant() const;
179 
183  virtual bool is_ancestor_of(const any* xother) const;
184 
186 
187 };
188 
189 } // namespace fields
190 
191 #endif // ifndef ZONE_CENTERED_TET_REFINER_H
double chart_point_coord_type
The type of local coordinate in the base space; the scalar type for the local coordinate vector space...
Definition: fiber_bundle.h:57
A buffer for data which is used by both a local_field_refiner object and its associated field_refinem...
Namespace for fields component of sheaf system.
block< scoped_index > _vertex_ids
The ids of the original vertices.
Abstract base class with useful features for all objects.
Definition: any.h:39
An index within the external ("client") scope of a given id space.
Definition: scoped_index.h:116
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.
scoped_index _zone_ctr_id
The index of the point added by the current base space refinement.
An abstract refiner for a field over a local region (primitive cell) in the base space.
A field refiner that subdivides a tet into 4 tets by introducing a new vertex in the center...