SheafSystem  0.0.0.0
barycentric_triangle_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 BARYCENTRIC_TRIANGLE_REFINER_H
22 #define BARYCENTRIC_TRIANGLE_REFINER_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef EDGE_CENTERED_POLYGON_REFINER_H
29 #include "SheafSystem/edge_centered_polygon_refiner.h"
30 #endif
31 
32 #ifndef STD_LIST_H
33 #include "SheafSystem/std_list.h"
34 #endif
35 
36 namespace fields
37 {
38 
44 {
45 
46  // ===========================================================
48  // ===========================================================
50 
51 public:
52 
58 
63 
64 protected:
65 
70 
74  virtual size_type unrefined_vertex_ct() const;
75 
79  virtual size_type refined_zone_ct() const;
80 
84  virtual bool is_zone_centered_refiner() const;
85 
91  virtual const block<size_type>& first_vertex_index() const;
92 
93 private:
94 
101  enum static_const_int {REFINED_ZONE_CT = 6};
102  // static const size_type REFINED_ZONE_CT = 6;
104 
105 
106  // ===========================================================
108  // ===========================================================
110 
111 public:
112 
116  virtual const std::string& zone_type_name() const;
117 
122  const chart_point_coord_type* local_coordinates_map(size_type xi) const;
123 
125 
126 
127  // ===========================================================
129  // ===========================================================
131 
132 public:
133 
137  virtual barycentric_triangle_refiner* clone() const;
138 
142  virtual barycentric_triangle_refiner& operator=(const local_field_refiner& xother);
143 
148 
152  virtual ~barycentric_triangle_refiner();
153 
157  virtual bool invariant() const;
158 
162  virtual bool is_ancestor_of(const any* xother) const;
163 
165 
166 };
167 
168 } // namespace fields
169 
170 #endif // ifndef BARYCENTRIC_TRIANGLE_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
Namespace for fields component of sheaf system.
An abstract field refiner that subdivides a polygon by introducing new vertices into the centers of t...
Abstract base class with useful features for all objects.
Definition: any.h:39
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.
An abstract refiner for a field over a local region (primitive cell) in the base space.
A field refiner that subdivides a triangle into 6 triangles by introducing a new vertex in the center...