FiberVISH 0.2
Fish - The Fiber Bundle API for the Vish Visualization Shell
Chart.hpp
1#ifndef __FIBER_GRID_CHART_HPP
2#define __FIBER_GRID_CHART_HPP "Created 27.02.2001 21:42:27 by werner"
3
4#include "GridAPI.h"
5#include <fiber/field/BaseSpace.hpp>
6#include "Transformation.hpp"
7#include "ChartID.hpp"
8
9namespace Fiber
10{
11 using MemCore::WeakPtr;
12 using MemCore::NullPtr;
13 using std::set;
14 using std::list;
15
16 class GRID_API Chart;
17
38 class GRID_API ChartCreatorBase;
39
43
45{
46public:
47 enum type
48 {
49 SCALAR,
50 POSITIONS,
51 TENSOR,
52 CHRISTOFFELS,
53 PSEUDOSCALAR
54 };
55 int upper, lower;
56};
57
58
59class GRID_API ChartCreatorBase : public ReferenceBase<ChartCreatorBase>
60{
61public: const int dims;
62 const char*domain_name;
63 const char**component_names;
64
65 ChartCreatorBase(int dims,
66 const char*domain_name,
67 const char**component_names,
68 const type_info&);
69
71
72 virtual ChartRefPtr create(const RefPtr<ChartID>&mID) = 0;
73 virtual const type_info&getChartType() const = 0;
74};
75
76
90class GRID_API Chart : public BaseSpace
91{
97 //map<ChartPtr, RefPtr<Transformation> > Transformations;
98
100 RefPtr<ChartID> myID;
101
103
104public:
105
108 : myID( mID )
109 , myCreator( MyCreator )
110 {}
111
113 ~Chart();
114
115 const RefPtr<ChartID>&ID() const throw()
116 {
117 return myID;
118 }
119
120 const RefPtr<ChartID>&getId() const throw()
121 {
122 return ID();
123 }
124
128 string Name() const override
129 {
130 if (myID)
131 return myID->Name();
132
133 return string();
134 }
135
139 string getName() const
140 {
141 return Name();
142 }
143
145 int dims() const
146 {
147 if (!myCreator) return 0;
148 return myCreator->dims;
149 }
150
152 int Dims() const override
153 {
154 return dims();
155 }
156
158 const char*component_name(int i) const
159 {
160 if (i<0) return 0;
161 if (i>=dims() ) return 0;
162 if (!myCreator) return 0;
163
164 return myCreator->component_names[i];
165 }
166
168 const char*domain_name() const
169 {
170 if (!myCreator) return 0;
171 return myCreator->domain_name;
172 }
173
174
175 RefPtr<Chart> create(const RefPtr<ChartID>&mID)
176 {
177 if (!myCreator) return NullPtr();
178 return myCreator->create( mID );
179 }
180
181 const type_info&getChartType() const
182 {
183 if (!myCreator) return typeid(void);
184 return myCreator->getChartType();
185 }
186
187static RefPtr<Chart> create(const type_info&chart_type, const RefPtr<ChartID>&mID);
188
189 virtual RefPtr<Field> makeField(const type_info&base_type, const Tensortype&t) = 0;
190
191
192 string xml() const override
193 {
194 string retval;
195 retval += " <CHART>\n";
196 retval += " <NAME>" + Name() + "</NAME>\n";
197
198 if (domain_name() )
199 {
200 retval += " <DOMAIN>";
201 retval += domain_name();
202 retval += "</DOMAIN>\n";
203 }
204
205 int d = Dims();
206 for(int i = 0; i<d; i++)
207 {
208 retval += " <COMPONENT>";
209 retval += component_name(i);
210 retval += "</COMPONENT>\n";
211 }
212
213 retval += " </CHART>\n";
214 return retval;
215 }
216
217};
218
219
220
221template <class ChartType>
223{
224public:
226 const char*theDomain_name,
227 const char**theComponent_names)
229 {}
230
231 RefPtr<Chart> create(const RefPtr<ChartID>&ID) override
232 {
233 return new ChartType( self(), ID );
234 }
235
236 const type_info&getChartType() const override
237 {
238 return typeid(ChartType);
239 }
240};
241
242
243} /* namespace Fiber */
244
245#endif /* __FIBER_GRID_CHART_HPP */
basic_string< char > string
Base class for spaces that may be used for mapping domains to fiber spaces.
Definition BaseSpace.hpp:38
Definition Chart.hpp:60
Definition Chart.hpp:223
A generic Chart object that may be used to cast information of points within a manifold to numerical ...
Definition Chart.hpp:91
const char * component_name(int i) const
Name of the ith component.
Definition Chart.hpp:158
string getName() const
Name of this chart.
Definition Chart.hpp:139
string Name() const override
Name of this chart.
Definition Chart.hpp:128
const char * domain_name() const
Name of the associated common domain name.
Definition Chart.hpp:168
Chart(const WeakPtr< ChartCreatorBase > &MyCreator, const RefPtr< ChartID > &mID)
Constructor.
Definition Chart.hpp:107
int Dims() const override
Dimensions.
Definition Chart.hpp:152
int dims() const
Dimensions.
Definition Chart.hpp:145
An iterator with an optional DataCreator, which is just a class to intercept creation of data along a...
Definition CreativeIterator.hpp:34
Definition Chart.hpp:45
Given a fragmented field of curvilinear coordinates, (3D array of coordinates), build a uniform Grid ...
Definition FAQ.dox:2
WeakPtr< Chart, BaseSpace::reference_domain_t > ChartPtr
A weak pointer to a chart.
Definition Chart.hpp:41
std::nullptr_t NullPtr